您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

docker-compose中启动镜像失败的几种解决方法

51自学网 2023-08-14 21:11:54
  网站维护

正常的docker run启动

**java:8u111-jdk**是java官方镜像,如下命令可以成功启动一个该镜像的容器:

 docker run --name test001 -idt java:8u111-jdk

以上命令创建的容器,可用docker exec -it test001 /bin/bash进入容器,执行我们所需的操作;

docker-compose启动失败

这里写个最简单的docker-compose.yml,然后用docker-compse,内容如下:

master:  image: java:8u111-jdk

在此文件所在目录下执行docker-compose up -d启动容器,再执行docker ps -a查看容器状态,信息如下所示:

root@rabbitmq:/usr/local/work/test# docker-compose up -dCreating test_master_1 ... doneroot@rabbitmq:/usr/local/work/test# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMESbb433fe9984d        java:8u111-jdk      "/bin/bash"         About a minute ago   Exited (0) About a minute ago                       test_master_1

信息显示我们启动的容器状态为Exited (0) About a minute ago,也就是说虽然创建了容器,但是该容器并未正常运行;

控制终端缺失

启动失败是因为缺失了控制终端的配置,这里有两种方式修复;

使用tty参数(推荐使用)

修改docker-compose.yml,增加一个配置tty:true,如下:

master:  image: java:8u111-jdk  tty: true

先执行docker-compose down将之前的容器删除,再执行docker-compose up -d启动,可以发现启动成功,并且可以成功进入容器进行操作:

root@rabbitmq:/usr/local/work/test# docker-compose up -dCreating test_master_1 ... doneroot@rabbitmq:/usr/local/work/test# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESf51debaa26ec        java:8u111-jdk      "/bin/bash"         2 seconds ago       Up 2 seconds                            test_master_1root@rabbitmq:/usr/local/work/test# docker exec -it test_master_1 /bin/bashroot@f51debaa26ec:/# java -versionopenjdk version "1.8.0_111"OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

使用exec重新创建容器(不推荐)

这种方式并不推荐,因为这样做虽然可以启动容器,但是只能重新创建一个容器,具体方法如下:

  • 使用docker-compose up -d命令启动后,由于没有tty:true的配置,容器就退出了;
  • 这时候执行命令docker-compose run master /bin/bash,会创建一个容器,并且进入这个容器;
  • 在当前电脑再打开一个控制台,执行docker ps命令,发现新建了一个容器,状态正常;

下载地址:
Docker compose up -d与Docker restart的区别
Docker配置文件docker-compose.yml使用指南
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1