乐趣区

关于docker:docker-系列实践工具

前言

本文将介绍 Docker 的相干工具应用教训,比方 Docker-compose容器编排工具 Portainer 容器可视化治理;以及 DockerFile 的构建。相当于是一套组合拳。让咱们能更轻松、更不便去治理 Docker。

Docker Compose

应用 Docker Compose 有一个益处就是能够通过 配置化 的形式去编排容器。比方咱们以后有 3 个服务,其中 A 依赖于 B,B 依赖于 C,那么咱们就能够在 YML 中应用 depends_on 配置项,来指明对应依赖的服务。使得容器的编排更加人性化。上面列举了下比拟罕用的配置项:

version: "3"
services:
  redis:                             # 服务名
    image: redis:alpine              # 应用的镜像模板
    container_name: my-redis         # 容器名
    hostname: my-redis               # 容器 hostname
    ports:
      - 6379:6379                    # 端口映射
    volumes:                         # 卷映射
      - ./data/redis:/data
    restart: unless-stopped          # 容器重启策略,有 no、always、on-failure、unless-stopped 选项
    depends_on:
      - database                     # 依赖的服务
  database:
    image: postgres:latest
    volumes:
      - "/localhost/postgres.sock:/var/run/postgres/postgres.sock"
      - "/localhost/data:/var/lib/postgresql/data"

当 YML 配置文件筹备好后,咱们就能够应用 docker-compose up命令来启动运行容器了。如果想 stop 容器,能够应用 docker-compose down 则会把以后 YML 文件里的容器服务都进行掉。

Portainer

Portainer 能够帮忙咱们 可视化 的治理容器,而不须要到主机里一个一个命令的查看容器信息。治理的内容包含了 Docker 容器imagesvolumenetwork 等罕用性能。

Portainer 服务咱们能够应用上面的 YML 文件来创立:

version: '2'
services:
  portainer:
    image: portainer/portainer
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
volumes:
  portainer_data:

当 Portainer 容器启动完后,咱们能够拜访 9000 端口,进入到如下的治理界面了:

能够看到,Portainer 这个管理工具十分的齐全,能够说是解脱了咱们的双手,省了很多敲命令的工夫。

DockerFile 的构建

下面的两个让容器的编排和治理更加的简洁不便,但咱们还有一个要害因素:镜像。咱们常常须要编写 DockerFile 以便能 build 和 push 一个自定义镜像到仓库核心。

对于 DockerFile,这里简略介绍下相干命令:

  • FROM:要定制的根底镜像,相当于根底零碎环境,例如 centosalpine
  • RUN:要执行的命令
  • .:这里是指上下文门路,不便打包指定的文件给 docker 引擎应用
  • COPY:从上下文目录中复制文件或者目录到容器里指定门路
  • ADD:和 COPY 的相似
  • CMD:和 RUN 相似,只是 CMD 在 docker run 时运行,RUN 在 docker build 运行
  • ENV:环境变量
  • EXPOSE:要裸露的端口
  • WORKDIR:工作目录,容器启动时执行的命令会在该目录下执行

例如,一个 Dockerfile 如下:

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

这样就能够制作一个对于 python 的镜像了。

当咱们在构建 DockerFile 时,应尽量的让镜像大小降到最低,要抉择适合的根底镜像,不增加多余的货色。

就像下面的 python 就不须要携带文本编辑器了。另外,如果镜像的依赖关系简单,尽量应用多阶段构建,也就是 COPY –from 之前阶段的成绩。这样的话能够让咱们的构建思路比拟清晰明了。对于多阶段的构建,能够看看官网的这篇:多阶段构建。

总结

docker 的炽热衍生出了很多其余管理工具,让咱们的生产力进步很多,像除了 docker-compose 外还有 Docker MachineDocker Swarm 等。当然,大多数时候,下面提及到的曾经够用了,大伙也能够自个深入研究。


感兴趣的敌人能够搜一搜公众号「阅新技术」,关注更多的推送文章。
能够的话,就顺便点个赞、留个言、分享下,感激各位反对!
阅新技术,浏览更多的新常识。

退出移动版