Tag: docker文件docker 撰写

如何解释这个dockerregistry创build命令?

以下命令的解释是否正确? 我的解释:创build一个名为“registry”的registry,它监听映射到主机端口5001的容器的端口5002。 另外,我不明白什么是“registry:2”所需的? 看起来像是“repository_name:tag”,相当于图像名称。 它是否正确? docker run -d -p 5001:5002 –restart=always –name registry registry:2 此外,我尝试使用“registry:1”和“registry:3”这是行不通的。 它只适用于我使用“registry:2”。 ✘  ~  docker run -d -p 5001:5002 –restart=always –name new_registry registry:3 Unable to find image 'registry:3' locally Pulling repository docker.io/library/registry Tag 3 not found in repository docker.io/library/registry ✘  ~  docker run -d -p 5001:5002 –restart=always […]

如何使用docker-compose.yml和ecs-cli将EBS卷附加到我的容器中

我使用docker-compose.yml来定义一组容器。 并使用ecs-cli compose (service) up在AWS上创build我的应用程序。 我知道创build容器时, AWS ECS会自动附带100GB EBS 。 (即使承载容器的EC2实例只有8GB的硬盘驱动器)。我想拥有一个持久存储,即使我更新了我的容器,它仍然可以指向相同的100GB EBS 。 我很确定我可以做到以下事情来实现这个目标: 将外部EBS附加到EC2实例,并使用撰写文件中的卷将该卷附加到容器。 不过,我觉得在ECS上可能会有更好的方法,因为它会自动为您提供100GB的ELB。 也就是说,如果我使用上述方法,那么我真的在“浪费”每个容器附带的100GB容量。 那么,实现这个目标的最好方法是什么? 你能给出一个像docker-compose.yml格式的答案吗? container1: image: image1 container2: image: image2 links: – "container1"

在Docker COPY命令中,Tilde扩展不起作用

我有一个Dockerfile与下面的行: COPY *.zip ~user1 用户user1已经存在,并有一个主目录(即/home/user1 )。 当然,目标是将zip文件复制到该用户的home目录中,但是上述结果是,zip文件被复制到图像中名为literally /~user1的文件中。 以下按预期工作: COPY *.zip /home/user1 这是Docker中的一个bug吗?还是有一个与我不知道的代字符扩展有关的限制 ? 在Mac上使用Docker 1.13.0。

在Docker构build期间启动服务

我想在Docker构build期间启动一个服务。 我不需要这个服务在构build过程完成之后继续运行(或者我知道我可以使用CMD命令),但是我确实需要运行足够长的时间来执行第二个依赖于此服务的命令并运行。 更准确地说,我正在为ejabberd XMPP服务器编写一个Dockerfile,它也为这个服务器安装了一个模块。 我试图用ejabberdctl start启动ejabberd服务器,然后用ejabberdctl module_install实用程序安装模块,这取决于正在运行的节点。 它看起来像这样: RUN ejabberdctl start && ejabberdctl modules_update_specs && ejabberdctl module_install ejabberd_auth_http 现在我遇到了一个问题,我提出了两个可能的原因。 问题是我的版本不能从这一行开始工作,因为当第二个命令试图执行时节点closures了。 我得到以下错误,当您尝试使用ejabberdctl实用程序时,这是一个典型的错误,而不会实际启动节点: 失败的RPC连接到节点ejabberd @ localhost 命令'/ bin / sh -c ejabberdctl start && ejabberdctl modules_update_specs && ejabberdctl module_install ejabberd_auth_http'返回了一个非零的代码:3 这可能是因为服务的启动需要一些时间,比第二个命令执行所需要的时间要长,所以第二个命令会运行到正在启动的节点。 不知道这有多可能。 第二个原因可能是在构build过程中,依赖于init.d的服务的启动在Docker中不起作用。 我build立容器,直到导致问题的那一行,进入容器并手动执行命令,并且所有事情都按照它应该的那样工作。 所以总结一下,我想在构build期间启动ejabberd服务器,然后使用其控制工具来安装一些东西。 最后一个select是在没有运行服务器的情况下手动安装模块,但是我宁愿使用ejabberdctl控制工具来完成。