#在容器内创建一个数据卷
docker run -d --name test -v /dbdata ubuntu #-v 可以在容器中创建一个数据卷#创建一个数据卷容器testdb,并在其中创建一个数据卷挂载到/dbdata
docker run -it -v /dbdata -name testdb ubuntu
#在其他容器中使用--volunmes-from来挂载testdb的数据卷
docker run -it--volumes-from testdb --name db1 ubuntu#此时任何一方在目录下写入,其他容器都能看到#利用数据卷容器迁移数据#备份
docker run--volumes-from testdb -v $(pwd):/backup --name worker ubuntu#--volumes-from testdb挂载testdb的数据卷; $(pwd):/backup挂载本地的当前目录到容器的/backup
tar cvf /backup/backup.tar /dbdata
#worker容器启动会,将/dbdata内容备份到容器/backup/backup.tar,即宿主机的backup目录下#恢复#先创建一个带有数据卷的容器
docker run -v /dbdata --name testdb2 ubuntu /bin/bash#创建一个新的容器,挂载testdb2的容器
docker run--volumes-from testdb2 -v $(pwd):/backup --name test ubuntu
tar xvf /backup/backup.tar 解压
网络基础配置
#端口映射访问内部容器
docker run -d -P centos
#使用-P(大写)标记时,Docker会随机映射一个49000-49900的端口至容器内部开放的网络端口,访问宿主机映射端口即可访问容器内部应用#使用-p(小写),可以指定要映射的端口 docker run -d -p 5000:5000 -p 3000:50 centos#映射宿主机5000端口到容器5000端口,可以使用多个-p绑定多个端口#支持的格式有以下三种:#映射指定地址到指定端口
ip:hostPort:containerPort #如:127.0.0.1:5000:5000#映射指定地址的任意端口
ip::containerPort #本地主机会自动分配一个端口,如:127.0.0.1::5000#映射所有接口地址
hostPort:containerPort #此时默认绑定本地所有接口上的所有地址如:5000:5000#查看映射端口配置
docker port $(container name) 端口
#容器有自己内部的网络和ip地址,查看信息
docker inspect $(container id)
#容器互连
docker run -d -P --name test --link testdb:db ubuntu#--link参数格式为name:alias 其中name是要连接的容器名称,alias是这个连接的别名
使用Dockerfile创建镜像
Dockerfile指令:
(1) FROM(指定基础image)
构建指令,必须指定且需要在Dockerfile其他指令的前面。后续的指令都依赖于该指令指定的image。
FROM指令指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。
该指令有两种格式:
FROM <image>
指定基础image为该image的最后修改的版本。
FROM <image>:<tag>
指定基础image为该image的一个tag版本。