我是关于码头工的新手,所以,如果有任何错误的想法来自我,请指出它。谢谢〜
我的目标是在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-如果方法不可行,我该怎么办?自己创建一个图像?
祝你有个美好的一天〜
答案 0 :(得分:3)
您有泊坞窗图片和泊坞窗容器。那是不同的。
你拉或建立图像。
启动图像时,它将成为正在运行的容器。
图像不是正在运行的容器,因此,您将无法在图像中复制文件。
我不知道你想做什么,但你可能
1)发布图像
docker run ...
2)复制或修改文件
docker ps
显示正在运行的容器,因此您可以
docker cp...
此正在运行的容器中的文件
3)可以使用
保存此修改后的图像 docker commit...
但通常,如果要修改图像,可以修改Dockerfile,这样就可以使用这样的命令轻松构建新图像
docker build -t myuser/myimage:321 .
注意最后一个点,这意味着你使用本地的Dockerfile。
例如,参见Nginx的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吗?