Docker的安装及版本锁定

CentOS与Ubuntu系统下Docker的卸载与安装教程
本文详细介绍了在CentOS和Ubuntu操作系统中如何卸载旧版本的Docker,安装新版本,以及如何锁定Docker的版本,防止自动升级。步骤包括使用yum或apt-get命令管理Docker,设置存储库,以及清理Docker的数据和配置文件。

Centos

卸载旧版本的Docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装Docker

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

下载特定版本的Docker

yum list docker-ce --showduplicates | sort -r
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
如 
yum install docker-ce-19.03.15-3.el7 docker-ce-cli-19.03.15-3.el7 containerd.io docker-compose-plugin

启动Docker,并设置开机启动

systemctl enable docker --now

查看状态

systemctl status docker

测试

docker run hello-world

卸载软件包

yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin

删除所有镜像,容器和卷

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

已编辑的配置文件需要手动删除
版本锁定
Centos锁定版本可使用yum versionlock命令实现:

yum install yum-plugin-versionlock.noarch
rpm -qa | grep docker

锁定docker版本

yum versionlock docker-*

查看锁定

yum versionlock list
yum versionlock status

删除锁定

yum versionlock delete docker-*

清除所有锁定

yum versionlock clear

锁定后的软件不会再被升级。

Ubuntu

卸载旧版本的Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

设置存储库

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装Docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

下载特定版本的Docker

apt-cache madison docker-ce | awk '{ print $3 }'
VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin

查看状态

systemctl status docker -l

测试

sudo docker run hello-world

卸载软件包

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

删除所有镜像,容器和卷

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

已编辑的配置文件需要手动删除
版本锁定
查询软件

dpkg -l | grep docker
apt list --installed | grep docker

锁定软件版本

apt-mark hold docker-ce docker-ce-cli

查看锁定

apt-mark showhold

解除锁定

apt-mark unhold docker-ce docker-ce-cli
<think> 我们正在讨论使用Docker安装和升级软件的方法。根据提供的引用,用户主要关注如何安装和升级Docker本身,但问题实际上是关于使用Docker安装和升级其他软件版本。因此,我们需要调整方向:Docker的主要用途是容器化应用程序,所以“软件”在这里指的是运行在容器中的应用程序,而不是Docker引擎本身。 关键点: 1. 使用Docker安装软件:通常指拉取包含该软件的镜像并运行容器。 2. 升级软件版本:指更新到该软件的新版本,可以通过拉取新版本的镜像并重新运行容器来实现。 步骤: 一、安装软件(以Nginx为例): 1. 搜索镜像:`docker search nginx` 2. 拉取镜像:`docker pull nginx`(默认最新版)或指定版本`docker pull nginx:1.18.0` 3. 运行容器:`docker run --name mynginx -p 80:80 -d nginx` 二、升级软件版本(以Nginx为例): 1. 停止并删除旧容器:`docker stop mynginx` 然后 `docker rm mynginx` 2. 拉取新版本镜像:`docker pull nginx:1.19.0`(或直接`docker pull nginx`获取最新版) 3. 重新运行容器(使用相同的命令):`docker run --name mynginx -p 80:80 -d nginx` 注意:如果容器中有需要保留的数据,应使用数据卷(volumes)来持久化数据,这样在删除容器时数据不会丢失。 三、使用Docker Compose管理(推荐): 通过编写docker-compose.yml文件,可以更方便地管理容器配置和版本升级。 示例docker-compose.yml: ```yaml version: '3' services: web: image: nginx:1.18.0 # 指定版本 ports: - "80:80" volumes: - ./html:/usr/share/nginx/html ``` 升级时,只需修改yml文件中的版本号,然后运行: `docker-compose down` # 停止并删除容器 `docker-compose up -d` # 重新创建容器(会自动拉取新镜像) 四、使用Docker的其他注意事项: - 使用官方镜像:确保软件来源可靠。 - 理解镜像标签:标签通常表示版本,例如`nginx:1.18.0`,`python:3.8`等。 - 多阶段构建:如果软件需要构建,可以使用Dockerfile的多阶段构建来构建镜像。 根据引用[5],我们也可以注意到安装指定版本Docker引擎的方法,但这与在容器中运行软件是不同层面的问题。如果用户需要升级Docker引擎,可以参考引用中提供的方法(例如在Ubuntu或CentOS上升级)。 但是,用户的问题明确是“使用docker安装和升级软件版本”,所以我们重点放在容器内的软件管理。 相关问题: 1. 如何在Docker容器中持久化数据以避免升级时数据丢失? 2. 如何使用Docker Compose管理多个容器版本升级? 3. 如何确保使用的Docker镜像是安全可靠的? </think> ### Docker安装和升级软件版本的方法 #### 一、安装软件版本 1. **拉取指定版本镜像** 使用`docker pull`命令获取特定版本的应用镜像: ```bash docker pull <软件名>:<版本号> # 例如:docker pull nginx:1.18.0 ``` 2. **运行容器** 启动容器时通过镜像标签指定版本: ```bash docker run -d --name <容器名> <软件名>:<版本号> ``` 3. **验证版本** 进入容器检查软件版本: ```bash docker exec -it <容器名> <软件名> --version ``` #### 二、升级软件版本 1. **停止旧容器** ```bash docker stop <容器名> && docker rm <容器名> ``` 注意:确保已通过**数据卷(Volumes)持久化数据**,避免数据丢失[^1][^4]。 2. **拉取新版本镜像** ```bash docker pull <软件名>:<新版本号> # 例如:docker pull mysql:8.0 ``` 3. **启动新容器** 复用原有数据和配置: ```bash docker run -d --name <新容器名> -v <数据卷名>:/data <软件名>:<新版本号> ``` 4. **版本回退(可选)** 若需回退到旧版本,直接指定旧版本镜像运行: ```bash docker run -d --name <容器名> <软件名>:<旧版本号> ``` #### 三、最佳实践 1. **版本锁定** 在Dockerfile或docker-compose.yml中固定版本号: ```dockerfile FROM python:3.9-slim # 明确指定基础镜像版本 ``` ```yaml # docker-compose.yml services: app: image: redis:6.2-alpine ``` 2. **多版本共存** 通过不同容器名称运行多个版本: ```bash docker run -d --name php7_app php:7.4 docker run -d --name php8_app php:8.0 ``` 3. **版本查询** 查看可用版本列表: ```bash docker search --filter=is-official=true <软件名> # 官方镜像 ``` ### 注意事项 1. **数据持久化** 务必使用`-v`参数挂载数据卷,确保升级时数据安全[^1][^4]。 2. **依赖兼容性** 升级前检查新版本的系统依赖(如glibc版本)是否兼容[^2]。 3. **容器编排** 使用Docker Compose或Kubernetes可简化多容器版本管理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值