一、数据卷管理
写时复制
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
只有当需要修改时才复制一份数据,这种特性被称作 Copy-on-Write。可见,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。
这样就解释了我们前面提出的问题:容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享
挂载卷
docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest
容器内站点目录: /usr/share/nginx/html
echo 'kulong' >/data/index
curl 10.0.122.156
设置共享挂载卷
挂载同一目录
docker run -d -p 8080:80 -v /data:/usr/share/nginx/html nginx:latest
docker 数据卷管理
docker volume ls (查看卷列表)
docker volume create (创建一个简单卷)
docker volume create --name nginx (指定名字)
docker volume inspect nginx (查看卷路径)
创建 Docker 时挂载卷
docker run -d -p 9000:80 -v nginx:/usr/share/nginx/html nginx:latest
echo 'blog.qf.com' >/var/lib/docker/volumes/nginx/_data/index.html
# 宿主机测试
[root@docker01 ~] curl 10.0.0.100:9000
blog.qf.com
Docker 共享卷挂载
docker run -d -P --volumes-from 079786c1e297 nginx:latest
docker run -P (生成随即端口)
docker run -v (指定挂载卷的对应路径 宿主机文件:容器内的文件 以绝对路径的方式 )
二、制作镜像
1、手动制作镜像
docker pull
docker -tag centos[镜像id,name]:[标签]
docker commit ansible centos7-ssh(ansible现在的状态做成image并命名为centos7-ssh)
docker image save centos7-ssh > centos7-ssh.tar.gz(导出)
docker image load -i centos7-ssh.tar.gz(导入)
docker tag centos7-ssh:latest centos7:latest(镜像重命名)
docker rmi centos7-ssh(删除镜像)
docker inspect (容器名称,id) (查看你容器详细信息,ip)
(停止容器)
docker stop (容器名称,id)
docker container inspect (容器名称,id)
(退出,离开容器,容器已stop)
ctrl+p & ctrl+q & exit
导出镜像
进入容器
第一次启动
docker run -it --name node1 centos /bin/bash
下次进入(记得启动容器)
docker exec -it clsn1 /bin/bash