в docker, tips

Docker совет №36: Что происходит при запуске docker-compose up?


В этой статье попробуем разобраться, что же на самом деле происходит «под капотом» при запуске команды docker-compose up. Давайте разберемся!

Без изучения исходного кода утилиты docker-compose можно предположить, что утилита просто парсит конфигурационный файл в формате *.yaml (docker-compose.yml) и преобразует services/volumes/networks в соответствующие команды самого docker. В принципе, это недалеко от истины, но стоит уточнить, что docker-compose не взаимодействует с бинарным файлом docker напрямую — все вызовы осуществляются через Docker API.

Для лучшего понимания происходящего, достаточно добавить флаг --verbose к любой команде docker-compose, например так:

docker-compose --verbose up

Слегка упрощенная схема вызова команды docker-compose up выглядит так:

  • попытка найти и применить (в том числе кастомные) конфиги сервиса docker;
  • подключение к настроенному docker-демону;
  • попытка найти или создать сеть для данного docker-проекта;
  • попытка найти или создать тома для данного docker-проекта;
  • поиск docker-контейнеров, уже созданных для данного docker-проекта;
  • поиск и/или скачивание/сборка docker-образов, для данного docker-проекта;
  • создание контейнеров для данного docker-проекта;
  • запуск созданных контейнеров;
  • периодическая проверка состояния запущенных docker-контейнеров;
  • остановка запущенных docker-контейнеров по нажатию пользователем комбинации Ctrl+C.

Подробный лог запуска простенького сервиса (команда docker-compose --verbose up) выглядит так:

compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.utils.config.find_config_file: Trying paths: ['/Users/ealebed/.docker/config.json', '/Users/ealebed/.dockercfg']
docker.utils.config.find_config_file: Found file at path: /Users/ealebed/.docker/config.json
docker.auth.load_config: Found 'auths' section
docker.auth.parse_auth: Auth data for https://us.gcr.io is absent. Client might be using a credentials store instead.
docker.auth.load_config: Found 'credsStore' section
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/version HTTP/1.1" 200 568
compose.cli.command.get_client: docker-compose version 1.21.2, build a133471
docker-py version: 3.3.0
CPython version: 3.6.4
OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018
compose.cli.command.get_client: Docker base_url: http+docker://localhost
compose.cli.command.get_client: Docker version: Platform={'Name': ''}, Components=[{'Name': 'Engine', 'Version': '18.05.0-ce', 'Details': {'ApiVersion': '1.37', 'Arch': 'amd64', 'BuildTime': '2018-05-09T22:20:16.000000000+00:00', 'Experimental': 'true', 'GitCommit': 'f150324', 'GoVersion': 'go1.10.1', 'KernelVersion': '4.9.93-linuxkit-aufs', 'MinAPIVersion': '1.12', 'Os': 'linux'}}], Version=18.05.0-ce, ApiVersion=1.37, MinAPIVersion=1.12, GitCommit=f150324, GoVersion=go1.10.1, Os=linux, Arch=amd64, KernelVersion=4.9.93-linuxkit-aufs, Experimental=True, BuildTime=2018-05-09T22:20:16.000000000+00:00
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('satis_default')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/networks/satis_default HTTP/1.1" 404 32
compose.cli.verbose_proxy.proxy_callable: docker info <- ()
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/info HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker info -> {'Architecture': 'x86_64',
 'BridgeNfIp6tables': True,
 'BridgeNfIptables': True,
 'CPUSet': True,
 'CPUShares': True,
 'CgroupDriver': 'cgroupfs',
 'ClusterAdvertise': '',
 'ClusterStore': '',
 'ContainerdCommit': {'Expected': '773c489c9c1b21a6d78b5c538cd395416ec50f88',
                      'ID': '773c489c9c1b21a6d78b5c538cd395416ec50f88'},
...
WARNING: compose.cli.main.warn_for_swarm_mode: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('satis_default')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/networks/satis_default HTTP/1.1" 404 32
compose.network.ensure: Creating network "satis_default" with the default driver
compose.cli.verbose_proxy.proxy_callable: docker create_network <- (name='satis_default', driver=None, options=None, ipam=None, internal=False, enable_ipv6=False, labels=None, attachable=None, check_duplicate=True)
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/networks/create HTTP/1.1" 201 87
compose.cli.verbose_proxy.proxy_callable: docker create_network -> {'Id': 'cc32d1c887c3f023abdde526cc8390b0bc62b4ed4bc9ccacbd27927a34a7064f',
 'Warning': ''}
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=0&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.service=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=1&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.service%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.service=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=1&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.service%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('ealebed/satis:latest')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/images/ealebed/satis:latest/json HTTP/1.1" 404 73
compose.service.pull: Pulling satis (ealebed/satis:latest)...
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('ealebed/satis', tag='latest', stream=True, platform=None)
docker.auth.get_config_header: Looking for auth config
docker.auth.resolve_authconfig: Using credentials store "osxkeychain"
docker.auth._resolve_authconfig_credstore: Looking for auth entry for 'https://index.docker.io/v1/'
docker.auth._resolve_authconfig_credstore: No entry found
docker.auth.resolve_authconfig: No entry in credstore - fetching from auth dict
docker.auth.resolve_authconfig: Looking for auth entry for 'docker.io'
docker.auth.resolve_authconfig: No entry found
docker.auth.get_config_header: No auth config found
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/images/create?tag=latest&fromImage=ealebed%2Fsatis HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker pull -> <generator object APIClient._stream_helper at 0x102d43830>
latest: Pulling from ealebed/satis
660c48dd555d: Pull complete
4c7380416e78: Pull complete
421e436b5f80: Pull complete
e4ce6c3651b3: Pull complete
be588e74bd34: Pull complete
fc0f7bb0f395: Pull complete
0f54a38f512b: Pull complete
40ba48e14cd6: Pull complete
1708b519798c: Pull complete
0008302ba0ba: Pull complete
7ecdd31a977d: Pull complete
18e1eab12144: Pull complete
194b7fd05ba6: Pull complete
32311fdd7828: Pull complete
05633ecef2a6: Pull complete
952548b263fe: Pull complete
e5eb867a959a: Pull complete
f73dc7ea1237: Pull complete
0fb278a120ce: Pull complete
Digest: sha256:3bd280e469669fa81a3eb54717d72d30eadd00ca435c6836204203532af53bcd
Status: Downloaded newer image for ealebed/satis:latest
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.service=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=1&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.service%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.service=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=1&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.service%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.parallel.feed_queue: Pending: {<Service: satis>}
compose.parallel.feed_queue: Starting producer thread for <Service: satis>
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.service=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=1&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.service%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 3
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
Creating satis ...
compose.parallel.feed_queue: Pending: {ServiceName(project='satis', service='satis', number=1)}
compose.parallel.feed_queue: Starting producer thread for ServiceName(project='satis', service='satis', number=1)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('ealebed/satis:latest')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/images/ealebed/satis:latest/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {'Architecture': 'amd64',
 'Author': '',
 'Comment': '',
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('ealebed/satis:latest')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/images/ealebed/satis:latest/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {'Architecture': 'amd64',
 'Author': '',
 'Comment': '',
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
...
compose.service.build_container_labels: Added config hash: c4f47feda571bb211198bf82b84f64fab2d1b3a71c47f5d39c341c6379fed616
compose.cli.verbose_proxy.proxy_callable: docker create_host_config <- (links=[], port_bindings={'3000/tcp': ['3333'], '80/tcp': ['8181']}, binds=['/Users/ealebed/Code/ED/satis/dist:/satisfy/web/dist:rw', '/Users/ealebed/Code/ED/satis/include:/satisfy/web/include:rw', '/Users/ealebed/Code/ED/satis/satis.json:/app/config.json:rw', '/Users/ealebed/Code/ED/satis/COMPOSER_CACHE:/root/.composer:rw'], volumes_from=[], privileged=False, network_mode='satis_default', devices=None, dns=None, dns_opt=None, dns_search=None, restart_policy={'Name': 'always', 'MaximumRetryCount': 0}, runtime=None, cap_add=None, cap_drop=None, mem_limit=None, mem_reservation=None, memswap_limit=None, ulimits=None, log_config={'Type': '', 'Config': {}}, extra_hosts=None, read_only=None, pid_mode=None, security_opt=None, ipc_mode=None, cgroup_parent=None, cpu_quota=None, shm_size=None, sysctls=None, pids_limit=None, tmpfs=[], oom_kill_disable=None, oom_score_adj=None, mem_swappiness=None, group_add=None, userns_mode=None, init=None, init_path=None, isolation=None, cpu_count=None, cpu_percent=None, nano_cpus=None, volume_driver=None, cpuset_cpus=None, cpu_shares=None, storage_opt=None, blkio_weight=None, blkio_weight_device=None, device_read_bps=None, device_read_iops=None, device_write_bps=None, device_write_iops=None, mounts=None, device_cgroup_rules=None, cpu_period=None, cpu_rt_period=None, cpu_rt_runtime=None)
compose.cli.verbose_proxy.proxy_callable: docker create_host_config -> {'Binds': ['/Users/ealebed/Code/ED/satis/dist:/satisfy/web/dist:rw',
           '/Users/ealebed/Code/ED/satis/include:/satisfy/web/include:rw',
           '/Users/ealebed/Code/ED/satis/satis.json:/app/config.json:rw',
           '/Users/ealebed/Code/ED/satis/COMPOSER_CACHE:/root/.composer:rw'],
 'Links': [],
 'LogConfig': {'Config': {}, 'Type': ''},
 'NetworkMode': 'satis_default',
 'PortBindings': {'3000/tcp': [{'HostIp': '', 'HostPort': '3333'}],
                  '80/tcp': [{'HostIp': '', 'HostPort': '8181'}]},
 'RestartPolicy': {'MaximumRetryCount': 0, 'Name': 'always'},
...
compose.cli.verbose_proxy.proxy_callable: docker create_container <- (environment=['CRONTAB_FREQUENCY=10 0 * * *', 'VIRTUAL_HOST=satis.lc'], image='ealebed/satis:latest', ports=[('3000', 'tcp'), ('80', 'tcp')], volumes={'/satisfy/web/dist': {}, '/app/config.json': {}, '/satisfy/web/include': {}, '/root/.composer': {}}, name='satis', detach=True, labels={'com.docker.compose.project': 'satis', 'com.docker.compose.service': 'satis', 'com.docker.compose.oneoff': 'False', 'com.docker.compose.container-number': '1', 'com.docker.compose.version': '1.21.2', 'com.docker.compose.config-hash': 'c4f47feda571bb211198bf82b84f64fab2d1b3a71c47f5d39c341c6379fed616'}, host_config={'NetworkMode': 'satis_default', 'RestartPolicy': {'Name': 'always', 'MaximumRetryCount': 0}, 'VolumesFrom': [], 'Binds': ['/Users/ealebed/Code/ED/satis/dist:/satisfy/web/dist:rw', '/Users/ealebed/Code/ED/satis/include:/satisfy/web/include:rw', '/Users/ealebed/Code/ED/satis/satis.json:/app/config.json:rw', '/Users/ealebed/Code/ED/satis/COMPOSER_CACHE:/root/.composer:rw'], 'PortBindings': {'3000/tcp': [{'HostIp': '', 'HostPort': '3333'}], '80/tcp': [{'HostIp': '', 'HostPort': '8181'}]}, 'Links': [], 'LogConfig': {'Type': '', 'Config': {}}}, networking_config={'EndpointsConfig': {'satis_default': {'Aliases': ['satis'], 'IPAMConfig': {}}}})
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/create?name=satis HTTP/1.1" 201 90
compose.cli.verbose_proxy.proxy_callable: docker create_container -> {'Id': 'c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba',
 'Warnings': None}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
compose.parallel.feed_queue: Pending: set()
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-n', '-c', '/etc/supervisor/supervisord.conf'],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
                    '/etc/supervisor/supervisord.conf'],
...
compose.cli.verbose_proxy.proxy_callable: docker attach <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba', stdout=True, stderr=True, stream=True)
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/attach?logs=0&stdout=1&stderr=1&stream=1 HTTP/1.1" 101 0
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker attach -> <docker.types.daemon.CancellableStream object at 0x103e4a0f0>
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba', 'satis_default')
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/networks/satis_default/disconnect HTTP/1.1" 200 0
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network -> None
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba', 'satis_default', aliases=['c0296db3b560', 'satis'], ipv4_address=None, ipv6_address=None, links=[], link_local_ips=None)
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/networks/satis_default/connect HTTP/1.1" 200 0
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network -> None
compose.cli.verbose_proxy.proxy_callable: docker start <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/start HTTP/1.1" 204 0
compose.cli.verbose_proxy.proxy_callable: docker start -> None
Creating satis ... done
compose.parallel.feed_queue: Pending: set()
compose.parallel.parallel_execute_iter: Finished processing: <Service: satis>
compose.parallel.feed_queue: Pending: set()
Attaching to satis
compose.cli.verbose_proxy.proxy_callable: docker events <- (filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.oneoff=False']}, decode=True)
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/events?filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker events -> <docker.types.daemon.CancellableStream object at 0x103e64f98>
satis    | 2018-07-14 08:34:31,302 CRIT Supervisor running as root (no user in config file)
...
^CGracefully stopping... (press Ctrl+C again to force)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={'label': ['com.docker.compose.project=satis', 'com.docker.compose.oneoff=False']})
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/json?limit=-1&all=0&size=0&trunc_cmd=0&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsatis%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D HTTP/1.1" 200 1868
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-n', '-c', '/etc/supervisor/supervisord.conf'],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
                    '/etc/supervisor/supervisord.conf'],
...
Stopping satis ...
compose.parallel.feed_queue: Pending: {<Container: satis (c0296d)>}
compose.parallel.feed_queue: Starting producer thread for <Container: satis (c0296d)>
compose.cli.verbose_proxy.proxy_callable: docker stop <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba', timeout=10)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-n', '-c', '/etc/supervisor/supervisord.conf'],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
                    '/etc/supervisor/supervisord.conf'],
...
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
compose.cli.verbose_proxy.proxy_callable: docker wait <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/stop?t=10 HTTP/1.1" 204 0
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/wait HTTP/1.1" 200 30
compose.cli.verbose_proxy.proxy_callable: docker stop -> None
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/containers/c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker wait -> {'Error': None, 'StatusCode': 0}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-n', '-c', '/etc/supervisor/supervisord.conf'],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['/usr/bin/supervisord',
                    '-n',
                    '-c',
                    '/etc/supervisor/supervisord.conf'],
...
compose.parallel.feed_queue: Pending: set()
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('c0296db3b560958301aa050811f0176218f9300c5d4a5deb6c31d75c844d1dba')

Добавить комментарий