目录
- [1.1 Docker 核心概念](#1.1 Docker 核心概念)
- [1.1.1 镜像](#1.1.1 镜像)
- [1.1.2 容器](#1.1.2 容器)
- [1.1.3 Dockerfile](#1.1.3 Dockerfile)
- [1.1.4 容器仓库](#1.1.4 容器仓库)
- [1.1.5 Docker Compose](#1.1.5 Docker Compose)
- [1.2 Docker安装指南](#1.2 Docker安装指南)
- [1.2.1 Docker二进制包](#1.2.1 Docker二进制包)
- [1.2.2 使用
rpm
直接安装 Docker](#1.2.2 使用 rpm 直接安装 Docker)
- [1.3 Docker 基础命令](#1.3 Docker 基础命令)
- [1.3.1 镜像管理](#1.3.1 镜像管理)
- [1️⃣ 列出本地已有的镜像](#1️⃣ 列出本地已有的镜像)
- [2️⃣ 在 Docker Hub 搜索镜像](#2️⃣ 在 Docker Hub 搜索镜像)
- [3️⃣ 拉取镜像](#3️⃣ 拉取镜像)
- [4️⃣ 删除镜像](#4️⃣ 删除镜像)
- [5️⃣ 给镜像打标签](#5️⃣ 给镜像打标签)
- [6️⃣ 保存镜像到本地文件](#6️⃣ 保存镜像到本地文件)
- [7️⃣ 从本地文件加载镜像](#7️⃣ 从本地文件加载镜像)
- [1.3.2 容器管理](#1.3.2 容器管理)
- [1️⃣ 查看运行中的容器](#1️⃣ 查看运行中的容器)
- [2️⃣ 查看所有容器(包括已停止的)](#2️⃣ 查看所有容器(包括已停止的))
- [3️⃣ 运行一个交互式容器](#3️⃣ 运行一个交互式容器)
- [4️⃣ 后台运行容器](#4️⃣ 后台运行容器)
- 5️⃣停止容器
- [6️⃣ 启动容器已停止容器](#6️⃣ 启动容器已停止容器)
- [7️⃣ 重启容器](#7️⃣ 重启容器)
- [8️⃣ 删除容器](#8️⃣ 删除容器)
- [9️⃣ 进入运行中的容器](#9️⃣ 进入运行中的容器)
- [🔟 连接到容器终端](#🔟 连接到容器终端)
- [1.3.3 容器日志与监控](#1.3.3 容器日志与监控)
- [1️⃣ 查看容器日志](#1️⃣ 查看容器日志)
- [2️⃣ 查看容器进程](#2️⃣ 查看容器进程)
- [3️⃣ 查看容器详细信息](#3️⃣ 查看容器详细信息)
- [4️⃣ 查看容器资源占用](#4️⃣ 查看容器资源占用)
- [1.3.4 网络管理](#1.3.4 网络管理)
- [1️⃣ 查看 Docker 网络](#1️⃣ 查看 Docker 网络)
- [2️⃣ 创建自定义网络](#2️⃣ 创建自定义网络)
- [3️⃣ 查看网络详情](#3️⃣ 查看网络详情)
- [4️⃣ 将容器连接到网络](#4️⃣ 将容器连接到网络)
- [5️⃣ 断开容器与网络的连接](#5️⃣ 断开容器与网络的连接)
- [1.3.5 数据管理](#1.3.5 数据管理)
- [1️⃣ 列出所有卷(volume)](#1️⃣ 列出所有卷(volume))
- [2️⃣ 创建数据卷](#2️⃣ 创建数据卷)
- [3️⃣ 查看卷详情](#3️⃣ 查看卷详情)
- [4️⃣ 删除卷](#4️⃣ 删除卷)
- [5️⃣ 挂载数据卷到容器](#5️⃣ 挂载数据卷到容器)
- [1.3.6 构建镜像](#1.3.6 构建镜像)
- [1️⃣ 根据 Dockerfile 构建镜像](#1️⃣ 根据 Dockerfile 构建镜像)
- [2️⃣ 基于容器创建新镜像](#2️⃣ 基于容器创建新镜像)
- [1.3.1 镜像管理](#1.3.1 镜像管理)

容器(Container)是一种轻量级的虚拟化技术,它通过操作系统级的虚拟化,将应用程序及其依赖环境打包在一起,确保应用程序可以在任何环境中一致运行。与虚拟机不同,容器共享宿主操作系统的内核,而不是虚拟化整个操作系统。
容器使用宿主操作系统的内核,通过命名空间(Namespace)和控制组(Cgroups)技术实现资源的隔离和限制。命名空间确保每个容器拥有独立的系统视图,如进程树、网络接口和文件系统;控制组则限制和分配容器的资源使用,如CPU、内存和I/O。
容器化技术通常依赖于镜像(Image)来实现应用程序的打包。一个镜像包含了应用程序运行所需的所有依赖项,包括代码、库、工具和配置文件。容器运行时(如Docker、Podman)负责管理和运行这些容器镜像。
接下来说一下关于Docker的基础概念以及基础命令
1.1 Docker 核心概念
- 镜像(Image)
- 容器(Container)
- Dockerfile
- 容器仓库(Registry)
- Docker Compose
1.1.1 镜像
镜像 就是一个 模板,包含应用程序和其运行环境(如系统库、配置等)。
镜像是 只读的,可以从 Docker Hub 直接拉取,例如:
bashdocker pull nginx
1.1.2 容器
容器 是基于镜像运行的一个 独立进程,可以认为是"轻量级的虚拟机"。
容器是 可读写的,可以运行、停止、删除:
docker run -d --name my-nginx nginx
这个命令会启动一个
nginx
容器,名称为my-nginx
。
1.1.3 Dockerfile
Dockerfile 是一个 构建镜像的脚本,包含应用所需的所有依赖、配置等。
例如,构建一个
Python
应用的 Dockerfile:
dockerfileFROM python:3.9 COPY app.py /app.py CMD ["python", "/app.py"]
然后用以下命令构建镜像:
dockerfiledocker build -t my-python-app .
1.1.4 容器仓库
Docker Hub 是官方提供的 公共镜像仓库,类似于 GitHub 存代码,Docker Hub 存放镜像。
企业也可以搭建私有仓库(如 Harbor)。
1.1.5 Docker Compose
用于 管理多个容器 ,使用
docker-compose.yml
文件描述多个容器如何协同工作。例如,一个 Nginx + MySQL + PHP (LAMP) 组合可以用 Compose 启动:
docker-compose up -d
1.2 Docker安装指南
安装软件一共就是三个方式
- 二进制包
- yum安装
- rpm安装
⚠ 在这里说二进制和rpm安装方法,因为yum方法国内被墙安装不了
1.2.1 Docker二进制包
.tgz
文件通常是 Docker 官方发布的静态二进制 ,适用于无法使用yum
或rpm
的情况。
下载二进制包
bashwget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
解压并移动到 /usr/bin
bashtar xzvf docker-24.0.7.tgz sudo mv docker/* /usr/bin/
创建 Systemd 服务
bashtee /etc/systemd/system/docker.service <<EOF [Unit] Description=Docker Service After=network.target [Service] ExecStart=/usr/bin/dockerd Restart=always User=root [Install] WantedBy=multi-user.target EOF
重新加载 systemd 并启动 Docker
bashsudo systemctl daemon-reload sudo systemctl enable docker --now
验证安装
bashdocker version docker info
1.2.2 使用 rpm
直接安装 Docker
如果你已经有
.rpm
文件,可以直接使用rpm
安装。
下载 Docker RPM 包
bashwget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-24.0.7-1.el7.x86_64.rpm wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-24.0.7-1.el7.x86_64.rpm wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.22-3.1.el7.x86_64.rpm
⚠ 需要安装下载三个东东
- docker-ce
- docker-ce-cli
- containerd.io
手动安装 Docker
bashrpm -ivh containerd.io-1.6.22-3.1.el7.x86_64.rpm \ docker-ce-cli-24.0.7-1.el7.x86_64.rpm \ docker-ce-24.0.7-1.el7.x86_64.rpm
启动 Docker
bashsystemctl enable --now docker
验证安装
bashdocker --version
1.3 Docker 基础命令
使用Docker前需要了解一下关于Docker的基础命令
1.3.1 镜像管理
1️⃣ 列出本地已有的镜像
docker images
2️⃣ 在 Docker Hub 搜索镜像
docker search <关键字>
3️⃣ 拉取镜像
docker pull <镜像名>
4️⃣ 删除镜像
docker rmi <镜像名>
5️⃣ 给镜像打标签
docker tag <镜像ID> <新名称>
6️⃣ 保存镜像到本地文件
docker save -o <文件名>.tar <镜像名>
7️⃣ 从本地文件加载镜像
docker load -i <文件名>.tar
1.3.2 容器管理
1️⃣ 查看运行中的容器
docker ps
2️⃣ 查看所有容器(包括已停止的)
docker ps -a
3️⃣ 运行一个交互式容器
docker run -it --name <容器名> <镜像名> /bin/bash
4️⃣ 后台运行容器
docker run -d --name <容器名> <镜像名>
5️⃣停止容器
docker stop <容器名/ID>
6️⃣ 启动容器已停止容器
docker start <容器名/ID>
7️⃣ 重启容器
docker restart <容器名/ID>
8️⃣ 删除容器
docker rm <容器名/ID>
9️⃣ 进入运行中的容器
bash
docker exec -it <容器名/ID> /bin/bash
# 这里的/bin/bash具体情况具体分析,有的系统没有/bin/bash需要换,例如/bin/sh
🔟 连接到容器终端
docker attach <容器名/ID>
1.3.3 容器日志与监控
1️⃣ 查看容器日志
docker logs <容器名/ID> | commnt -t
2️⃣ 查看容器进程
docker top <容器名/ID>
3️⃣ 查看容器详细信息
docker inspect <容器名/ID>
4️⃣ 查看容器资源占用
docker stats <容器名/ID>
1.3.4 网络管理
1️⃣ 查看 Docker 网络
docker network ls
2️⃣ 创建自定义网络
docker network create <网络名>
3️⃣ 查看网络详情
docker network inspect <网络名>
4️⃣ 将容器连接到网络
docker network connect <网络名> <容器名/ID>
5️⃣ 断开容器与网络的连接
docker network disconnect <网络名> <容器名/ID>
1.3.5 数据管理
1️⃣ 列出所有卷(volume)
docker volume ls
2️⃣ 创建数据卷
docker volume create <卷名>
3️⃣ 查看卷详情
docker volume inspect <卷名>
4️⃣ 删除卷
docker volume rm <卷名>
5️⃣ 挂载数据卷到容器
docker run -v <宿主机路径>:<容器路径> <镜像名>
1.3.6 构建镜像
1️⃣ 根据 Dockerfile 构建镜像
docker build -t <镜像名:标签> <Dockerfile路径>
2️⃣ 基于容器创建新镜像
docker commit <容器ID> <新镜像名>