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

big*_*ang 3 centos docker

我是 docker 新手,所以,如果我有任何错误的想法,请指出。谢谢~

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

于是,我想到了三个步骤:

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

1-获取泊坞窗图像。

我是这样尝试的:docker pull centos,这样我就可以得到一个基于centos的图像。这里,我不关心centos的版本,当然,它的版本是6.7或者,只是标记为:最新。

在这里,我检查图像docker images,我可以看到它是这样的:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              d123f4e55e12        3 weeks ago         196.6 MB
Run Code Online (Sandbox Code Playgroud)

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

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

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

fordocker 包含网络服务器文件。

我尝试这样的共同点(基于指南):

docker cp fordocker/ d123f4e55e12:/web
Run Code Online (Sandbox Code Playgroud)

但!错误来了:

Error response from daemon: No such container: d123f4e55e12
Run Code Online (Sandbox Code Playgroud)

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

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

我搜索了很多,但没有解释这种现象。

似乎每个人,除了我,使用公用设施都会成功。

那么,问题来了:

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

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

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

祝你有美好的一天~

use*_*097 5

你有 docker 镜像和 docker 容器。那是不同的。

您拉取或构建映像。

当你启动一个镜像时,它就变成了一个正在运行的容器。

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

我不知道这是否你想要做的,但你可能

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