Docker Compose安装和部署容器
1.Deepin安装docker-compose
在Deepin中,可以直接使用apt命令进行安装
(1) 使用apt进行安装
1 | ## 命令行安装,这样安装的版本可能比较低 |
(2) 使用源码安装
使用源码安装,但是我安装之后,还是提示没有这个命令:“/usr/local/bin/docker-compose: 1: /usr/local/bin/docker-compose: Not: not found”
1 | ## 下载 |
(3) pip3安装
使用这个方法可以安装最新的版本,这个好
1 | ## 安装pip3 |
1.解决docker-compose: command not found问题的两种常用方法 两种方法安装了docker-compose,一种是命令行,一种是使用的源码安装。
2.ubuntu安装docker-compose后运行提示No such file or directory
3.Docker-compose: /usr/local/bin/docker-compose : line 1: Not: command not found 这里提到了使用pip3进行docker-compose安装
2.docker compose服务启动顺序
在使用docker-compose的 depends_on 的时候,虽然解决了依赖的问题,但是服务启动顺序的问题,并没有解决,比如mysql启动之后,5s钟才能启动nacos,否则就会找不到数据库。官方提供了 wait-for-it.sh 脚本,检查某一个端口是否启动,启动之后在进行接下去的部署。
经过一段时间的摸索,主要有这么几种方式:
1.使用心跳检查
2.使用docker-compose-wait等工具
3.使用自定义脚本
1.docker compose服务启动顺序 docker-compose 中的 depends_on 配置是容器的启动顺序, 并不是容器中服务的启动顺序。这里讲了两种方法解决服务启动顺序的问题,一种是在docker-compose.yml中写脚本,一种是单独的脚本,提供了entrypoint.sh脚本,可以等待某一个服务真正的启动之后,再启动,我尝试了这里的脚本,但是失败了,只能放弃了。
2.Docker-compose编排微服务顺序启动 针对这个问题,docker-compose官方给的建议是,通过wait-for-it.sh脚本来控制。
3.docker-compose解决容器依赖问题 wait-for-it
4.Docker Compose等待依赖项 1.使用 dockerize 工具;2.使用 docker-compose-wait 工具;
5.心跳检测、心跳检测模板:service_healthy 这里有一个心跳检查,在 depends_on 中设置了条件,在被依赖的镜像中设置了 healthcheck
6.linux下使用命令来查看某一端口是否开放 netstat -ntpl (TCP类型的端口) 端口是否开启
7.HEALTHCHECK 健康检查 这里是关于 healthcheck 的配置
问题
(1) failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error
这个主要是docker环境异常的问题,使用 docker info 查看docker信息,发现 runc version: N/A ,正常的话,应该会有 runc version: 1.0.0~rc6+dfsg1-3 版本信息。
【解决】
1 | ## 下载安全版本的runc到本地电脑 |
1.【错误解决】docker找不到runc:failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime 这里就是将runc上传,并替换掉原先的几个文件就可以了。
2.Containerd task启动容器ctr: failed to create shim task: OCI runtime create failed 这里源码重新安装了runc
3.runc —— 从入门到放弃
4.docker runc升级 这里讲了如何升级runc,没有进行编译,就是使用了下载安装包,然后上传,替换就可以了。
5. opencontainers /runc 下载地址