修改端口映射

如果只是将docker容器当作是虚拟机使用,日常在其上进行开发工作而不是将其当作是一个运行环境使用的话,常常在一开始创建容器的时候无法预计自己将来会用到哪些端口,因此可能需要后期对端口映射进行修改,一般采取下面两种方法:

需要重启docker服务的方法

  容器的配置文件路径一般为:
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
  其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)

然后打开对应容器的hostcofig.json文件,注意这里进入那个目录需要以root身份进入,因此需要切换至root身份。

直接使用搜索命令搜索PortBindings,然后修改里面的内容

格式如下:

修改完成后需要重启docker。
(可能只需要重启容器即可,不需要重启docker服务,没有经过验证)

利用docker commit新构镜像

不需要重启docker的方法,但是对于体积较大的docker可能比较耗时
而且到时候各种镜像管理起来会比较混乱
但是不会影响其他正在运行的容器

docker commit:把一个容器的文件改动和配置信息commit到一个新的镜像。这个在测试的时候会非常有用,把容器所有的文件改动和配置信息导入成一个新的docker镜像,然后用这个新的镜像重起一个容器,这对之前的容器不会有任何影响。
1. 先将需要修改的容器stop,然后commit成一个单独的镜像
2. 用前一步新生成的镜像重新起一个容器

修改启动配置参数

Docker 命令修改

docker container update --restart=always 容器名字

直接改配置文件

  1. 停止容器,不然无法修改配置文件(可能需要停止docker)
  2. 配置文件路径为:/var/lib/docker/containers/容器ID
  3. 在该目录下找到一个文件 hostconfig.json ,找到该文件中关键字 RestartPolicy
  4. 修改前配置:
"RestartPolicy":{"Name":"no","MaximumRetryCount":0}
  1. 修改后配置:
"RestartPolicy":{"Name":"always","MaximumRetryCount":0}
  1. 最后启动容器

修改docker容器的挂载路径

  1. 停止docker服务
sudo systemctl stop docker
  1. 编辑配置文件
sudo vim /var/lib/docker/containers/container-ID/config.v2.json
 "MountPoints":{
     "/home":{
         "Source":"/docker",
         "Destination":"/home",
         "RW":true,
         "Name":"",
         "Driver":"",
         "Type":"bind",
         "Propagation":"rprivate",
         "Spec":{
             "Type":"bind",
             "Source":"//docker/",
             "Target":"/home"
         }
     }
 }
  1. 启动docker服务
sudo systemctl start docker

4、启动docker容器

sudo docker start <container-name/ID>

修改容器的共享内存shm

  1. 停止容器,不然无法修改配置文件(可能需要停止docker)
  2. 配置文件路径为:/var/lib/docker/containers/容器ID
  3. 在该目录下找到一个文件 hostconfig.json ,找到该文件中关键字 shmsize,其中这个数字的单位是Byte,所以如果你想将共享内存的值设置为8G的话,需要改成
    $$ 8 \times 1024 \times 1024 \times 1024 = 2^{33} = 8589934592 $$

4. 重启docker和容器

待续 2019-10-25 10:45:49 星期五

最后修改日期:2019年10月31日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。