docker容器挂载宿主主机目录的操作方法
#1.从宿主机向容器中复制文件[root@localhost data]# sudo docker cp aa.txt ssh001:/data把当前目录下的aa.txt复制到容器名称为【ssh001】的data目录下#2.有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了关于Docker目录挂载的...
#1.从宿主机向容器中复制文件
[root@localhost data]# sudo docker cp aa.txt ssh001:/data
把当前目录下的aa.txt复制到容器名称为【ssh001】的data目录下
#2.有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了
关于Docker目录挂载的总结
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。
譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
# docker run -it -v /test:/soft centos /bin/bash
这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
貌似简单,其实不然,下面我们来验证一下:
一、容器目录不可以为相对路径
[root@localhost ~]# docker run -it -v /test:soft centos /bin/bash
invalid value "/test:soft" for flag -v: soft is not an absolute path
See 'docker run --help'.
直接报错,提示soft不是一个绝对路径,所谓的绝对路径,必须以下斜线“/”开头。
二、宿主机目录如果不存在,则会自动生成
如果宿主机中存在/test目录,首先删除它
[root@localhost ~]# rm -rf /test
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
启动容器
[root@localhost ~]# docker run -it -v /test:/soft centos /bin/bash
[root@a487a3ca7997 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin soft srv sys tmp usr var
查看宿主机,发现新增了一个/test目录
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var
----------------------------------------------------------------------------------------------------------------------------------
修改某个容器和宿主机的共享目录,以及端口映射
已启动的容器目录挂载
# stop docker server
systemctl stop docker
cd /var/lib/docker/containers/containerId/
vim hostconfig.json
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"2201"}]}
vim config.v2.json
"ExposedPorts":{"22/tcp":{}},"Ports":{"22/tcp":[{"HostIp":"0.0.0.0","HostPort":"2201"}]}
------------------挂载开始------------
vim hostconfig.json
"Binds":["/home/visi/ws/data:/data"]
vim config.v2.json
没挂载"MountPoints":{}
挂载后:
"MountPoints":{"/data":{"Source":"/home/lsl/data","Destination":"/lsl/data","RW":true,"Name":"","Driver":"","Type":"bind","Relabel":"rw","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/lsl/data","Target":"/lsl/data"},"SkipMountpointCreation":false}}
------------------挂载结束------------
# start docker server
systemctl start docker
更多推荐
所有评论(0)