Docker简介
#是什么: 类似redis的RDB和AOF,(更通俗的说相当于移动硬盘) #能干什么 1、容器的持久化 2、容器间继承+持久化 #怎么用 1、直接命令添加(-v) #docker run -v 宿主机目录:容器目录 镜像名 (docker run -it 镜像名, 对比这个记忆) 例: docker run -it -v /myVolume:/containVolume centos 1.1给容器设置只读权限(主机可以修改,容器只读) docker run -v 宿主机目录:容器目录:ro 镜像名 read-only docker run -it -v /myVolume:/containVolume:ro centos 2、DockerFile添加
二、使用
1、命令添加
[root@linuxxx ~]# docker run -it -v /myVolume:/containVolume centos #可以自动新建目录 #执行完这句话后,已经产生了绑定关系, 可以使用docker inspect ID查看 Volumes或hostconfig 分别在容器和host端进入相应的文件 [root@linuxxx /]# cd myVolume/ #原生Linux端,主机 [root@linuxxx myVolume]# cat b.txt a123qwer [root@f3c17a0046ed /]# cd containVolume/ #容器端 [root@f3c17a0046ed containVolume]# vi b.txt #结论:无论是主机还是容器创建文件也好,修改文件也好,都能共享资源 -------------------------------------- #当容器退出后,重新连接之前的这段时间,主机的修改,是否对容器有效 [root@c23bbbea6835 /]# exit exit #来到主机, [root@linuxxx myVolume]# touch c.txt [root@linuxxx myVolume]# vi c.txt #添加123 #来到容器,并重新登陆 [root@linuxxx ~]# docker ps -l #拿到ID, [root@linuxxx ~]# [root@linuxxx ~]# docker start f3c17a0046ed #运行容器 f3c17a0046ed [root@linuxxx ~]# docker attach f3c17a0046ed #进入容器 [root@f3c17a0046ed /]# [root@f3c17a0046ed /]# cd containVolume/ #进入绑定的文件 [root@f3c17a0046ed containVolume]# [root@f3c17a0046ed containVolume]# ll total 8 -rw-r--r--. 1 root root 9 Aug 6 11:40 b.txt -rw-r--r--. 1 root root 4 Aug 6 11:50 c.txt [root@f3c17a0046ed containVolume]# cat c.txt 123 结论:容器推出后,仍然与主机资源共享
2、DockerFile添加
#上面的命令添加模式,只支持宿主机与容器数据的共享 #由于宿主机目录依赖特定的宿主机,不能保证所有的宿主机都存在特定的目录 用法: 1、根目录下创建mydocker文件夹并进入 2、可在Dockerfile中使用 VOLUME 指令来给镜像添加一个或多个数据卷 3、build后生成镜像, 4、run 容器
[root@linuxxx ~]# mkdir /mydocker #创建文件夹 [root@linuxxx ~]# cd /mydocker/ #进入文件夹 [root@linuxxx mydocker]# vi Dockerfile #编写 --------------------------------------------------- #valume test #编写内容 FROM centos VOLUME ["/datavolume1","/datavolume2","/datavolume3",] CMD echo "finished,--------sucess1" CMD /bin/bash ------------------------------------------------------- #绑定 [root@linuxxx mydocker]# docker build -f /mydocker/Dockerfile -t pdun/centos . [root@linuxxx mydocker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pdun/centos latest 751b5f9475e5 3 minutes ago 202MB [root@linuxxx mydocker]# docker run -it pdun/centos #可以查看是否成功创建这两个容器 [root@3c1a4034ed22 /]# ll drwxr-xr-x. 2 root root 6 Aug 6 14:02 datavolume1 drwxr-xr-x. 2 root root 6 Aug 6 14:02 datavolume2 #进入容器,创建文件 [root@3c1a4034ed22 /]# cd /datavolume1 [root@3c1a4034ed22 datavolume1]# pwd /datavolume1 [root@3c1a4034ed22 datavolume1]# touch contioner01.txt ------------------------------------------------------------------------ 我们没有创建主机,主机从何而来 让我们打开一个新的终端 [root@linuxxx ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c1a4034ed22 pdun/centos "/bin/sh -c /bin/bash" 8 minutes ago Up 8 minutes angry_aryabhata c44b284600fd redis "docker-entrypoint.s…" 5 hours ago Up 5 hours 6379/tcp vibrant_spence [root@linuxxx ~]# [root@linuxxx ~]# docker inspect 3c1a4034ed22