如何重新启动一个现有的Docker容器在重启=“一直”模式?

当您最初从映像运行Docker容器时,您可以指定以下选项: –restart="always" 这确保了容器总是由Docker守护进程重新启动,如果由于某种原因停止。 所以你可以像这样运行一个容器: docker run –restart="always" <IMAGE> 您也可以通过指定其容器ID来重新启动现有的Docker容器,即: docker start <CONTAINER ID> 然而,我不能确定是否有可能改变一个现有的容器,原来不是用–restart="always选项运行的,将它转换为总是在以后重新启动。 目前唯一可以这样做的方法是将容器保存为新图像,然后使用–restart="always"选项将该图像作为新容器运行。 这实际上是否是这样做的正确方法? 编辑 :我可能没有足够清楚,原来是我正在考虑的情况下,在容器已经发生了变化,因为它是最初运行,这需要坚持下去。 所以从原始图像只运行一个新的容器是不够的。

重启所有正在运行的docker容器的命令?

如何重新启动所有正在运行的docker集装箱..主要是找一个快捷方式,而不是做docker restart containerid1 containerid2

在Dockerfile中有条件COPY / ADD?

在我的Dockerfiles里面,我想复制一个文件到我的映像中,如果它存在的话,PIP的requirements.txt文件看起来是一个好的候选者,但是如何实现呢? COPY (requirements.txt if test -e requirements.txt; fi) /destination … RUN if test -e requirements.txt; then pip install -r requirements.txt; fi 要么 if test -e requirements.txt; then COPY requiements.txt /destination; fi RUN if test -e requirements.txt; then pip install -r requirements.txt; fi 谢谢 :)

Docker Store vs Docker Hub

有没有人真正找出了Docker在DockerCon2016上推出的“Docker Store”和“Docker Hub”之间的区别? Docker只是试图制作一个Docker集线器的漂亮版本,以便拥有诸如Apple Store,Android Store等的东西? 或者是否有任何具体的使用案例,试图通过介绍这个解决? 我认为,它可以非常好地使用Docker集线器来提供可信,经过validation的企业映像,因为它现在提供官方映像。 那么为什么“Docker Store”呢?

Dockerfile中的条件ENV

是否有可能根据构buildARG的值有条件地设置一个Dockerfile中的ENVvariables? 例如:像 ARG BUILDVAR=sad ENV SOMEVAR=if $BUILDVAR -eq "SO"; then echo "hello"; else echo "world"; fi 更新:基于Mario回答的当前使用情况: ARG BUILD_ENV=prod ENV NODE_ENV=production RUN if [ "${BUILD_ENV}" = "test" ]; then export NODE_ENV=development; fi 但是,使用–build-arg BUILD_ENV=test ,然后进入主机,我仍然得到 docker run -it mycontainer bin/bash [root@brbqw1231 /]# echo $NODE_ENV production

Docker – 容器没有运行

我完全是docker工的新手。 我试图像下面这样启动一个退出的容器, 我使用docker ps -a列出了所有可用的容器。 它列出了以下内容, 我input以下命令启动处于退出阶段的容器并进入该图像的terminal。 docker start 79b3fa70b51d docker exec -it 79b3fa70b51d \bin\sh 这是抛出以下错误。 FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running 但是,当我启动容器使用docker start 79b3fa70b51d 。 如果一切正常,它会将容器ID作为正常输出。 我不确定是什么原因导致了这个错误。 任何关于这个问题的原因和build议对我来说都是很有帮助的。 提前致谢。

Dockerfile中VOLUME的用途是什么?

我试图更深入地理解Docker的音量,我很难弄清楚以下的差异/用例: docker volume create命令 docker run -v /path:/host_path Dockerfile文件中的VOLUME条目 我特别不明白如果将VOLUME条目和-v标志结合起来会发生什么情况。 如果有人理解,请解释我!

获取composer php(PHP的依赖pipe理器)运行在docker上的图像构build

注:我不再使用这个环境,所以我无法testing答案并接受答案。 对不起。 TL; DR你能指点我一个使用composer php处理PHP依赖关系的docker镜像的例子吗? 我在这篇文章中的所有问题都是关于composer php的PHP依赖工具 而不是 dockercomposer php的后继者。 我试图build立我自己的docker图像来运行wordpress作为一个composer php依赖项安装 。 我正在使用docker php image作为基础来构build一个docker镜像,我需要做的是安装composer并运行一个composer update命令,不pipe是在图像创build时间还是图像构build时间(不知道是否两者都是好)。 我可以通过手动执行所有步骤(运行Docker镜像,抨击它,复制和粘贴每一步)来运行一切。 但是当我将所有这些步骤放在一个Dockerfile上时,我不会让作曲者编写这些文件。 一段时间以来,我一直试图获得一个最小的失败的例子,但是我得到的那个并不是最小的。 我的testing是由以下内容组成(下面的链接到相关的github仓库) Dockerfile NFORMATION ~~~# # based on # https://hub.docker.com/r/richarvey/nginx-php-fpm/ # and # https://hub.docker.com/_/wordpress/ FROM php:7.0.2-apache MAINTAINER Miquel Adell <miquel@miqueladell.com> ENV WORDPRESS_VERSION 4.4.1 #~~~ DEPENDENCIES ~~~# # Add PHP repository to apt source RUN apt-get update […]

在具有多个容器实例的Docker容器中使用Rails运行迁移

我见过很多为Rails应用程序制作Docker容器的例子。 通常他们运行一个rails服务器,并且有一个运行迁移/设置的CMD,然后调出Rails服务器。 如果我同时生成这些容器中的5个,那么Rails如何处理试图启动迁移的多个进程? 我可以看到Rails在一般查询日志(这是一个MySQL数据库)中检查当前模式版本: SELECT `schema_migrations`.`version` FROM `schema_migrations` 但是如果在不同的Rails实例中同时发生这种情况,我可以在这里看到一个竞争条件。 考虑到DDL在MySQL中不是事务性的,而且在运行迁移时(除了迁移事务之外),在通用查询日志中没有看到发生任何locking,所以似乎将它们并行启动将是一个坏主意。 事实上,如果我在本地启动了三次,我可以看到两个rails实例在创build表时崩溃,因为它已经存在,而第三个rails实例愉快地完成迁移。 如果这是一个将某些东西插入到数据库中的迁移,那将是非常不安全的。 那么运行一个运行迁移/设置的容器然后生成一个独angular兽实例(这反过来又会产生多个轨道工作者)是更好的主意吗? 我应该产卵N铁轨容器和一个运行迁移的“迁移容器”然后退出? 有更好的select吗?

设置在Kubernetes中运行的容器的主机名

我想设置在Kubernetes内部运行的容器中的主机名,但Kubernetes似乎覆盖了我在运行时设置的任何东西。 我已经尝试在Docker镜像中设置/ etc / hostname,我正在使用Kubernetes,并在Dockerfile的CMD中包括echo "host.example.com > /etc/hostname" 。 似乎有一个docker标志-h来设置主机名。 有没有办法让我在我的复制控制器中指定它应该启动一个特殊的标志的容器? 容器的Debian,如果有帮助。