我是码头的新手(集装箱化的东西)。我正在尝试学习GCP (CentOS 7实例)中的docker,并将我的简单交互式python程序进行容器化。我成功地为我的python程序创建了一个坞映像。
我怀疑当我跑的时候
docker运行-it 我的图像名
一个容器被派生出一个名为“classy”的随机名称,我的程序成功地执行了...and,没有问题。
问题是,有没有办法为我现有的容器添加港口和容量,即“古典式-棕色”?
每次我运行这个命令
docker运行-it 我的图像名
创建了一个新容器?我为什么要这么做?
请帮我解决这个问题。
发布于 2019-12-20 02:52:45
不,不能在已经创建的容器上设置卷或端口。您可以使用docker start -it <container_id> or <conatiner_name>多次交互地使用容器。
如果您想在容器上设置一个卷或端口,您应该在容器创建过程中使用这样的码头运行命令;
docker run -p 80:80 -v /home/somedir:/foo --name my_container如果您想一遍又一遍地使用同一个容器,只需使用码头起跑命令即可。
docker start -it my_container请注意,-it可以在docker start或docker run上进行交互访问。如果不想使用tty访问容器,只需省略-it标志即可。
如果您想访问已经运行的容器,可以使用docker exec命令。关于它的更多信息,您可以找到这里。
发布于 2019-12-20 02:29:16
欢迎来到StackOverflow。您可以在启动容器时传递“- name”参数,以给它一个自定义名称。
此外,您可以使用'-p‘选项来公开特定的端口。
看看这个页面,看看所有的docker run选项-
https://docs.docker.com/v17.12/engine/reference/commandline/run/#options
发布于 2019-12-20 08:40:03
可以通过手工编辑iptable规则来添加新的端口映射,但我认为这不是一个好做法。此外,如果您运行docker ps,这个新添加的映射将不可见.
如果您需要将REALY添加端口映射或将卷挂载到您已经在运行的容器中。您可以通过以下方式将此容器提交到图像
docker commit <container-id>停止并移除容器,然后使用-p和-v运行新映像,如下所示:
docker run -p <port-mapping> -v <mount> <commited-image>请注意,如果容器很大(容器层中有大量数据),commit可能会花费很长时间。
不要太依赖这种方法,但是在运行容器之前要三思。
祝好运!
https://stackoverflow.com/questions/59418876
复制相似问题