容器技术 Docker 应用
1. Dockerfile # 1 年内 肯定生产上会使用 90%
FROM alpine # 构建自己镜像的一基础镜像
LABEL key1=value1 # 给镜像添加元数据信息的
ADD src dist # 把宿主机的文件,复制到镜像中,并且支持直接解压
COPY src dist 通上,但是不支持自动解压,官方推荐
WORKDIR dir # 指定了再构建镜像的时候的工作目录(切换执行命令时的当前目录)
USER user_name # 是指定了在构建镜像过程中执行指令的用户,用户必须存在
HEALTHCHECK test CMD 健康检查的 shell 命令 # 用于检查容器内部服务是否健康
ONBUILD COPY . / # 当其他镜像以 此镜像作为基础镜像时,所要执行的命令
ENTRYPOINT /docker-entrypoint.sh # 执行运行容器时候的默认命令,
# 不会被覆盖掉
CMD # 执行运行容器时候的默认命令或者参数,会被运行容器时候的命令覆盖掉
# ENTRYPOINT CMD
2. docker compose 生产上使用率 40%
docker-compose 单机容器编排工具,不能跨主机
k8s 多机集群的容器编排工具,可以跨主机
docker-compose.yml
属性:
version: "3" # 版本号,不用的版本支持不同的属性
services:
redis: # 声明的服务名,本质上是一个容器
image: redis:alpine
# build: ./dir # 指定了构建镜像的 Dockerfile 目录所在的位置
ports:
- "6379:6379" # 宿主机端口:容器端口
command: redis-server # 执行的默认命令,一般不需要
environment:
key1: value1
KEY2: value2
healthcheck:
test: CMD redis-cli ping && echo 0 || echo 1
interval: 3s
timeout: 4s
retries: 3
networks:
- net1
- net2
networks:
net1:
net2:
一、顶级 Volumes
映射本地目录到容器目录下
1.配置
[root@Docker ~]# mkdir volumes
[root@Docker ~]# cd volumes/
[root@Docker volumes]# vim docker-compose.yml
[root@Docker volumes]# cat docker-compose.yml
version: "3.8"
services:
web1:
image: nginx
volumes:
- type: bind # bind volume tmpfile
source: /root/volumes/nginx/index.html
target: /usr/share/nginx/html/index.html
- type: bind
source: ./nginx/conf/default.conf
target: /etc/nginx/conf.d/default.conf
[root@Docker volumes]# mkdir -p nginx/conf
[root@Docker volumes]# vim nginx/index.html
[ro