DockerCompose安装卸载、文件语法格式

待我称王封你为后i 2024-03-29 15:29 154阅读 0赞

DockerCompose安装卸载、文件语法格式

一、DockerCompose的概念和作用

1.1 相关概念

DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,不需要我们手动一个个创建和运行容器。

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。

1.2 Compose文件的格式

1.2.1 dcoker-compose.yml文件的格式示例

  1. # Compose 文件格式有3个版本,分别为1, 2.x 和 3.x
  2. # 目前主流的为 3.x 其支持 docker 1.13.0 及其以上的版本
  3. version: "3.0" # 当前DockerCompose文件版本
  4. services: # 具体的服务定义
  5. mysql: # mysql的配置,启动的容器命名为mysql
  6. image: mysql:5.7.25
  7. environment:
  8. MYSQL_ROOT_PASSWORD: root
  9. volumes:
  10. - "/tmp/mysql/data:/var/lib/mysql"
  11. - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  12. javaapp: # 某个java工程的配置(启动的容器命名为javaapp)
  13. build: .
  14. ports:
  15. - "8999:8999"

这里的build: .意思就是使用当前目录下的Dockerfile文件来进行镜像的构建,因此无需再指定image

1.2.2 常见格式配置–从已有镜像创建并运行容器

把上面mysql的配置和启动mysql镜像运行命令比较:

  1. # mysql 镜像启动命令
  2. docker run \ # 创建并运行一个容器
  3. --name mysql \ # 给容器个名字叫mysql
  4. -e MYSQL_ROOT_PASSWORD=root \ # 设置mysql登录,密码为root
  5. -p 3306:3306 # 把宿主机3306端口和容器的3306端口相关联
  6. -v /mysql/conf/myLocal.cnf:/etc/mysql/conf.d \ # 宿主myLocal.cnf文件挂载到容器conf.d文件
  7. -v /mysql/data:/var/lib/musql \ # 宿主data目录挂载到容器mysql目录
  8. -d \ # 后台运行
  9. mysql:5.7.25 # 需要启动的镜像名称
  • Compose文件中的mysql相当于--name mysql
  • image: mysql:5.7.25就相当于运行命令中对镜像名称的指定
  • environment相当于-e
  • Compose文件中没有配置-p端口映射,是因为微服务中的mysql只需要给微服务内部使用,无需暴露。

    • 这一步可以看业务情况决定要不要暴露
  • volumes相当于-v
  • Compose文件中没有和运行命令-d后台运行的配置,因为默认就是后台运行,无需配置。

mysql镜像运行命令其实和Compose中的指令是可以做到一一对一关系的。

这不就是把镜像运行命令写到了Compose文件当中吗。

这是Compose文件中典型的从已有镜像创建并运行容器的配置写法。

1.2.3 常见格式配置–构建镜像并基于构建的镜像创建并运行容器

把上面javaapp的配置和把java工程构建成镜像并运行命令比较:

  1. # 基于Dockerfike构建镜像
  2. docker build -t javaapp:1.0 .
  3. # 运行上面构建的镜像
  4. docker run --name javaapp -p 8999:8999 -d javaapp:1.0
  • Compose文件中javaapp就相当于构建命令和运行命令中的javaapp
  • Compose文件中build就相当于构建命令中的docker build
  • Compose文件中.就相当于构建命令中的.,都代表当前目录下构建镜像
  • Compose文件中- "8999:8999"相当于运行命令中的-p 8999:8999,把宿主机端口和容器端口相关联
  • Compose文件中没有和运行命令-d后台运行的配置,因为默认就是后台运行,无需配置。
  • Compose文件中没有配置java工程的镜像名称,因为就是直接运行构建出来的镜像,已经能唯一确定了

1.2.4 小结

其实DockerCompose就是把镜像构建和镜像运行等命令,转换成指令封装到Compose文件当中。

上面命令和指令的对应关系记不住也没关系。

配置的时候可以查看官方文档:

  1. https://docs.docker.com/compose/compose-file/

文档里各种配置都写的一清二楚。

1.3 DockerCompose部署命令

部署前需要先进入需要部署的微服务的目录下执行:

  1. # up 就是启动
  2. # -d 代表后台运行
  3. # 整体就是按docker-compose.yml中配置的信息去部署微服务
  4. docker-compose up -d

二、DockerCompose的安装

访问DockerCompose在github上的发布版本

在这里插入图片描述

此时最新版是2.10.2, 就以它为例。

1.1 安装包获取方式

1.1.1 线上直接下载docker-compose二进制文件
  1. #命令解释:
  2. # 从https://github.com/docker/compose/releases/download/2.10.2/docker-compose拉取二进制文件
  3. # 拉取的文件所放的位置为/usr/local/bin/ 并重命名为docker-compose
  4. curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  5. # 上面远程安装出问题就安装下面的
  6. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
1.1.2 先从github上拉取文件到本地,再上传到Linux

在这里插入图片描述
点击2.10.2版本下的docker-compose-linux-x86_64下载文件。

把文件docker-compose-linux-x86_64重命名文件为docker-compose

重命名完成后使用finallshell把文件上传到Linux/usr/local/bin/目录下。

在这里插入图片描述

1.2 给docker-compose文件授予可执行权限

  1. chmod +x /usr/local/bin/docker-compose

1.3 授予权限之后查看docker-compose版本

  1. docker-compose version

1.4 设置docker-compose命令自动补全

能正常显示版本号之后。发现打docker-compose命令的时候,按tab键并不能帮我们补全命令。

如果使用docker-compose一键部署集群的话,这个命令是非常常用的。没有提示很不方便。

因此可以执行下面命令,让docker-compose命令也可以被Linux自动提示。

  1. curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果执行命令一直卡着下载不下来,是因为解析不了域名raw.githubusercontent.com

只需要在当前服务器的host文件中追加一句ip和域名的映射关系即可

  1. echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

三、DockerCompose的卸载

DockerCompose的卸载非常简单,只需要删除docker-compose的二进制文件就行了。

就是当初我们上传上来的那个docker-compose没有后缀的文件。

3.1 进入docker-compose文件所在目录

  1. cd /usr/local/bin/

3.2 删除docker-compose文件

  1. rm -rf /usr/local/bin/docker-compose

发表评论

表情:
评论列表 (有 0 条评论,154人围观)

还没有评论,来说两句吧...

相关阅读

    相关 YAML文件格式语法

    YAML基础 学习k8s就不得不学习下yaml语法了 yaml是一种简洁的非标记语言,YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。