docker基础
容器基础
1、docker修改容器存储路径
1.1、软链接
默认情况下Docker的存放位置为:/var/lib/docker
通过下面命令查看具体位置
sudo docker info | grep "Docker Root Dir"
解决这个问题,最直接的方法是挂载分区到这个目录,但是我的数据盘还有其他东西,不好管理,所以采用修改镜像和容器的存放路径的方式达到目的。这个方法里将通过软连接来实现。
1.1.1、停掉Docker服务
systemctl stop docker
或者
service docker stop
1.1.2、移动整个/var/lib/docker目录到目的路径
mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker
这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,可以在数据盘上看到容量变化。
1.2、修改镜像和容器的存放路径
指定镜像和容器存放路径的参数是--graph=/var/lib/docker,只需要修改配置文件指定启动参数即可。
Docker的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致
在Ubuntu中的位置是:/etc/default/docker
在CentOS中的位置是:/etc/sysconfig/docker
如果是CentOS则添加下面这行
OPTIONS=--graph="/root/data/docker" --selinux-enabled -H fd://
如果是Ubuntu则添加下面这行(因为Ubuntu 默认没开启 selinux)
OPTIONS=--graph="/root/data/docker" -H fd://
# 或者
DOCKER_OPTS="-g /root/data/docker"
最后重新启动,Docker 的路径就改成/root/data/docker了
2、容器/镜像导入导出及备份
2.1、容器导出export /导入 import
格式:docker export CONTAINER(容器)
使用docker ps -a查看本机已有的容器
将容器furious_bell保存为一个文件myunbuntu-export-1204.tar
docker export furious_bell > /home/myubuntu-export-1204.tar
导出完成后,使用 import 导入
docker import - /home/myubuntu-export-1204.tar
2.2、镜像保存save /加载 load
格式:docker save IMAGE(镜像)
使用docker images查看本机已有的镜像
也可以使用docker commit <CONTAIN-ID> <IMAGE-NAME>命令把一个正在运行的容器保存为镜像
提交容器为新镜像
docker commit e6908b6bbebe zabbix
把基础镜像ubuntu:12.04保存为一个文件myubuntu-save-1204.tar
docker save 9610cfc68e8d > /home/myubuntu-save-1204.tar
没有任何warn信息就表示保存OK。9610cfc68e8d 是镜像ID
现在可以在任何装 docker 的地方加载刚保存的镜像了
docker load < /home/myubuntu-save-1204.tar
2.3、导出 export 与 保存 save 的区别
1、export导出的镜像文件大小 小于 save保存的镜像
2、export导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);
而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。查看方式:docker images –tree
注:导入加载进来觉得不合适可以使用docker rm 容器ID 、 docker rmi 镜像ID 来删掉。
移除所有的容器和镜像:
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)
导入后没有镜像信息
docker save 0248eeb807c7 > /root/basemysql.tar
docker load < /root/basemysql.tar
导入后有镜像信息
docker save -o /root/basemysql.tar docker.io/mysql:5.6
docker load < /root/basemysql.tar
批量加载镜像
for i in `ls /root/*.tar`; do docker load < $i; done
3、容器复制
解决生产mysql 复制到临时slave1的问题
4、容器固定IP
http://blog.csdn.net/tzm1921995/article/details/52526661
5、数据共享容器
docker volume
http://dockone.io/article/128
http://www.cnblogs.com/sammyliu/p/5932996.html
https://www.cnblogs.com/sammyliu/p/5932996.html
https://docs.docker.com/engine/reference/commandline/volume_create/
http://www.ttlsa.com/docker/docker-swarm-deploy-services/
http://dockone.io/question/24
k8s
代码 里写dockerfile maven构建完 做成docker镜像传到harbor里 然后 k8s更新
swarm
用volume尝试
http://www.cnblogs.com/sammyliu/p/5932996.html
6、docker容器开机自动启动
网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。
其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 --restart=always 就行。
Bash代码
- sudo docker run --restart=always .....
如果创建时未指定 --restart=always ,可通过update 命令设置
Bash代码
- docker update --restart=always xxx
7、查看容器ip
命令: docker inspect 容器ID
然后过虑出 IPAddress 即可查看 docker 的 IP
docker inspect 容器ID | grep IPAddress

浙公网安备 33010602011771号