docker基础

容器基础

1docker修改容器存储路径

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信息就表示保存OK9610cfc68e8d 是镜像ID

 

现在可以在任何装 docker 的地方加载刚保存的镜像了

docker load < /home/myubuntu-save-1204.tar

 

2.3导出 export 与 保存 save 的区别

1export导出的镜像文件大小 小于 save保存的镜像

2export导出(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

 

6docker容器开机自动启动

dokcer开机启动restartupdate 

网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。

其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 --restart=always 就行。

 

Bash代码  

  1. sudo docker run --restart=always .....  

 

如果创建时未指定 --restart=always ,可通过update 命令设置

 

Bash代码  

  1. docker update --restart=always xxx  

 

 

7、查看容器ip

命令: docker inspect 容器ID

然后过虑出 IPAddress 即可查看 docker IP

docker inspect 容器ID | grep IPAddress

 

posted @ 2018-08-02 10:18  求其在我  阅读(155)  评论(0)    收藏  举报