Docker速学(四) 编排、集群和常见命令总结
我们之前介绍了Docker学习的基本方法和原理,以及基础三大件:镜像、容器、仓库。还有Dockerfile和数据卷等等,如果你对前面的内容还不了解,可以进行再次回顾。
预览:
Docker小白入门建议及基本原理介绍
Docker速学(一) 镜像和容器
Docker速学(二) Dockerfile和数据卷
Docker速学(三) 网络、用户和进程
这篇内容是Docker速学系列的最后一篇内容,对docker的编排、集群做了梳理,在文章最后,还总结了一些常见的命令。
让我们开始今天的内容吧!
编排
编排就是将多个运行的容器串联起来,最常见的编排工具是 Docker Compose。
范例
下面是 OnlyOffice 安装所用的 docker-compose 配置文件:
version: '2' services: onlyoffice-communityserver: container_name: onlyoffice-communityserver image: onlyoffice/communityserver:latest environment: - MYSQL_SERVER_HOST="127.0.0.1" - MYSQL_SERVER_PORT="3306" - MYSQL_SERVER_DB_NAME="onlyoffice" - MYSQL_SERVER_USER="onlyoffice" - MYSQL_SERVER_PASS="123456" - DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-documentserver stdin_open: true restart: always networks: - onlyoffice volumes: - /data/wwwroot/onlyoffice/CommunityServer/logs:/var/log/onlyoffice - /data/wwwroot/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data - /data/wwwroot/onlyoffice/CommunityServer/DocumentServer/data:/var/www/onlyoffice/DocumentServerData ports: - '80:80' - '443:443' - '5222:5222' onlyoffice-documentserver: container_name: onlyoffice-documentserver image: onlyoffice/documentserver:latest stdin_open: true restart: always networks: - onlyoffice ports: - '9002:80' - '9003:443' volumes: - /data/wwwroot/onlyoffice/DocumentServer/logs:/var/log/onlyoffice - /data/wwwroot/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data networks: onlyoffice: driver: 'bridge'
注意:
- volumes 设置中的前面部分是宿主机的目录,后面是容器的目录,宿主机的目录无需提前创建
- 容器可以很方便的连接宿主机创建的数据库,上面的onlyoffice-communityserver中的MySQL连接配置就是宿主机连接范例
指令用法
下面重点描述重要指令的用法:
command
command 指令会覆盖 Dockerfile 中定义的 CMD 变量对应的值。
例如: command: bundle exec thin -p 3000
除了支持上述单一指令之外,也支持多指令的编写。
多指令
version: '3.1' services: db: image: postgres web: build: . command: - /bin/bash - -c - | python manage.py migrate python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db
以上编排中的 command 相当于 docker run 下的:command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
如果多指令涉及变量,也可以写成:
command: - /bin/bash - -c - | var=$$(echo 'foo') echo $$var # prints foo
entrypoint
entrypoint 用法与 command 类似,也支持多命令。
集群
容器技术不仅仅可以运行在单台宿主机上,它也支持运行在多个主机集群上。有两种类型的流行集群工具:
- Docker Swarm:Docker 官方出品的容器的集群和调度工具。借助 Swarm,IT 管理员和开发人员可以将 Docker 节点集群建立和管理为单个虚拟系统。
- Kubernetes(k8s):跨主机集群的自动部署、扩展以及运行应用程序容器的开源平台,这些操作包括部署,调度和节点集群间扩展。
常见命令
下面是使用Docker可能需要用到的常见命令
systemctl start/stop docker 运行/停止 docker 服务 systemctl enable docker 使 docker 开机自启 docker pull 从镜像库拉取容器镜像 docker ps 查看正在运行的容器列表(可以看到容器ID,所映射的端口号等等) docker ps -a 查看所有的容器(不管是否运行都能看到) docker start/stop CONTAINER ID 开始/停止容器(CONTAINER ID 是容器的ID) docker rm CONTAINER ID 删除容器 docker stop $(docker ps -aq) 停止所有容器 docker rm $(docker ps -aq) 删除所有容器 docker kill CONTAINER ID 直接关闭容器 docker rmi $(docker images -q) -f 删除所有镜像 docker images # 查询已下载镜像
到这里,我们的Docker速学基础入门系列就结束了,在全文里,我们系统地介绍了docker的入门学习方法和应该掌握的各种知识和内容,还介绍了一个可视化工具。我们也制作了相关软件的安装教程以及使用过程中的故障处理问题等文章,以便你的使用。
文章:
Docker可视化工具——Portainer全解
可视化Docker快速安装部署教程
相信在学习之后,我们都有或多或少的收获,而在日后的操作过程中,也欢迎大家和小九一起发现问题、提出问题、解决问题!我们将不断进步!期待你的讨论~
本文由Websoft9原创发布,转载请注明出处。