发生错误时如何将文件复制到docker容器:Nosuch容器?

时间:2017-11-28 10:02:15

标签: docker centos

我是关于码头工的新手,所以,如果有任何错误的想法来自我,请指出它。谢谢〜

我的目标是在Docker中运行由我或我所属的团队开发的Web服务器。

所以,我想出了三个步骤:

拥有图像,将Web文件复制到其中,然后运行容器。所以,我执行以下步骤:

1-获取泊坞窗图像。

我尝试这样:docker pull centos,这样我就可以获得基于centos的图像。这里,我不关心centos的版本,当然,它的版本是6.7或者,只是taged:latest

在这里,我按docker images查看图片,我可以这样看:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              d123f4e55e12        3 weeks ago         196.6 MB

所以,我认为这一步取得了成功。

2-尝试将本地系统中的文件复制到容器中。

我停在路径:/ tornado,它有一个名为fordocker的文件夹。

fordocker包含网络服务器文件。

我尝试这样的语言(基于指南):

docker cp fordocker/ d123f4e55e12:/web

但是!出现错误:

Error response from daemon: No such container: d123f4e55e12

3-如果我成功复制文件,我可以尝试这样:docker run -d centos xxx python web.py

这一步会出错吗?我还不知道。

我经常搜索,但不解释这种现象。

似乎每个人,除了我,都会使用这个共同的成功。

所以,问题出现了:

1-我认为可行的方法是否可行?我必须通过个人资料创建图片吗?

2-如果方法可行,哪里出错? commond cp是否基于我没有做过的其他事情?

3-如果方法不可行,我该怎么办?自己创建一个图像?

祝你有个美好的一天〜

2 个答案:

答案 0 :(得分:3)

您有泊坞窗图片和泊坞窗容器。那是不同的。

你拉或建立图像。

启动图像时,它将成为正在运行的容器。

图像不是正在运行的容器,因此,您将无法在图像中复制文件。

我不知道你想做什么,但你可能

1)发布图像

docker run ...

2)复制或修改文件

docker ps

显示正在运行的容器,因此您可以

docker cp...

此正在运行的容器中的文件

3)可以使用

保存此修改后的图像

docker commit...

但通常,如果要修改图像,可以修改Dockerfile,这样就可以使用这样的命令轻松构建新图像

docker build -t myuser/myimage:321 .

注意最后一个点,这意味着你使用本地的Dockerfile。

例如,参见Nginx的Dockerfile

https://github.com/nginxinc/docker-nginx/blob/c8bfb9b5260d4ad308deac5343b73b027f684375/mainline/stretch/Dockerfile

答案 1 :(得分:0)

我的目标是通过docker部署python web项目,我想到的第一个方法是:将服务器文件复制到容器并使用python ***.py运行它。

但我没有区分图像和容器。

另外,我还有其他一些方法:

1-构建一个Dcokerfile。通过这种方式,我们可以运行一个像python ***.py这样的其他commond的图像,因为我们可以将commond编写到Dcokerfile中。

2-获取具有正确python版本的图像,并尝试docker run -v $PWD/myapp:/usr/src/myapp -w /usr/src/myapp python:3.5 python helloworld.py,但无需将文件复制到容器中。

如果我可以掌握所有方法,我会选择构建Dcokerfile吗?