Docker
1 安装
安装前要先卸载可能冲突的包:
sh
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)卸载 Docker 时,存储在 /var/lib/docker/ 目录下的镜像、容器等不会自动删除。如果要清除所有相关数据:
sh
# 卸载 Docker Engine、CLI、containerd 和 Docker Compose
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 删除所有镜像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 删除 source list 和 keyrings
sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.asc安装步骤:
sh
## 1. 设置 Docker 的 apt 仓库
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
## 2. 安装最新版本的 Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
## 3. 运行 hello-world 镜像验证是否安装成功
sudo docker run hello-world2 快速入门
2.1 部署 MySQL
执行以下命令即可安装 MySQL:
sh
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql2.2 镜像和容器
当我们利用 Docker 安装应用时,Docker 会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker 会在运行镜像时创建一个隔离环境,称为容器(container)。
镜像仓库:存储和管理镜像的平台,Docker 官方维护了一个公共仓库:Docker Hub。
2.3 命令解读
docker run:创建并运行一个容器,-d是让容器在后台运行--name mysql:给容器起名字,必须唯一-p 3306:3306:端口映射,宿主机端口:容器内端口-e KEY=VALUE:环境变量mysql:镜像名
镜像名称一般由两个部分组成:[repository]:[tag]
- 其中
repository就是镜像名 tag是镜像版本
在没有指定 tag 时,默认是 latest,代表最新版本的镜像
3 常见命令
docker pull:从镜像仓库拉取镜像到本地docker push:推送本地镜像到镜像仓库docker images:查看本地镜像列表docker rmi:删除本地镜像docker run:创建并运行一个容器docker stop:停止一个容器docker start:启动一个容器docker logs:查看容器日志docker exec:在运行中的容器内部执行命令docker ps:查看运行容器的状态docker rm:删除容器docket build:构建自定义镜像docker save:保存本地镜像为压缩文件docker load:加载镜像压缩文件
示例:
sh
# 1. 拉取 Nginx
docker pull nginx
# 2. 查看本地列表
docker images
# 3. 保存镜像为压缩文件
docker save -o nginx.tar nginx:latest
# 4. 删除镜像
docker rmi nginx:latest
# 5. 加载镜像
docker load -i nginx.tar
# 6. 创建并运行 Nginx 容器
docker run -d --name nginx -p 80:80 nginx
# 7. 查看容器
docker ps
docker ps -a
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 8. 停止容器
docker stop nginx
# 9. 再次启动容器
docker start nginx
# 10. 查看日志
docker logs nginx
docker logs -f nginx
# 11. 进入 Nginx 容器
docker exec -it nginx bash
# 12. 删除容器
docker rm nginx
docker rm nginx -f