Ubuntu 安装 Docker

Ubuntu安装Docker

先简单介绍一下Docker:

Docker是一个开放源代码的开放平台软件,用于开发应用、交付应用和运行应用。Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度。 Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、更能高效地利用服务器。

Docker有几个重要概念:

  1. 镜像(Image):镜像是容器运行所需的只读模板,包含应用及其所有依赖(库、配置、环境)。镜像通常是分层构建的。
  2. 容器(Container):容器是一个运行时实例,它是由镜像(Image)创建的。每个容器是相互隔离的,拥有自己的文件系统、网络、进程空间等。
  3. Dockerfile:Dockerfile 是用于构建镜像的脚本文件,包含了一系列指令(如 FROM、RUN、COPY、CMD 等),用来描述如何构建镜像。
  4. Docker Engine:Docker 引擎是运行在主机上的守护进程,它负责构建镜像、运行容器、管理网络和存储等。
  5. Docker Hub:一个公共的镜像仓库,类似于 GitHub,你可以从中拉取官方或社区发布的镜像,也可以上传自己的镜像。

1.操作系统要求

要安装 Docker Engine,需要以下 Ubuntu 版本之一的 64 位版本:

  • Ubuntu Oracular 24.10
  • Ubuntu Noble 24.04(LTS)
  • Ubuntu Jammy 22.04(LTS)
  • Ubuntu Focal 20.04(LTS)

Ubuntu 的 Docker Engine 与 x86_64(或 amd64)、armhf、arm64、s390x 和 ppc64le(ppc64el)架构兼容。

其他版本的Ubuntu安装Docker不受官方支持,但是依然可能有效,可以试一试。

关于Ubuntu虚拟机的从零开始安装,可以参考之前的文章(从零开始配置虚拟机环境),不过其中使用的是Ubuntu16,可以换成22。

2.卸载旧版本

在安装 Docker Engine 之前需要卸载所有冲突的软件包。

Linux 发行版可能提供了非官方的 Docker 软件包,这些软件包可能与 Docker 官方提供的软件包冲突。所以必须在安装 Docker Engine 正式版之前卸载这些软件包。

要卸载的非官方软件包是:

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker

此外,Docker Engine 依赖于containerdrunc。Docker Engine 将这些依赖项捆绑为一个捆绑包:containerd.io。如果之前安装了containerdrunc,请卸载它们以避免与 Docker Engine 捆绑的版本冲突。

运行以下命令卸载所有冲突的软件包:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

3.安装Docker

步骤1. 更新系统 & 安装依赖:

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

步骤2. 创建 Docker keyrings 目录

sudo mkdir -p /etc/apt/keyrings

步骤3. 下载并导入GPG公钥(阿里云镜像)

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

步骤4. 添加阿里云镜像源(使用 jammy)

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤5. 更新 APT 缓存

sudo apt update

步骤6. 安装 Docker 及其组件

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

步骤7. 允许当前用户不使用 sudo 运行 docker

sudo usermod -aG docker $USER
newgrp docker  # 当前终端生效(或注销重新登录)

步骤8. 验证安装(不报错即是安装成功)

docker version
docker run hello-world

4.启动和校验

1.启动Docker

systemctl start docker

2.停止Docker

systemctl stop docker

3.重启

systemctl restart docker

4.设置开机自启

systemctl enable docker

5.执行docker ps命令,如果不报错,说明安装启动成功

docker ps

5.配置镜像加速

Docker 默认从 Docker Hub(registry-1.docker.io)拉取镜像,这是一个国外的服务器,速度慢且镜像较大时下载容易失败,所以我们会配置镜像加速。

1.配置加速地址:

vim /etc/docker/daemon.json

可能是一个新文件,这没有问题

2.添加以下内容(先摁键盘的i下面变成INSERT就可以输入,输入完成后先摁ESC再输入 :wq 保存并退出):

{
    "registry-mirrors": [
            "https://docker.211678.top",
            "https://docker.1panel.live",
            "https://hub.rat.dev",
            "https://docker.m.daocloud.io",
            "https://do.nark.eu.org",
            "https://dockerpull.com",
            "https://dockerproxy.cn",
            "https://docker.awsl9527.cn"
      ]
}

3.重启docker:

systemctl daemon-reload
systemctl restart  docker

4.验证是否生效:

docker info

输出最后应包含:

 Registry Mirrors:
  https://docker.211678.top/
  https://docker.1panel.live/
  https://hub.rat.dev/
  https://docker.m.daocloud.io/
  https://do.nark.eu.org/
  https://dockerpull.com/
  https://dockerproxy.cn/
  https://docker.awsl9527.cn/
 Live Restore Enabled: false

6.以MySQL为例试验

我们尝试用Docker来安装一个MySQL软件。

我们直接安装最新版的MySQL,在命令行中输入以下命令:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql

安装完成后的界面大概如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

使用 docker ps 可以查看容器的状态。

我直接使用IDEA来测试对于这个MySQL的连接,状态如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果提示我们不知道MySQL的版本,可以使用下面的语句查看:

docker exec -it mysql mysql -uroot -p123456 -e "SELECT VERSION();"

也可以在Mysql后面指定特定版本,需要修改Docker 刚开始运行的语句:

docker run -d \
  --name mysql57 \
  -p 3307:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:5.7

7.Docker常用命令

7.1 镜像相关(Image)

命令说明
docker pull 镜像名[:标签]拉取镜像,如:docker pull mysql:8.0
docker images查看本地镜像
docker rmi 镜像ID或名称删除镜像
docker rmi -f 镜像ID强制删除镜像
docker image prune删除未使用的悬挂镜像
docker image prune -a删除所有未使用的镜像

7.2 容器相关(Container)

命令说明
docker run 镜像启动一个新容器(默认前台)
docker run -d 镜像后台运行容器
docker run -it 镜像 /bin/bash进入容器交互式终端
docker ps查看运行中的容器
docker ps -a查看所有容器(包括已停止)
docker stop 容器名/ID停止容器
docker start 容器名/ID启动已停止容器
docker restart 容器名/ID重启容器
docker rm 容器名/ID删除容器
docker rm -f 容器名/ID强制删除正在运行的容器
docker container prune删除所有已停止的容器

7.3 容器内部操作

命令说明
docker exec -it 容器名 bash进入容器终端(推荐)
docker attach 容器名附加到容器(按 Ctrl+P+Q 退出)
docker logs 容器名查看容器日志
docker top 容器名查看容器内运行的进程
docker inspect 容器名查看容器详细信息
docker cp 容器ID:路径 本地路径从容器拷贝文件到主机
docker cp 本地路径 容器ID:路径从主机拷贝文件到容器

7.4 镜像构建(Dockerfile)

命令说明
docker build -t 镜像名:标签 .使用 Dockerfile 构建镜像
docker tag 镜像ID 新名称:标签给镜像打标签
docker save 镜像 > 文件.tar导出镜像为文件
docker load < 文件.tar从文件导入镜像

7.5 网络相关

命令说明
docker network ls查看所有网络
docker network inspect 网络名查看网络详情
docker network create 自定义网络创建用户自定义网络
docker network connect 网络 容器将容器连接到网络
docker network disconnect 网络 容器将容器从网络断开

7.6 数据卷(Volume)

数据卷是 Docker 提供的一种机制,用于在容器之间共享数据或将数据持久化到宿主机上。

命令说明
docker volume create 卷名创建数据卷
docker volume ls查看所有数据卷
docker volume inspect 卷名查看卷详细信息
docker volume rm 卷名删除卷
docker volume prune清理无用数据卷

7.7 系统清理与信息

命令说明
docker system df查看 Docker 使用的空间
docker system prune清理所有未使用的资源(镜像、容器、网络)
docker info查看 Docker 系统信息
docker version查看 Docker 版本

7.8 快捷清理命令(危险)

命令说明
docker rm -f $(docker ps -aq)删除所有容器
docker rmi -f $(docker images -q) 删除所有镜像
docker volume rm $(docker volume ls -q)删除所有数据卷

ocker version` | 查看 Docker 版本 |

7.8 快捷清理命令(危险)

命令说明
docker rm -f $(docker ps -aq)删除所有容器
docker rmi -f $(docker images -q) 删除所有镜像
docker volume rm $(docker volume ls -q)删除所有数据卷
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值