目录
[toc]一、docker安装
Mac OS Docker安装
官网地址:https://www.docker.com/ 根据对应版本下载
二、Docker使用
Docker Dockerfile
部署一个java应用为列,Dockerfile 文件编写:
1 | FROM eclipse-temurin:8-jdk-jammy |
FROM: 定制的镜像都是基于 FROM 的镜像, 初始化镜像中的环境
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
shell 格式:
1 | RUN <命令行命令> |
exec 格式:
1 | RUN <命令行命令> |
注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
1 | FROM centos |
以上执行会创建 3 层镜像。可简化为以下格式:
1 | FROM centos |
如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。
开始构建镜像
在 Dockerfile 文件的存放目录下,执行构建动作。
以下示例,通过目录下的 Dockerfile 构建一个 javaWeb:v1(镜像名称:镜像版本)。
docker build -t javaWeb:v1 .
指令详解
- COPY 复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
1 | COPY hom* /mydir/ |
- ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
- ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
- ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
- CMD 类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。 RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
格式:
1 | CMD <shell 命令> |
- ENTRYPOINT 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 –entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
格式:
1 | ENTRYPOINT ["<executeable>","<param1>","<param2>",...] |
可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参,以下示例会提到。
示例:
假设已通过 Dockerfile 构建了 nginx:test 镜像:
1 | FROM nginx |
Docker Compose
docker-compose.yml 配置示例:
1 | # yaml 配置实例 |
推送到镜像:
docker-compose up #控制台启动
docker-compose up -d #后台启动
openjdk-8支持AWT
1 | FROM openjdk:8-jre-alpine3.9 |
三、Docker实例
容器间网络访问工具安装
docker network create –subnet=172.15.0.0/16 tools-net
minio安装
1.拉取镜像
1 | docker pull minio/minio |
2.设置配置并运行镜像
1 | docker run \ |
postgresql安装
1 | docker run --name postgres -v /Users/m_yf/soft/postgresql/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -d -p 5432:5432 postgres:12.4 |
rabbitMq安装
1 | docker run -d --hostname my-rabbit --name rabbit -v /Users/m_yf/soft/rabbitMq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 rabbitmq:3-management |
mysql安装
1 | docker run --restart=unless-stopped -d --name mysql -v /Users/m_yf/soft/mysql/mysql8.0/conf/my.cnf:/etc/mysql/my.cnf -v /Users/m_yf/soft/mysql/mysql8.0/data:/var/lib/mysql -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql |