Ubuntu 安装 Docker
- 更新索引并安装依赖
首先,更新现有的软件包列表,并安装一些允许 apt 通过 HTTPS 使用存储库的依赖软件。
bash
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 的官方 GPG 密钥
GPG 密钥用于验证从存储库下载的软件包的完整性。
bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加 Docker 存储库
将 Docker 存储库添加到 APT 源中。
bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
- 安装 Docker 引擎
再次更新软件包数据库,并安装 Docker。
bash
sudo apt update
# 安装 docker 引擎、命令行工具和容器运行时
sudo apt install docker-ce docker-ce-cli containerd.io
- 验证安装是否成功
安装完成后,Docker 服务应该已经启动。你可以通过运行 hello-world 镜像来验证。
bash
sudo docker run hello-world
如果看到 "Hello from Docker!" 的提示信息,说明 Docker 已成功安装并运行。
进阶配置(可选)
A. 免 sudo 运行 Docker
默认情况下,只有 root 用户或具有 sudo 权限的用户才能运行 Docker 命令。如果你不想每次都输入 sudo,可以将当前用户加入 docker 组:
bash
# 将当前用户添加到 docker 用户组
sudo usermod -aG docker ${USER}
注意: 修改后需要注销并重新登录,或者运行 newgrp docker 才能生效。
B. 配置 Docker 开机自启
确保 Docker 随系统启动:
bash
sudo systemctl enable docker
sudo systemctl start docker
C. 安装 Docker Compose
如果你需要管理多容器应用,通常还需要安装 Docker Compose:
bash
# 下载 docker compose 二进制文件
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
D. 配置阿里云镜像仓库
shell
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 使用 Docker info 命令查看配置的加速仓库
docker info
通过 Docker 安装 Mysql8
创建挂载到宿主机中的目录:
shell
mkdir -p /docker/mysql/log
mkdir -p /docker/mysql/data
mkdir -p /docker/mysql/conf
创建自定义的配置文件:
shell
vim /docker/mysql/conf/custom.cnf
添加如下内容:
shell
[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake
bind-address=0.0.0.0
启动容器:
shell
docker run \
-d \
--name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql8.0
让 root 用户可以远程登录:
shell
docker exec -it mysql /bin/bash
mysql -uroot -p
use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
创建用户并授予全部数据库的权限:
shell
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
grant all on *.* to 'test'@'%' with grant option;
flush privileges;