翼度科技»论坛 云主机 LINUX 查看内容

Ubuntu一键安装/卸载docker和docker compose,可指定版本或安装最新版本。

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@
目录

个人博客:FaceMan' Blog
Github:FaceMan' GitHub
前言

在新建的服务器上,我们一般会用几条命令来下载安装docker和docker-compose,这里为了避免每次都去搜索安装命令,所以写成脚本,本文仅支持Ubuntu\CentOS。
一、docker是什么?

Docker是一个开源的容器化平台,用于构建、部署和管理应用程序。它采用了轻量级的容器技术,可以在不同的操作系统上运行,并提供了一种将应用程序及其依赖项打包到可移植的容器中的方式。
以下是Docker的一些重要特点和概念:

  • 容器化:Docker利用Linux内核的容器功能来隔离应用程序及其依赖项。每个容器都是一个独立的运行环境,具有自己的文件系统、进程空间和资源限制。容器可以快速启动、停止和迁移,而且相互之间彼此隔离,避免了应用程序之间的冲突和依赖问题。
  • 镜像:Docker使用镜像来构建容器。镜像是一个只读的模板,包含了应用程序运行所需的所有文件系统、库和依赖项。通过使用Dockerfile定义构建步骤,可以创建自定义的镜像。镜像可以从Docker Hub等镜像仓库中获取,也可以通过构建自己的镜像进行定制。
  • 容器注册表:Docker Hub是Docker官方的公共镜像注册表,提供了大量的基础镜像供用户使用。除此之外,还有其他的公共和私有镜像注册表,用户可以在其中存储和分享自己的镜像。
  • Docker引擎:Docker引擎是运行和管理容器的核心组件。它包括一个守护进程(Docker daemon)和一个命令行客户端(Docker CLI)。守护进程负责构建、运行和管理容器,而命令行客户端提供了交互式的接口来与守护进程进行通信。
  • 编排和管理工具:Docker提供了一系列的编排和管理工具,用于简化多个容器的部署和管理。例如,Docker Compose允许通过一个YAML文件描述多个容器的关系和配置,并通过一条命令启动、停止和扩展整个应用程序的容器集群。
  • 跨平台支持:Docker可以在不同的操作系统上运行,包括Linux、Windows和MacOS等。对于Linux平台,Docker直接使用操作系统的容器功能;而对于Windows和MacOS,Docker使用一个轻量级的虚拟机(称为Docker Desktop)来提供容器化环境。
  • 生态系统:Docker拥有庞大的开发者社区和丰富的生态系统。社区提供了大量的文档、教程和示例代码,以及交流和支持的平台。此外,还有许多第三方工具和服务,如监控工具、CI/CD集成等,与Docker集成,进一步扩展了其功能和用途。
总结起来,Docker是一个强大的容器化平台,通过将应用程序及其依赖项打包到独立的容器中,提供了更加灵活、可移植和可扩展的应用部署和管理方式。它已经成为现代软件开发和运维的重要工具之一。
二、docker compose是什么?

Docker Compose是一个用于定义和管理多个Docker容器的工具。它允许您使用简单的YAML文件描述应用程序中的服务、网络、存储卷等配置,并通过一个命令行界面来启动、停止和管理这些容器。
以下是Docker Compose的一些重要特点:

  • 声明式语法:Docker Compose使用声明式的YAML文件来描述应用程序的架构和配置。您可以在文件中定义每个服务的镜像、端口映射、环境变量、依赖关系等。这种声明式语法使得定义和管理复杂的容器集群变得简单且可维护。
  • 多容器应用管理:Docker Compose专注于管理多个相关的容器,以构建完整的应用程序堆栈。通过一次性的命令,您可以启动、停止、重启和销毁整个容器集群,而不需要手动处理每个容器。
  • 容器间连接和通信:使用Docker Compose,您可以轻松地为容器之间创建连接和网络。您可以定义容器之间的连接方式,使它们能够相互通信和访问。这在构建微服务架构或多层应用程序时非常有用。
  • 可伸缩性和负载均衡:Docker Compose允许您设置容器的伸缩策略,以根据应用程序的需要自动扩展或收缩容器。它还支持与负载均衡器集成,可以将流量分发到多个实例上,提高应用程序的性能和可靠性。
  • 环境隔离和测试:使用Docker Compose,您可以轻松地在开发和测试环境中复制生产环境的配置。您可以创建一个本地的容器化开发环境,确保应用程序在不同环境下的一致性,并减少由于环境差异引起的问题。
  • 可插拔的架构:Docker Compose是可插拔的,可以与其他工具和服务集成,以满足特定需求。例如,您可以与监控和日志记录工具集成,以监视和管理容器的性能和状态。
Compose V1语法: Compose V1语法是较早版本的Compose语法,其文件名通常为docker-compose.yml。以下是一些Compose V1语法的特点:

  • services:使用services关键字定义要运行的服务。每个服务都有一个名称和一组配置选项。
  • image:指定要使用的镜像名称。
  • ports:定义要映射到主机上的容器端口。
  • volumes:指定要挂载到容器中的卷。
  • links:定义与其他服务之间的连接。
  • environment:设置容器中的环境变量。
  • depends_on:定义服务之间的依赖关系。
以下是一个Compose V1语法的示例:
  1. version: '2'
  2. services:
  3.   web:
  4.     image: nginx:latest
  5.     ports:
  6.       - 8080:80
  7.     volumes:
  8.       - ./html:/usr/share/nginx/html
  9.   db:
  10.     image: mysql:latest
  11.     environment:
  12.       - MYSQL_ROOT_PASSWORD=secret
复制代码
Compose V2语法: Compose V2语法是较新版本的Compose语法,其文件名通常为docker-compose.yaml或docker-compose.yml。以下是一些Compose V2语法的特点:
services:与Compose V1相同,使用services关键字定义要运行的服务。
image、ports、volumes、environment等选项与Compose V1相同。
引入了新的配置选项,如networks、configs和secrets,用于更灵活地定义网络、配置文件和机密信息。
以下是一个Compose V2语法的示例:
  1. version: '3'
  2. services:
  3.   web:
  4.     image: nginx:latest
  5.     ports:
  6.       - 8080:80
  7.     volumes:
  8.       - ./html:/usr/share/nginx/html
  9.   db:
  10.     image: mysql:latest
  11.     environment:
  12.       - MYSQL_ROOT_PASSWORD=secret
  13. networks:
  14.   app-net:
  15.     driver: bridge
复制代码
除了以上介绍的不同之外,Compose V2语法还带来了一些其他改进和功能增强,例如支持多个文件的扩展性,可选项的验证和默认值等。
需要注意的是,在使用Docker Compose时,要根据您所使用的Compose版本选择正确的语法,并确保在编写Compose文件时遵循该版本的语法规范。
三、安装步骤

1.Ubuntu安装脚本

代码如下(示例):
  1. #!/bin/bash
  2. # 卸载当前版本
  3. echo "卸载当前版本....."
  4. sudo apt-get remove docker docker-engine docker.io containerd runc
  5. y
  6. # 设置apt源
  7. echo "设置apt源....."
  8. sudo apt-get update
  9. # 安装基础依赖
  10. echo "安装基础依赖....."
  11. sudo apt-get install -y \
  12.     ca-certificates \
  13.     curl \
  14.     gnupg
  15. # 启用docker官方的源
  16. echo "启用docker官方的源....."
  17. echo \
  18.   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  19.   $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  20.   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  21. # 添加docker官方的GPG Key
  22. echo "添加docker官方的GPG Key....."
  23. sudo mkdir -m 0755 -p /etc/apt/keyrings
  24. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  25. # 更新软件源
  26. ## 更新密钥权限,可选 sudo chmod a+r /etc/apt/keyrings/docker.gpg
  27. echo "更新软件源....."
  28. sudo apt-get update
  29. echo "安装最新版本或特定版本(Y(最新)/N(特定))?"
  30. read answer
  31. if [ "$answer" == "Y" -o "$answer" == "y" ]; then
  32.     echo "安装最新版本"
  33.     # 安装最新版本
  34.     sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  35. elif [ "$answer" == "N" -o "$answer" == "n" ]; then
  36.     echo "查询版本"
  37.     ## 查询版本
  38.     apt-cache madison docker-ce | awk '{ print $3 }'
  39.     echo "请指定版本:
  40.     例如5:20.10.23~3-0~ubuntu-bionic、5:20.10.23~3-0~ubuntu-focal、5:20.10.23~3-0~ubuntu-jammy"
  41.     read VERSION_STRING
  42.     # 安装特定版本
  43.     # ## 安装特定版本 ubuntu 18.04
  44.     # VERSION_STRING=5:20.10.23~3-0~ubuntu-bionic
  45.     # ## 安装特定版本 ubuntu 20.04
  46.     # VERSION_STRING=5:20.10.23~3-0~ubuntu-focal
  47.     # ## 安装特定版本 ubuntu 22.04
  48.     # VERSION_STRING=5:20.10.23~3-0~ubuntu-jammy
  49.     ## 安装
  50.     sudo apt-get install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin
  51. else
  52.     echo "无效的输入"
  53. fi
复制代码
2.生成脚本

将上述命令保存为一个脚本文件(例如script.sh),并添加执行权限。您可以在终端中使用以下命令来执行该脚本:
  1. chmod +x script.sh
  2. ./script.sh
复制代码
3.启动和验证
  1. # 查看docker
  2. docker -v
  3. # 老版本docker compose命令为
  4. docker-compose -v
  5. # 新版本docker compose命令为
  6. docker compose version
  7. # 查看docker服务是否启动
  8. $ systemctl status docker
  9. # 若未启动,则启动docker服务
  10. $ sudo systemctl start docker
  11. # 验证hello world
  12. $ sudo docker run hello-world
复制代码
四、卸载步骤

1.Ubuntu卸载脚本
  1. # 卸载旧版本的Docker
  2. yum remove docker \
  3.                   docker-client \
  4.                   docker-client-latest \
  5.                   docker-common \
  6.                   docker-latest \
  7.                   docker-latest-logrotate \
  8.                   docker-logrotate \
  9.                   docker-selinux \
  10.                   docker-engine-selinux \
  11.                   docker-engine \
  12.                   docker-ce
  13. rm -rf /etc/docker
  14. rm -rf /run/docker
  15. rm -rf /var/lib/dockershim
  16. #删除docker的镜像文件
  17. rm -rf /var/lib/docker
  18. ps -ef|grep docker|grep -v grep|xargs kill -s 9
  19. #卸载docker相关包
  20. yum remove docker-*
  21. yum remove docker-ce-cli-*
  22. yum remove docker-scan-plugin*
  23. # 删除旧版docker-compose
  24. rm -rf /usr/local/bin/docker-compose
  25. rm -rf /usr/bin/docker-compose
复制代码
2.保存文件后设置执行权限
  1. chmod +777  docker-uninstall.sh
复制代码
3.运行文件
  1. sh  docker-uninstall.sh
复制代码
4.验证是否删除成功
  1. docker -v
  2. docker-compose -v
复制代码
CentOS

安装脚本
  1.         #!/bin/bash
  2.         # 卸载当前版本
  3.         echo "卸载当前版本....."
  4.         sudo yum remove docker-ce docker-ce-cli containerd.io
  5.        
  6.         # 设置yum源
  7.         echo "设置yum源....."
  8.         sudo yum install -y yum-utils
  9.         sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  10.        
  11.         # 安装基础依赖
  12.         echo "安装基础依赖....."
  13.         sudo yum install -y \
  14.             yum-plugin-copr \
  15.             device-mapper-persistent-data \
  16.             lvm2 \
  17.             git \
  18.             bash-completion \
  19.             bash-completion-extras \
  20.             iptables \
  21.             policycoreutils-python \
  22.             selinux-policy-base \
  23.             selinux-policy-targeted \
  24.             audit \
  25.             libseccomp-devel \
  26.             python3-pip \
  27.             python3-setuptools \
  28.             python3-wheel
  29.        
  30.         # 更新软件源
  31.         echo "更新软件源....."
  32.         sudo yum update -y
  33.        
  34.         echo "安装最新版本或特定版本(Y(最新)/N(特定))?"
  35.         read answer
  36.         if [ "$answer" == "Y" -o "$answer" == "y" ]; then
  37.             echo "安装最新版本"
  38.             # 安装最新版本
  39.             sudo yum install -y docker-ce docker-ce-cli containerd.io
  40.         elif [ "$answer" == "N" -o "$answer" == "n" ]; then
  41.             echo "查询版本"
  42.             ## 查询版本
  43.             yum list docker-ce --showduplicates | grep -i "docker-ce"
  44.        
  45.             echo "请指定版本:
  46.             例如3:20.10.11-3.el7、3:20.10.11-3.el8"
  47.             read VERSION_STRING
  48.             # 安装特定版本
  49.        
  50.             ## 安装特定版本 centos 7
  51.             # VERSION_STRING=3:20.10.11-3.el7
  52.        
  53.             ## 安装特定版本 centos 8
  54.             # VERSION_STRING=3:20.10.11-3.el8
  55.        
  56.             ## 安装
  57.             sudo yum install -y docker-ce-$VERSION_STRING docker-ce-cli-$VERSION_STRING containerd.io
  58.         else
  59.             echo "无效的输入"
  60.         fi
  61.         # 启动Docker服务
  62.         echo "启动Docker服务....."
  63.         sudo systemctl start docker
  64.        
  65.         # 设置Docker开机自启
  66.         echo "设置Docker开机自启....."
  67.         sudo systemctl enable docker
  68.        
  69.         # 配置Docker加速器
  70.         echo "配置Docker加速器....."
  71.         echo '{
  72.           "registry-mirrors": ["https://your_mirror_url"]
  73.         }' | sudo tee /etc/docker/daemon.json
  74.        
  75.         # 重启Docker服务
  76.         echo "重启Docker服务....."
  77.         sudo systemctl daemon-reload
  78.         sudo systemctl restart docker
  79.        
  80.         echo "Docker安装完成"
复制代码
卸载脚本
  1. #!/bin/bash
  2. # 停止和删除所有Docker容器
  3. echo "停止和删除所有Docker容器....."
  4. sudo docker stop $(sudo docker ps -aq)
  5. sudo docker rm $(sudo docker ps -aq)
  6. # 卸载Docker服务
  7. echo "卸载Docker服务....."
  8. sudo yum remove -y docker-ce docker-ce-cli containerd.io
  9. # 删除Docker相关文件和目录
  10. echo "删除Docker相关文件和目录....."
  11. sudo rm -rf /var/lib/docker
  12. sudo rm -rf /etc/docker
  13. # 删除Docker用户组
  14. echo "删除Docker用户组....."
  15. sudo groupdel docker
  16. # 删除Docker存储库
  17. echo "删除Docker存储库....."
  18. sudo rm -f /etc/yum.repos.d/docker-ce.repo
  19. echo "Docker已成功卸载"
复制代码
总结

我们可以通过用户输入指令来安装不同版本的docker和docker compose,也可以一键卸载,使用脚本省心又快捷。

来源:https://www.cnblogs.com/FaceMan/p/17978460
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具