方式一:修改配置文件(需停止docker服务)
修改配置
在宿主机中修改容器配置文件
vim /var/lib/docker/containers/[container-ID]/config.v2.json
找到
MountPoints
修改
"MountPoints":{
"/home":{
"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{
"Type":"bind","Source":"//docker/","Target":"/home"}}}
解释
"MountPoints":
{
"/home": # 容器目录
{
"Source":"/docker", # 宿主机目录
"Destination":"/home", # 描述
"RW":true, # 读写
"Name":"","Driver":"","Type":"bind","Propagation":"rprivate",
"Spec":{
"Type":"bind","Source":"//docker/","Target":"/home"}
}
}
重启docker服务
如果容器正在运行中,首先停止运行的容器
docker stop <container-ID>
重启docker服务
systemctl restart docker
启动指定容器
docker start <container-ID>
方式二:提交现有容器为新镜像,然后重新运行它
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a3422cseedd ubuntu:14.04 "/bin/bash" About a minute ago Exited (0) About a minute ago agitated_newton
$ docker commit 5a3422cseedd <newimagename>
$ docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 <newimagename> /bin/bash
然后停止旧容器,并使用这个新容器。如果需要新容器使用旧名称,在删除旧容器后使用docker rename,修改新的容器名称为之前的名称。
方式三:export容器为镜像,然后import为新镜像
$docker container export -o ./myimage.docker <container-ID>
$docker import ./myimage.docker <newimagename>
$docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 <newimagename> /bin/bash
然后停止旧容器,并使用这个新容器。如果需要新容器使用旧名称,在删除旧容器后使用docker rename,修改新的容器名称为之前的名称。
启动时挂载本地磁盘
docker run -it -d -v /storage:/home/test <container-ID> /bin/bash
启动时端口映射
docker run -it -d -p 127.0.0.1:5000:5000 <container-ID> /bin/bash
docker容器启动后,添加容器端口映射
iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8080