容器管理数据两种方式
- 数据卷:容器内数据直接映射到本地主机
- 数据卷容器:使用特定容器维护数据卷
数据卷特性
将主机目录直接映射进容器
- 数据卷可以在容器间共享和重用
- 对数据卷内数据修改立马生效,无论容器内操作or本地操作
- 对数据卷更新不影响镜像,解耦开应用和数据
- 卷会一直存在,直到没有容器使用,可以安全卸载
volume子命令
run 的–mount选项
数据卷容器
背景:多个容器间共享一些持续更新的数据 使用数据卷容器
# 先创建个数据卷容器dbdata,并建个数据卷挂载到/dbdata
docker run -it -v /dbdata --name dbdata ubuntu
# 其他容器中使用--volumes-from来挂载dbdata容器中的数据卷
docker run -it --volume-from dbdata --name db1 ubuntu
docker run -it --volume-from dbdata --name db2 ubuntu
可从多个容器挂载多个数据卷,还可以从已经挂载了容器卷的容器来挂载数据卷
迁移数据
备份
使用如下命令备份dbdata数据卷
恢复
端口映射与容器互联
端口映射实现容器访问
从外部访问容器应用
-P # 随机选个端口映射49000~49900
-p 则可以指定映射端口,一个指定端口绑定一个容器支持格式
IP:PORT:ContainerPort 或 IP::ContainerPort 或 hostport:ContainerPort
例子
docker run -p 4000:5000 training/webapp python app.py
# 可以使用udp标记指定udp端口
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
# 查看端口映射
docker port image_name 5000
互联机制实现便捷互访
接收容器通过容器名快速访问到源容器,不用指定具体ip
容器互联
使用–link参数
docker run -d -P --name web --link db:db training/webapp python app.py # --link name:alias name为要链接的容器的名称
docker通过两种方式为容器公开连接信息:
更新环境变量:env命令
更新/etc/hosts文件: