在我们了解了Docker的简单使用之后,我们现在去部署它
Dockerfile(构建镜像)
dockerfile是一个文本文件,包含了一条条指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
基本命令
Code | Description |
---|---|
From | 设置镜像使用的基本镜像 |
MAINTAINER | 设置镜像的作者 |
RUN | 编译镜像时运行的脚本 |
CMD | 设置容器的启动命令 |
LABEL | 设置镜像的标签 |
EXPOESE | 设置镜像暴露的端口 |
ENV | 设置容器的环境变量 |
ADD | 编译镜像时复制文件到镜像中 |
COPY | 编译镜像时复制文件到镜像中 |
ENTRYPOINT | 设置容器的入口程序 |
VOLUME | 设置容器的挂载卷 |
USER | 设置运行RUN CMD ENTRYPOINT的用户名 |
WORKDIR | 设置RUN CMD ENTRYPOINT COPYADD指令的工作目录 |
ARG | 设置编译镜像时加入的参数 |
ONBUILD | 设置镜像的ONBUILD指令 |
STOPSIGNAL | 设置容器的退出信号量dn. |
使用Dockerfile构建镜像
docker build -f ./xxx-dockerfile(文件路径) -t 镜像名称:版本
# -f 指定当前dockerfile文件的路径
# -t 指定新的镜像的名称
Docker Compose
Docker-compose 是一个定义和运行多个 Docker 应用的工具,你可以使用YMAL文件来配置你的服务,然后使用docker-compose 命令,创建和启动、编排所有你配置的的服务。
#官网举例
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
参数解释
Code | Description |
---|---|
version | 目前有三个版本分别为Version 1,Version 2,Version 3 |
以下参数包含在services 中 | |
image | 指定服务的镜像名称或镜像ID |
build | 可以指定Dockerfile所在文件夹的路径(本地dockerfile) |
commond | 使用command可以覆盖容器启动后默认执行的命令。 |
container_name | 指定容器名称 |
depends_on | 依赖的信息--可以和其他service或者监测信息一起使用 |
- condition | condition: service_started 表示在依赖的服务启动之后,才启动本服务; condition: service_healthy 表示在依赖的服务健康检查通过之后,才启动本服务 condition: service_completed_successfully 表示在依赖的服务成功执行之后,才启动本服务。 |
network_mode | 设置网路模式 |
ports | 对外暴露的端口定义 |
volumes | 挂载路径 用于设置映射路径 |
logs | 日志输出信息 |
healthcheck | |
- test | 检查命令 |
- interval | 健康检查的间隔,默认为 30 秒,单位(h/m/s); |
- timeout | 健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,单位(h/m/s); |
- retries | 当连续失败指定次数后,则将容器状态视为 unhealthy。<br/>和 CMD, ENTRYPOINT 一样,HEALTHCHECK 只可以出现一次,如果写了多个,只有最后一个生效。 |
- start_period | 应用启动期间的健康,检测不计入统计次数,但仍会发生检测 |
常用命令
命令 | 作用 | 示例 |
---|---|---|
docker-compose up | 启动docker-compose | 尾部加上 -d 守护态运行(后台运行) |
docker-compose down | 停止docker-compose | |
docker-compose -f 文件路径 up -d | 指定docker-compose文件启动 | docker-compose -f /usr/test/docker-compose up -d |
docker-compose logs 镜像名 | 查看日志 | docker-compose logs tomcat |
docker-compose logs -f 镜像名 | 监听日志 | 会阻塞再命令窗口 |
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
本文链接:https://www.blog.ycisch.com/archives/735.html