我是 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- 如果方法不可行,我该怎么办?自己创建一个图像?
祝你有美好的一天~
你有 docker 镜像和 docker 容器。那是不同的。
您拉取或构建映像。
当你启动一个镜像时,它就变成了一个正在运行的容器。
映像不是正在运行的容器,因此,您将无法复制映像内的文件。
我不知道这是否你想要做的,但你可能
1)启动图像
docker run ...
2) 复制或修改文件
docker ps
显示您正在运行的容器,因此您可以
docker cp...
这个正在运行的容器中的一个文件
3)也许可以保存这个修改后的图像
docker commit...
但是通常情况下,如果你想修改一个镜像,你就修改了 Dockerfile,这样你就可以很容易地用这样的命令构建一个新的镜像
docker build -t myuser/myimage:321 .
注意最后一个点,它表示您使用本地的 Dockerfile。
参见例如 Nginx 的 Dockerfile
| 归档时间: |
|
| 查看次数: |
3550 次 |
| 最近记录: |