测试说明
本次测试使用环境:
- 测试方式:win10专业版,在vmware中安装ubuntu22.04版本虚拟机(均为x86架构)
- 在ubuntu22.04虚拟机中安装x86架构20.10.21版本docker
- docker中安装22.04版本ubuntu容器
- 测试arm版本的docker安装aarch64版本的qemu模拟器,并安装aarch64版本ubuntu22.04版本镜像容器
1. docker的安装
1.1 离线安装docker
1.1.1 tgz包离线安装
- 下载离线安装包
使用tgz安装包安装的可以值关注于所要安装的docker的版本,不过需要编写docker.service启动文件
- 下载地址:
https://download.docker.com/linux/static/stable/- x86架构:
x86_64/(x86架构的安装包) - arm架构:
aarch64/(arm架构的安装包)
- x86架构:
- 这里以安装x86架构docker-20.10.21为例:
- 进入
x86_64/下载文件docker-20.10.21.tgz
- 进入
- 安装
-
创建新文件夹 将
docker-20.10.21.tgz压缩包复制进去 -
执行一下命令
tar zxvf docker-20.10.21.tgz sudo cp docker/* /usr/bin/ -
编写service文件
(创建配置文件) sudo vim /etc/systemd/system/docker.service ------------docker.service 文件内容如下---------------- [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target -
启动docker
sudo chmod +x /etc/systemd/system/docker.service sudo systemctl daemon-reload sudo systemctl start docker sudo systemctl enable docker docker --version ------------------实操如下--------------------- [wop@bogon dockeris]$ sudo chmod +x /etc/systemd/system/docker.service [wop@bogon dockeris]$ sudo systemctl daemon-reload [wop@bogon dockeris]$ sudo systemctl start docker [wop@bogon dockeris]$ sudo systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /etc/systemd/system/docker.service. [wop@bogon dockeris]$ docker --version Docker version 20.10.21, build baeda1f- 配置加速器加速下载docker镜像
sudo vim /etc/docker/daemon.json 文件内容
-
{
“registry-mirrors”: [“https://gg3gwnry.mirror.aliyuncs.com”]
}
重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
```
1.1.2 deb包离线安装
使用deb安装包的方式安装需要自己确定所安装系统版本所需的deb安装包型号,优点是不用自己编写docker.service
-
确定linux版本
cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS" -
确定dpkg版本
sudo dpkg --print-architecture amd64 -
下载地址
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable -
需要下载以下三个文件
containerd.io_1.6.9-1_amd64.deb docker-ce-cli_20.10.21~3-0~ubuntu-jammy_amd64.deb docker-ce_20.10.21~3-0~ubuntu-jammy_amd64.deb -
安装命令
sudo dpkg -i containerd.io_1.6.9-1_amd64.deb && apt-get -f install sudo dpkg -i docker-ce-cli_20.10.21~3-0~ubuntu-jammy_amd64.deb && apt-get -f install sudo dpkg -i docker-ce_20.10.21~3-0~ubuntu-jammy_amd64.deb && apt-get -f install -
启动docker
systemctl start docker -
设置开机自动启动
systemctl enable docker.service
1.2 在线安装docker
1.2.1 官方安装脚本 (推荐使用+方便快捷)
- 下面以ubuntu系统为例
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
1.2.2 手动安装
- 下面以ubuntu系统为例
- 更新软件包列表:使用以下命令更新软件包列表:
sudo apt update
- 安装依赖软件包:安装Docker所需的依赖软件包:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
- 添加Docker官方GPG密钥:通过以下命令添加Docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加Docker官方APT源:添加Docker官方的APT源到Ubuntu的软件包管理器中:
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.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 update
- 安装Docker引擎:使用以下命令来安装Docker引擎:
sudo apt install docker-ce docker-ce-cli containerd.io
- 启动Docker服务:使用以下命令启动Docker服务:
sudo systemctl start docker
至此,已经完成了在线安装Docker的步骤。
1.3 检验docker是否安装成功
要验证Docker是否成功安装,请按照以下步骤执行:
- 检查Docker版本:在终端中运行以下命令来检查Docker版本:
docker --version
如果成功安装,将看到Docker的版本信息。
1.4 彻底卸载docker
以下是离线和在线安装Docker的卸载步骤:
在线安装的卸载步骤:
- 停止Docker服务:使用以下命令停止Docker服务:
sudo systemctl stop docker
- 卸载Docker软件包:执行以下命令以卸载Docker软件包:
sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
- 查看docker是否卸载干净
dpkg -l | grep docker
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P ## 删除无用的相关的配置文件
- 删除没有删除的相关插件
sudo sapt-get autoremove docker-ce-*
- 删除docker的相关配置&目录
sudo rm -rf /etc/systemd/system/docker.service.d
sudo rm -rf /var/lib/docker
- 确定docker卸载完毕
docker --version
离线安装的卸载步骤:
- 停止Docker服务:执行以下命令停止Docker服务:
sudo systemctl stop docker
- 卸载Docker软件包:使用以下命令卸载Docker软件包:
sudo dpkg -r docker-ce
- 删除Docker配置和数据:执行以下命令删除Docker的配置文件和数据:
sudo rm -rf /var/lib/docker
- 删除Docker用户组(如果没有其他使用该组的进程):使用以下命令删除Docker用户组:
sudo groupdel docker
请注意,在卸载Docker之后,容器、镜像和卷将被删除,并且无法恢复。如果希望保留它们,请先备份。此外,如果在安装过程中使用了不同的方法(如使用脚本或其他自定义方式安装的Docker),卸载步骤可能会有所不同。
1.5 x86下安装arm版docker
1.5.1 安装qemu模拟器
如果想再x86下安装arm版docker,可以借助qemu模拟器模拟arm框架
- 获取QEMU
- 下载地址:https://github.com/multiarch/qemu-user-static/releases
- 下载网站中:
qemu-arm-static:arm架构 ,qemu-aarch64-static:aarch64架构 - 下载:
qemu-aarch64-static文件 (这里以aarch64架构为例)
- 安装
sudo cp qemu-aarch64-static /usr/bin/
sudo chmod +x /usr/bin/qemu-aarch64-static
- 注册QEMU虚拟机 (每次重启都要重新注册)
sudo docker run --rm --privileged multiarch/qemu-user-static:register
注:安装完qemu的模拟器就可以使用x86版本的docker来安装arm版本的docker镜像,在x86架构下实例化一个arm版本的ubuntu的docker镜像
1.5.2 qemu中安装arm版本ubuntu
注: 安装完qemu的模拟器后确保电脑安装了docker(x86版本)进行一下操作
- 在线拉取ubuntu Arm镜像
sudo docker pull arm64v8/ubuntu:22.04
注: 如果是离线的安装ubuntu镜像,请见: 2.2章离线安装ubuntu
- 创建Arm容器
sudo docker run -it \
--name arm_ub\
-v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
arm64v8/ubuntu:22.04 /bin/bash
- 开启这个容器
sudo docker start arm_ub
- 进入容器
sudo docker exec -it arm_ub /bin/bash
- 测试容器的架构
uname -m
---------返回值为-------------
aarch64
- 导出容器
sudo docker export arm_ub > arm_ub.tar
- 导入容器
sudo docker import arm_ub.tar arm_ub_image
注:这里导入导出容器和 第3章导入导出容器的方式相同
- 实例化这个镜像
注: 这里在x86架构下实例化arm架构的容器和直接实例化x86架构的容器不相容需要保证,除指令不同外还需要保证:启动QEMU虚拟机,方法请见: 1.5.1 安装qemu模拟器中 3.注册QEMU虚拟机
sudo docker run -it --name aaaa -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro arm_ub_cout /bin/bash
-----------------------如果上面命令有问题运行下面命令---------------------------
sudo docker run -it --name aaaa -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm_ub_cout /bin/bash
- 启动运行容器
sudo docker start aaaa
sudo docker exec -it aaaa /bin/bash
2. docker安装ubuntu
2.1 在线安装ubuntu
- 在线拉取ubuntu镜像
docker pull ubuntu
注:
- 运行容器,并且可以通过 exec 命令进入 ubuntu 容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
- 启动这个虚拟机
sudo docker exec -it ubuntu-test /bin/bash
2.2 离线安装ubuntu(导入导出官方镜像 )
-
从 Docker Hub 或其他镜像仓库下载要导出的 Ubuntu 镜像。可以使用以下命令:
sudo docker pull ubuntu -
导出 Docker 镜像到一个文件中,可以使用以下命令:
sudo docker save -o ubuntu_image.tar ubuntu这将把 Ubuntu 镜像保存到
ubuntu_image.tar文件中。
在没有网络连接的机器上:
-
将
ubuntu_image.tar文件拷贝到没有网络连接的机器上,比如使用 U 盘或其他外部存储设备。 -
在没有网络连接的机器上,使用以下命令加载已保存的 Docker 镜像:
sudo docker load -i ubuntu_image.tar这将加载
ubuntu_image.tar文件中的 Docker 镜像到本地 Docker 环境中。
现在,已经将 Ubuntu 镜像成功导入可以在没有网络连接的机器上使用了。请确保文件拷贝过程中保持镜像文件完整性,并确保目标机器上已经安装了 Docker。
需要注意的是,如果有其他依赖项(比如基础镜像或软件包)未被导入的机器上,可能需要手动满足这些依赖关系,以确保镜像的正常运行。
2.21 导入镜像后验证
查看镜像是否存在即ID
wub@wub:~/Downloads$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 01f29b872827 3 weeks ago 77.8MB
然后安装Ubuntu系统
- 运行容器,并且可以通过 exec 命令进入 ubuntu 容器
sudo docker run -itd --name docker_ub ubuntu
---------
wub@wub:~/Downloads$ sudo docker run -itd --name docker_ub ubuntu
ba84659d5b8e6c3c3ced4f6caf65ff1f6bc5f981028a426955b08bbe50c87676
- 启动这个虚拟机

7392

被折叠的 条评论
为什么被折叠?



