注意:在容器内修改文件是不推荐的。
1.修改不方便,比如vi命令都无法使用。
2.容器内修改,没有日志记录的。
问题:那应该如何修改容器中的文件呢?
数据卷
volume是一个虚拟目录,指向宿主机文件系统中的某个目录。
数据卷的作用
将容器和数据分离,解耦合,方便操作容器内的数据,保证数据安全。
数据卷的命令
docker volume 命令的使用
创建数据卷命令:
docker volume create 数据卷名称
列出所有的数据卷命令:
docker volume ls
查看某个数据卷的命令:
docker volume inspect 数据卷名称
删除没有使用的数据卷命令:
docker volume prune
删除指定名称的数据卷命令:
docker volume rm 数据卷名称
将数据卷挂载到容器中
通过-v参数来挂载
docker volume create html
docker volume ls
docker volume inspect html
docker run --name mynginx -p 8080:80 -d -v html:/usr/share/nginx/html nginx
/var/lib/docker/volume/html/_data 映射 nginx容器内部目录 /usr/share/nginx/html
可以发现:目录下多出两个文件,更容器内目录下的文件一样。
这个时候就可以在宿主机目录下方便的对文件进行修改了。
如果容器创建并启动的时候-v指定的数据卷不存在,docker容器很智能,会自动的帮你创建数据卷。
案例:创建并运行一个mysql容器,将宿主机目录直接挂载到容器
挂载语法
-v [宿主机目录]:[容器目录]
-v [宿主机文件]:[容器内文件]
docker run \
-p 13305:3306 \
--name mysql5x \
--privileged=true \
--restart always \
-v /tmp/mysql/conf/xmy.cnf:/etc/mysql/conf.d/xmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.25