Docker进阶
Docker进阶
volume
匿名绑定
1
docker run -d --name nginx --rm -p 80:80 -v /usr/share/nginx/html nginx
容器删除后数据卷会随之删除
实名绑定
1
docker run -d --name nginx --rm -p 80:80 -v nginx:/usr/share/nginx/html nginx
容器删除后数据卷不会删除
文件夹映射
1
docker run -d --name nginx --rm -p 80:80 -v /www/nginx:/usr/share/nginx/html nginx
Network
bridge模式
可以使用--link
单向链接到指定容器
Host模式
container模式
自定义网络
1
docker network create --driver bridge --subnet 10.1.2.0/24 --gateway 10.1.2.1 demo
1
docker run -itd --network demo --rm --name centos1 centos
两台容器都链接上互相ping:
不同网络的链接问题
本质上相当于为容器1新链接了一个网卡
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 基础镜像
FROM centos
# 作者信息
MAINTAINER masterke<masterke.cn>
# 标签
LABEL version="1.0"
LABEL description="我的第一个Dockerfile"
# 环境变量
ENV JAVA_ENV=dev APP_NAME=test
# 要执行的shell命令
RUN mkdir -p /www/dockerfile/test
# 将主机指定文件复制到容器目标位置
ADD /etc/hosts /etc/hosts
# 设置容器中的工作目录,如果目录不存在将会自动创建
WORKDIR /the/workdir/path
RUN pwd
# 数据卷绑定
VOLUME [ "/www/docekrfile/test" ]
# 暴露端口
EXPOSE 80/tcp
# CMD(会被覆盖)和ENTRYPOINT(不会被覆盖)任选其一,构建完成后执行的命令
CMD ping 127.0.0.1
ENTRYPOINT ping 127.0.0.1
Registry
阿里云私有镜像服务
1
https://cr.console.aliyun.com/cn-hangzhou/instances
Harbor镜像仓库
Nexus镜像仓库
Docker-compose
https://www.runoob.com/docker/docker-compose.html
1
2
3
4
5
6
7
8
9
10
11
12
version: '1.0'
services:
nginx-demo:
image: nginx:latest
container_name: my_nginx
restart: always
ports:
- 80:80
volumes:
- /opt/nginx:/usr/share/nginx/html
environment:
- APP_ENV=dev
本文由作者按照
CC BY 4.0
进行授权