正如标题所说。 Docker-Compose在运行容器时非常慢。当我运行“ docker-compose up ”时,它一直在说它正试图附加...在python脚本运行之前大约需要10分钟。
另一方面..如果我开始“ docker-compose run docker-build ”,python脚本会在一秒钟内运行。
如果我使用“ docker run --rm -it Name_of_docker_image ”,python脚本也会在一秒钟内运行。
为什么我需要在使用docker-compose启动python脚本之前等待10分钟?
➜ stack git:(master) ✗ docker --version
Docker version 17.06.2-ce, build cec0b72
➜ stack git:(master) ✗ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
➜ stack git:(master) ✗ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::5355 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
“搬运工-compose.yml:”
version: "3"
services:
docker-build:
build: ./
ports:
- "4242:5000"
“Dockerfile:”
FROM ubuntu:16.04
# Ubuntu
RUN apt-get update
COPY . /
CMD ["/usr/bin/python", "run.py"]
“run.py”
#!/usr/bin/python
import time
a = 0
while True:
a += 1
print("Number of seconds past > {}".format(a))
time.sleep(1)
提前致谢!
修改 完整日志
➜ minerva_stack git:(master) ✗ docker-compose --verbose up
compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.auth.find_config_file: Trying paths: ['/home/mikelaptop/.docker/config.json', '/home/mikelaptop/.dockercfg']
docker.auth.find_config_file: No config file found
compose.cli.command.get_client: docker-compose version 1.16.1, build 6d1ac21
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
compose.cli.command.get_client: Docker base_url: http+docker://localunixsocket
compose.cli.command.get_client: Docker version: KernelVersion=4.10.0-35-generic, Arch=amd64, BuildTime=2017-09-05T19:57:44.123196188+00:00, ApiVersion=1.30, Version=17.06.2-ce, MinAPIVersion=1.12, GitCommit=cec0b72, Os=linux, GoVersion=go1.8.3
compose.cli.verbose_proxy.proxy_callable: docker info <- ()
compose.cli.verbose_proxy.proxy_callable: docker info -> {u'Architecture': u'x86_64',
u'BridgeNfIp6tables': True,
u'BridgeNfIptables': True,
u'CPUSet': True,
u'CPUShares': True,
u'CgroupDriver': u'cgroupfs',
u'ClusterAdvertise': u'',
u'ClusterStore': u'',
u'ContainerdCommit': {u'Expected': u'6e23458c129b551d5c9871e5174f6b1b7f6d1170',
u'ID': u'6e23458c129b551d5c9871e5174f6b1b7f6d1170'},
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- (u'minervastack_default')
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {u'Attachable': False,
u'ConfigFrom': {u'Network': u''},
u'ConfigOnly': False,
u'Containers': {},
u'Created': u'2017-09-25T14:10:59.758868469+02:00',
u'Driver': u'bridge',
u'EnableIPv6': False,
u'IPAM': {u'Config': [{u'Gateway': u'172.18.0.1',
u'Subnet': u'172.18.0.0/16'}],
u'Driver': u'default',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=minervastack', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=minervastack', u'com.docker.compose.service=docker-build', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'a2ed9143cd91fe2513405a63c94f6e60d9f78d5b011b4e237b6e13000c6d5d3b')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'docker-default',
u'Args': [u'run.py'],
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'],
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'minervastack_docker-build')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=minervastack', u'com.docker.compose.service=docker-build', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 1 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'minervastack_docker-build')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'a2ed9143cd91fe2513405a63c94f6e60d9f78d5b011b4e237b6e13000c6d5d3b')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'docker-default',
u'Args': [u'run.py'],
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'],
...
compose.service._containers_have_diverged: minervastack_docker-build_1 has diverged: 7780d5caeeb57c4d4b31e0170604a9127a5e560f39551d48dee0fd0e31de8b77 != 47a8bfe707f4f0d002ae10ba5058fa5167db1f6e6c2166a2a1d9580dcbfc45fb
compose.parallel.feed_queue: Pending: set([<Service: docker-build>])
compose.parallel.feed_queue: Starting producer thread for <Service: docker-build>
Recreating minervastack_docker-build_1 ...
compose.parallel.feed_queue: Pending: set([<Container: minervastack_docker-build_1 (a2ed91)>])
compose.parallel.feed_queue: Starting producer thread for <Container: minervastack_docker-build_1 (a2ed91)>
compose.service.recreate_container: Recreating minervastack_docker-build_1
compose.cli.verbose_proxy.proxy_callable: docker stop <- (u'a2ed9143cd91fe2513405a63c94f6e60d9f78d5b011b4e237b6e13000c6d5d3b', timeout=10)
compose.cli.verbose_proxy.proxy_callable: docker stop -> None
compose.cli.verbose_proxy.proxy_callable: docker rename <- (u'a2ed9143cd91fe2513405a63c94f6e60d9f78d5b011b4e237b6e13000c6d5d3b', u'a2ed9143cd91_minervastack_docker-build_1')
compose.cli.verbose_proxy.proxy_callable: docker rename -> None
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'minervastack_docker-build')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'sha256:f421c2e81f499f49254753aa3d5b91ab6fe5b8afc2573b3797bd09730bf27ef3')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- (u'minervastack_docker-build')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
u'Author': u'',
u'Comment': u'',
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
...
compose.service.build_container_labels: Added config hash: 47a8bfe707f4f0d002ae10ba5058fa5167db1f6e6c2166a2a1d9580dcbfc45fb
compose.cli.verbose_proxy.proxy_callable: docker create_host_config <- (device_read_iops=None, mem_swappiness=None, links=[], oom_score_adj=None, cpu_count=None, pids_limit=None, cpuset_cpus=None, dns_search=None, pid_mode=None, init_path=None, log_config={'Type': u'', 'Config': {}}, cpu_quota=None, read_only=None, cpu_percent=None, device_read_bps=None, storage_opt=None, init=None, dns=None, volumes_from=[], ipc_mode=None, mem_reservation=None, security_opt=None, shm_size=None, device_write_iops=None, dns_opt=None, cgroup_parent=None, group_add=None, network_mode=u'minervastack_default', blkio_weight_device=None, userns_mode=None, tmpfs=None, nano_cpus=None, port_bindings={'5000/tcp': ['4242']}, isolation=None, memswap_limit=None, restart_policy=None, volume_driver=None, devices=None, extra_hosts=None, binds=[], sysctls=None, blkio_weight=None, device_write_bps=None, cap_add=None, mem_limit=None, cap_drop=None, privileged=False, ulimits=None, cpu_shares=None)
compose.cli.verbose_proxy.proxy_callable: docker create_host_config -> {'Binds': [],
'Links': [],
'LogConfig': {'Config': {}, 'Type': u''},
'NetworkMode': u'minervastack_default',
'PortBindings': {'5000/tcp': [{'HostIp': '', 'HostPort': '4242'}]},
'VolumesFrom': []}
compose.cli.verbose_proxy.proxy_callable: docker create_container <- (name=u'minervastack_docker-build_1', image=u'minervastack_docker-build', labels={u'com.docker.compose.service': u'docker-build', u'com.docker.compose.project': u'minervastack', u'com.docker.compose.config-hash': '47a8bfe707f4f0d002ae10ba5058fa5167db1f6e6c2166a2a1d9580dcbfc45fb', u'com.docker.compose.version': u'1.16.1', u'com.docker.compose.oneoff': u'False', u'com.docker.compose.container-number': '1'}, host_config={'NetworkMode': u'minervastack_default', 'Links': [], 'PortBindings': {'5000/tcp': [{'HostPort': '4242', 'HostIp': ''}]}, 'Binds': [], 'LogConfig': {'Type': u'', 'Config': {}}, 'VolumesFrom': []}, environment=[], volumes={}, detach=True, ports=[(u'5000', u'tcp')], networking_config={u'EndpointsConfig': {u'minervastack_default': {u'IPAMConfig': {}, u'Aliases': ['docker-build']}}})
compose.parallel.feed_queue: Pending: set([])
compose.parallel.feed_queue: Pending: set([])
compose.cli.verbose_proxy.proxy_callable: docker create_container -> {u'Id': u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18',
u'Warnings': None}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'',
u'Args': [u'run.py'],
u'Config': {u'ArgsEscaped': True,
u'AttachStderr': False,
u'AttachStdin': False,
u'AttachStdout': False,
u'Cmd': [u'/usr/bin/python', u'run.py'],
u'Domainname': u'',
u'Entrypoint': None,
u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'],
...
compose.cli.verbose_proxy.proxy_callable: docker attach <- (u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18', stderr=True, stream=True, stdout=True)
compose.cli.verbose_proxy.proxy_callable: docker attach -> <generator object frames_iter at 0x7f7552800460>
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network <- (u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18', u'minervastack_default')
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network -> None
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network <- (u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18', u'minervastack_default', ipv4_address=None, link_local_ips=None, ipv6_address=None, links=[], aliases=[u'7167233b39bc', 'docker-build'])
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network -> None
compose.cli.verbose_proxy.proxy_callable: docker start <- (u'7167233b39bc991d11cd502dd9f4bc680c5a1341a8f9fc1ff321429b3287dc18')
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.cli.verbose_proxy.proxy_callable: docker start -> None
compose.cli.verbose_proxy.proxy_callable: docker remove_container <- (u'a2ed9143cd91fe2513405a63c94f6e60d9f78d5b011b4e237b6e13000c6d5d3b')
compose.cli.verbose_proxy.proxy_callable: docker remove_container -> None
Recreating minervastack_docker-build_1 ... done
compose.parallel.feed_queue: Pending: set([])
compose.parallel.parallel_execute_iter: Finished processing: <Service: docker-build>
compose.parallel.feed_queue: Pending: set([])
Attaching to minervastack_docker-build_1
compose.cli.verbose_proxy.proxy_callable: docker events <- (decode=True, filters={u'label': [u'com.docker.compose.project=minervastack', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker events -> <generator object _stream_helper at 0x7f7552800780>
答案 0 :(得分:3)
问题在于缓冲日志。你应该改变
123
到
CMD ["/usr/bin/python", "run.py"]
或者您应该更新CMD ["/usr/bin/python", "-u", "run.py"]
docker-compose.yml
PS:取自http://tarunlalwani.com/post/why-delayed-output-python-docker/