我有一个在我的dockerfile中启动的Python(2.7)应用程序: CMD ["python","main.py"] main.py在启动时打印一些string,然后进入循环: print "App started" while True: time.sleep(1) 只要我用-it标志启动容器,一切都按预期工作: $ docker run –name=myapp -it myappimage > App started 之后我可以通过日志查看相同的输出: $ docker logs myapp > App started 如果我尝试运行与-d标志相同的容器,容器似乎正常启动,但我看不到任何输出: $ docker run –name=myapp -d myappimage > b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1 $ docker logs myapp $ (empty) 但容器似乎仍然运行; $ docker ps Container Status … myapp up 4 minutes … […]
如果您有以下情况, Docker文档build议使用ONBUILD指令: 例如,如果您的映像是可重用的Python应用程序构build器,则需要将应用程序源代码添加到特定的目录中,并且可能需要在此之后调用构build脚本。 你现在不能只调用ADD和RUN,因为你还没有访问应用程序的源代码,每个应用程序的版本都不一样。 您可以简单地向应用程序开发人员提供一个样板化的Dockerfile来复制粘贴到他们的应用程序中,但是效率低,容易出错并且难以更新,因为它与特定于应用程序的代码混合在一起。 基本上,这一切听起来不错,但是这意味着我必须重新创build应用程序容器,每次我改变一些东西,即使它只是一个错字。 这似乎并不是非常有效的,例如,在创buildWeb应用程序时,用于更改内容,保存并在浏览器中进行刷新。 你怎么处理这个?
docker run和docker create命令有什么区别? 我通常使用run但有时在我看到create文档。 Docker的–help告诉 create Create a new container run Run a command in a new container 这是否意味着当我们需要传递一个命令到一个新的容器时使用run ? 那么create的目的是什么?
我想知道是否在本地存在具有特定标签的Docker镜像。 如果Docker客户端本身无法执行此操作,则可以使用bash脚本。 只是为潜在的bash脚本提供一些提示,运行docker images命令的结果返回如下内容: REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE rabbitmq latest e8e654c05c91 5 weeks ago 143.5 MB busybox latest 8c2e06607696 6 weeks ago 2.433 MB rabbitmq 3.4.4 a4fbaad9f996 11 weeks ago 131.5 MB
当在一个容器中运行一个服务时,让我们说mongodb,这个命令 docker run -d myimage 将立即退出,并返回容器ID。 在我的CI脚本中,我运行一个客户端来testingmongodb连接,在运行mongo容器之后。 问题是:客户端无法连接,因为服务尚未启动。 除了在我的脚本中添加一个大的sleep 10 ,我没有看到任何等待容器启动和运行的选项。 在这种情况下,Docker有一个不能工作的命令,因为容器不存在。 是docker的限制吗? 谢谢
我试图删除一个图像,我得到: # docker rmi f50f9524513f Failed to remove image (f50f9524513f): Error response from daemon: conflict: unable to delete f50f9524513f (cannot be forced) – image has dependent child images 这是docker版本: # docker version Client: Version: 1.10.3 API version: 1.22 Go version: go1.5.3 Git commit: 20f81dd Built: Thu Mar 10 21:49:11 2016 OS/Arch: linux/amd64 Server: Version: 1.10.3 […]
docker工只能将端口暴露给主机,而不能暴露在外部。 我需要把一个docker运行一个mongo数据库,我希望它只能从主机访问,但是我需要链接主机端口27017。 这是可能的,还是唯一可能的方法是更改防火墙定义?
我有安装docker,我已经使用完全不同的块设备来存储docker的系统数据: [root@blink1 /]# cat /etc/sysconfig/docker # /etc/sysconfig/docker other_args="-H tcp://0.0.0.0:9367 -H unix:///var/run/docker.sock -g /disk1/docker" 请注意, /disk/1正在使用完全不同的硬盘驱动器/dev/xvdi Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.8G 5.1G 2.6G 67% / devtmpfs 1.9G 108K 1.9G 1% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdi 20G 5.3G 15G 27% /disk1 /dev/dm-1 9.8G 1.7G 7.6G 18% /disk1/docker/devicemapper/mnt/bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf /dev/dm-2 9.8G 1.7G […]
我对docker默认给我的IP范围非常满意(176.17.xx),所以我不需要创build一个新的桥,我只是想给我的容器在这个范围内的静态地址,所以我可以点客户端浏览器直接。 我试过使用 RUN echo "auto eth0" >> /etc/network/interfaces RUN echo "iface eth0 inet static" >> /etc/network/interfaces RUN echo "address 176.17.0.250" >> /etc/network/interfaces RUN echo "netmask 255.255.0.0" >> /etc/network/interfaces RUN ifdown eth0 RUN ifup eth0 从一个Dockerfile,并正确地填充接口文件,但接口本身并没有改变。 实际上,在容器中运行ifup eth0会得到这个错误: RTNETLINK答案:操作不允许 无法启动eth0
我正在学习docker,我正在使用v1.11.0我想安装hadoop,但devmapper抱怨可用磁盘空间? devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior 我删除了所有的图像,但问题依然存在: [root@localhost hadoop_docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE debian latest 47af6ca8a14a 3 weeks ago 125 MB [root@localhost hadoop_docker]# 这是我的磁盘configuration: […]