这里以我安装的jenkins为例,一开始安装命令:
docker run -p 8080:8080 -p 50000:50000 --name jenkins -v /usr/share/jenkins/data:/var/jenkins_home jenkins
现在想把他改为var/jenkins_home;
方式一:修改配置文件(需停止docker服务)
步骤:
1、查看容器id
2、关闭服务
3、修改配置文件
vim /var/lib/docker/containers/container-ID/config.v2.json
这里是单一行文件,修改起来比较复杂,可以把它拉取出来修改完再覆盖回去,或者用vim 搜索。这里不展开说明。
修改配置文件中的目录位置,然后保存退出。
4、启动docker
systemctl start docker
方式二:提交现有容器为新镜像,然后重新运行它
1、查询容器
docker ps -a
2、提交容器为新镜像
docker commit 容器名|容器id 新镜像名
3、重新run一个新容器
docker run -p 8080:8080 -p 50000:50000 --name newjenkins -v /var/jenkins_home:/var/jenkins_home newjenkins
具体如下图:
方式三:(不推荐、复杂)
1、查看docker容器,记下command
docker ps -a
2、export容器
docker container export -o ./myimage.docker 容器ID
3、import容器
docker import ./myimage.docker newimagename
4、运行容器
docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash
方案三注意
运行导入的镜像必须带command,否则启动会报错:Error response from daemon: No command specified
docker run -d -p 9999:9093 sso:latest java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
具体的command需要在导出容器的时候通过docker ps 查看到
看完整的command的内容: docker ps --no-trunc
注:使用export 导出的是容器,不是镜像,并且和原来的容器存在依赖关系。