会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
Linux——Docker工具(三剑客)
2024-12-27IP属地 湖北1
  • Docker Compose:是用来组装多容器应用的工具,可以在 Swarm集群中部署分布式应用。
  • Docker Machine:是支持多平台安装Docker的工具,使用 Docker Machine,可以很方便地在笔记本、云平台及数据中心里安装Docker。
  • Docker Swarm:是Docker社区原生提供的容器集群管理工具。
  • Compose是用来定义和运行一个或多个容器应用的工具。使用compaose可以简化容器镜像的建立及容器的运行。
  • Compose使用python语言开发,非常适合在单机环境里部署一个或多个容器,并自动把多个容器互相关联起来。

Compose 中有两个重要的概念

Linux——Docker工具(三剑客)

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
  • Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
  • Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。
  • Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
  • Swarm mode内置kv存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 Swarm 集群具备与 Mesos、Kubernetes 竞争的实力。

Docker-compose官方文档

 

设置tabl键的空格距离

 
 

通过识别一个docker-compose.yml的配置文件,去管理容器。

 

命令解释

  • 第一个部分: version: 指定语法格式的版本。
  • 第二部分:service:定义服务(想要运行什么样的容器
  • nginx: //服务的名称
  • container_name: web-nginx //容器名称
  • image: nginx:latest //使用的镜像
  • restart: always //容器跟随docker服务自启
  • ports: //端口映射
  • volumes:: //持久化 本地:容器

运行

PS:如果想要退出终端占用,加-d 选项。

 

在运行container的过程中,还可以支持Dockerfile

PS: 如果文件内有Dockerfile,可以提前执行:docker-compose build 或者在up -d 的时候添加–build 选项。

 
 

(1)帮助信息

 

(2)创建或重新创建服务使用的镜像

 

(3)通过容器发送SIGKILL信号强行停止服务

 

PS:kill 服务名称,默认所有服务

(4)显示service的日志信息

 

(5)暂停和恢复服务

 
  • docker-compose pause #暂停服务
  • docker-compose unpause #恢复被暂停的服务

(6)查看服务中的端口与物理机的映射关系

 

PS:docker-compose port nginx_web 80 #查看服务中80端口映射到物理机上的那个端口
(7)显示当前项目下的容器

 

PS:此命令与docker ps不同作用,此命令会显示停止后的容器(状态为Exited,只针对某个项目。

(8)拉取服务依赖的镜像

 

(9)重启某个服务中的所有容器

 

(10)删除停止的服务(服务里的容器

 
  • -f #强制删除
  • -v #删除与容器相关的卷(volumes

(11)在服务中运行一个一次性的命令

 

这个命令会新建一个容器,它的配置和srvice的配置相同。但两者之间还是有两点不同之处

  • run指定的命令会直接覆盖掉service配置中指定的命令
  • run命令启动的容器不会创建在service配置中指定的端口,如果需要指定使用–service-ports指定
    (12)启动/停止运行某个服务的所有容器
 
  • docker-compose start 启动运行某个服务的所有容器
  • docker-compose stop 停止运行某个服务的所有容器

(13)指定某个服务启动的容器个数

 

PS:如果需要运行多个容器,那么容器名称就不要给了,会随机生成,还有注意端口映射问题,不要冲突(docker-compose port 字段支持仅写一个容器暴露的端口

  • -f :用于指定配置文件
  • -p :用于指定项目名称
 
 
 
 
 

Docker-machine官方文档

PS:Docker-machine环境主机没有安装docker服务的主机

主机IPnode01192.168.1.10node02192.168.1.11node01192.168.1.12

1.关闭防火墙和SELinux、清空iptables

 

2.安装machine

 

3.查看是否安装成功

 

4.给machine主机做域名解析和免密登录

 

4.创建machine

PS:对于 Docker Machine 来说,术语 Machine 就是运行 docker daemon 的主机。创建 Machine指的就是在 host 上安装和部署 docker。

  • –driver generic:驱动类型
  • –generic-engine-port:用于 Docker 守护的端口
  • –generic-ip-address:主机所需的 IP 地址
  • –generic-ssh-key: SSH 用户私钥的路径
  • –generic-ssh-user: 用于连接的 SSH 用户名
  • –generic-ssh-port:用于 SSH 的端口
 

用同样的方法吧其余两台添加到machine中

 

查看已添加的主机

 

添加加速器

 

5.常用命令

  • active 查看活跃的 Docker 主机
  • config 输出连接的配置信息
  • create 创建一个 Docker 主机
  • env 显示连接到某个主机需要的环境变量
  • inspect 输出主机更多信息
  • ip 获取主机地址
  • kill 停止某个主机
  • ls 列出所有管理的主机
  • provision 重新设置一个已存在的主机
  • regenerate-certs 为某个主机重新生成 TLS 认证信息
  • restart 重启主机
  • rm 删除某台主机
  • ssh SSH 到主机上执行命令
  • scp 在主机之间复制文件
  • mount 挂载主机目录到本地
  • start 启动一个主机
  • status 查看主机状态
  • stop 停止一个主机
  • upgrade 更新主机 Docker 版本为最新
  • url 获取主机的 URL
  • version 输出 docker-machine 版本信息
  • help 输出帮助信息

6.管理machine

1.优化docker-machine的shell

这样在 bash 能够通过 tab 键补全 docker-mahine 的子命令和参数。

 

2.显示访问 node01 需要的所有环境变量

 

3.根据提示访问node02和node03

 

4.在此状态下执行的所有 docker 命令其效果都相当于在 host3上执行,例如启动一个 busybox 容器

 

5.更新 machine 的 docker 到最新版本,可以批量执行

 

6.查看 machine 的 docker daemon 配置

 

7.在不同 machine 之间拷贝文件

 
 

docker swarm集群

主机IPnode01192.168.1.40node02192.168.1.41node03192.168.1.42

关闭防火墙、禁用selinux、3台dockerhost区别主机名、时间同步

Docker-swarm官方文档

 

PS:–advertise-addr:指定与其他Node通信的地址。

添加其他节点

 

扩展

PS:如果想要添加manager 节点: 运行下边的命令

 

PS:如果想要添加worker节点: 运行下边的命令

 

查看节点详情

 

1.1基本命令

(1)节点服务离开一个集群

 

PS:查看节点状态会变成down.然后可以通过manager node 将其删除。

(2)删除某个节点

 

(3)生成加入集群令牌

 

(4)升级

将node02节点的work升级为manager

 

(5)降级

将node02节点的manager降级为work.

 

(6)设置节点状态
节点状态有三个参数

  • active:正常
  • pause:暂停
  • -drain:排除自身work任务
 
 
  • overlay:覆盖型网络。
  • attachable: 这个参数必须要加,否则网络不能用于容器。
 

PS:我们在node1上创建的此网络,但在swarm的其他节点,是查看不到此网络信息的。但却能够直接使用此网络。

 
 
 
 
 
 
 
 
 
 

PS:上述方法创建镜像httpd:v2、 httpd:v3

 

默认的Ingress 网络,包括创建的自定义overlay网络,为后端真正为用户提供服务的container,提供了一个统一的入口。

PS:扩容与缩容直接直接通过scale进行设置副本数量

 
 
 

PS:再次查看使用镜像已经从httpd:v1变成httpd:v2了
默认情况下,swarm一次只更新一个副本,并且两个副本之间没有等待
时间,我们可以通过
–update-parallelism; 设置并行更新的副本数量。
–update-delay: 指定滚动更新的时间间隔。

回滚操作

 

PS:docker swarm的回滚操作,默认只能回滚到上一次操作的状态,并不能连续回滚操作。

 

给node02上添加一个标签(磁盘容量最大

 

删除标签

 

指定节点,运行服务