我正在写一本剧本,我想在其中构建图像并为该图像启动一些容器。我能够构建映像,但是我的容器尚未开始使用。 它们已成功创建,但未处于运行状态。
有人可以帮助我吗?
- name: Manage Docker instances via Ansible
hosts: shashank-VM
connection: local
become: yes
become_method: sudo
tasks:
- name: Building an image from Dockerfile
docker_image:
build:
path: .
pull: yes
name: web
source: build
- name: Starting Docker Containers
docker_container:
name: my-app-{{ item }}
image: web:latest
state: started
with_sequence: count=4
从下面您可以看到容器已创建,但是如果我执行sudo docker ps,我什么也看不到。
TASK [Starting Docker Containers] ************************************************************************************************************
/usr/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.25.9) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
changed: [shashank-VM] => (item=1)
changed: [shashank-VM] => (item=2)
changed: [shashank-VM] => (item=3)
changed: [shashank-VM] => (item=4)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
shashank@shashank-VM:~/docker_project$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5b586266f15 web_new "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago myvm-app-4
ea45cc1fcf3c web_new "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago myvm-app-3
1e685f3d1368 web_new "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago myvm-app-2
5d03750c3fd2 web_new "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago myvm-app-1
shashank@shashank-VM:~/docker_project$ sudo docker run -d web_new
6e937d7a8e75c04ea9dc6769fa41b00f5bf455e6f947f002d181d105b94c7265
shashank@shashank-VM:~/docker_project$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
shashank@shashank-VM:~/docker_project$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e937d7a8e75 web_new "/bin/bash" 14 seconds ago Exited (0) 13 seconds ago agitated_bartik
Dockerfile内容-
FROM debian:8.5
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Default page. Nginx is in your container. ' \
>/usr/share/nginx/html/index.html
EXPOSE 8085
答案 0 :(得分:3)
这与Ansible无关。
您的Docker映像基于debian:8.5
,当运行时,该映像只是启动一个shell。如果外壳未连接到终端,它将立即退出。例如,尝试运行:
docker run debian:8.5
如果您希望映像运行持久性服务(例如nginx
),则需要安排nginx
在从映像启动容器时运行。您可以通过在Dockerfile中使用CMD
或ENTRYPOINT
指令来执行此操作。
例如:
FROM debian:8.5
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Default page. Nginx is in your container. ' \
>/usr/share/nginx/html/index.html
EXPOSE 8085
CMD ["nginx", "-g", "daemon off"]