1.手动构建镜像
获取一个启动的容器的PID
[root@zabbix ~]# docker inspect --format "{{.State.Pid}}" 0d99c0183d3a
14832
进入到容器的空间里面
[root@zabbix ~]# nsenter --target 14832 --mount --uts --ipc --net --pid
[root@0d99c0183d3a /]#

编写脚本进入到容器内

#!/bin/bash
#entercon.sh
PID
=`docker inspect --format "{{.State.Pid}}" $1` echo $PID nsenter --target $PID --mount --uts --ipc --net --pid

2.Docker数据卷管理

启动镜像

docker run -it --name volume-test1 -h nginx -v /data1 daocloud.io/library/nginx

查看卷的位置

[root@zabbix yum.repos.d]# docker inspect -f {{.Volumes}} volume-test1

map[/data1:/var/lib/docker/vfs/dir/29cc81c40023701c9d152d695d8f15285ee6244eab3d81db6873a036cbf52d14]

map代表的含义是,在容器主机中(通过entercon.sh进入到容器中)生成了一个目录/data1,它和属主机的/var/lib/docker/vfs/dir/29cc81c40023701c9d152d695d8f15285ee6244eab3d81db6873a036cbf52d14这个目录是相通的,你在这里的位置里创建文件,在对应的地方都可以发现。

我们现在需要实现,将本地的文件系统挂载到容器当中去

docker run -it --name=volume-test2 -h nginx -v /opt:/opt daocloud.io/library/nginx

启动一个主机名为nginx的容器daocloud.io/library/nginx,然后命名为volume-test2,这样就将本地的/opt目录挂载到了容器的/opt目录里面去了

 

[root@zabbix ~]# docker run -it --name=volume-test3 -h volume1 -v /volume-test:/volume-test-container daocloud.io/library/nginx

 

[root@zabbix ~]# docker run -it --name=volume-test4 -h volume2 --volumes-from volume-test3 daocloud.io/library/nginx

 docker镜像的构建方式:1,手动构建;2,Dockerfile构建

手动构建的相关命令

docker run --name nginx-man -it centos
docker commit -m "my nginx" xxxxxxxxxxxx zhaoshundong/my-nginx:v2
docker run -d -p 99:80 zhaoshundong/my-nginx:v2 /usr/local/nginx/sbin/nginx

 

posted on 2017-04-12 19:57  Alex0425  阅读(114)  评论(0编辑  收藏  举报