Как запустить Docker Контейнеры, используя Ansible - PullRequest
0 голосов
/ 24 апреля 2020

Я пишу сборник пьес, в котором я хочу построить и создать образ, и запустить несколько контейнеров для этого изображения. Я смог создать образ, но мои контейнеры не запускаются. Они создаются успешно, но не в рабочем состоянии.

Может кто-нибудь помочь, что мне не хватает?

- 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

1 Ответ

2 голосов
/ 25 апреля 2020

Это не имеет ничего общего с Ansible.

Ваше изображение Docker основано на debian:8.5, который при запуске просто запускает оболочку. Если оболочка не подключена к терминалу, она немедленно выйдет. Например, попробуйте выполнить:

docker run debian:8.5

Если вы ожидаете, что ваш образ запускает постоянную службу (например, nginx), вам нужно организовать запуск nginx при запуске контейнера из образа. Это делается в соответствии с директивами CMD или ENTRYPOINT в вашем 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
CMD ["nginx", "-g", "daemon off"]
...