Docker(二)
数据卷容器
可以共享多个容器之间的volume
docker run -it --name docker02 --volume-from docker01 镜像id
DockerFile
DockerFile就是用来构建docker的镜像的构建文件
FRoM centos
VOLUME ["volume01", "volume02"]
CMD echo "----end----"
CMD /bin/bash
构建步骤:
- 编写一个dockerfile文件
- docker build构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(dockerhub,阿里云镜像仓库)
基础知识:
- 每个保留关键字(指令)都必须是大写字母
- 执行从上到下顺序执行
- 每个指令都会创建提交一个新的镜像层,并提交
Dockerfile指令
FROM # 基础镜像
MAINTAINER # 镜像是谁写的,姓名 + 邮箱
RUN # 镜像构建的时候,需要运行的命令
ADD # 添加内容(可以自动解压)
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOST # 指定对外的端口
CMD # 指定这个容器启动时,要运行的命令: 只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动时,要运行的命令: 可以追加命令
ONBUILD # 当构建一个被继承DokerFile,这个时候会触发ONBUILD的指令
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建时设置环境变量
通过Dockerfile,创建镜像
docker build -f mydockerfile -t mycentos:1.0 .
Docker网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-06xrawXM-1603112128976)(/Users/liche/Documents/java/docker/image-20201019190230816.png)]
# centos中ip addr命令后出现一对一对的网卡信息(eth开头的)
# evth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段碧玺相连
# 充当一个桥接,连接各种虚拟网络设备
–link
# run tomcat03时加上 --link
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 --link tomcat01 tomcat
# tomcat02可以ping通tomcat01(反过来则不行)
docker exec -it tomcat02 ping tomcat01
# 查看hosts配置
# --link 就是在hosts配置中添加一个172.17.0.3
# 现在docker已经不建议使用 --link,它不支持容器名连接访问
自定义网络
# 查看素有的docker网络
docker network ls
网络模式
bridge : 桥接docker
none : 不配置网络
host : 和宿主机共享网络
container: 容器网络连通
# 创建网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 用mynet创建容器
docker run -d -P --name tomcat-net-01 --net mynet tomcat
docker run -d -P --name tomcat-net-02 --net mynet tomcat
# 查看mynet的Containers,可以查看到tomcat-net-01,tomcat-net-02网络信息
docker network inspect mynet
自定义的网络docker都已经帮我们维护好了对应的关系(推荐用这种方式)
优点:
redis - 不同的集群使用不同的网络,保证集群是安全和健康的(各集群使用不同的网段)
mysql - 不同的集群使用不同的网络,保证集群是安全和健康的(各集群使用不同的网段)
容器网络其他连通
docker network connect mynet tomcat01