Categories
坐骑幻化

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

容器(Container)是一种轻量级的虚拟化技术,它通过操作系统级的虚拟化,将应用程序及其依赖环境打包在一起,确保应用程序可以在任何环境中一致运行。与虚拟机不同,容器共享宿主操作系统的内核,而不是虚拟化整个操作系统。

容器使用宿主操作系统的内核,通过命名空间(Namespace)和控制组(Cgroups)技术实现资源的隔离和限制。命名空间确保每个容器拥有独立的系统视图,如进程树、网络接口和文件系统;控制组则限制和分配容器的资源使用,如CPU、内存和I/O。

容器化技术通常依赖于镜像(Image)来实现应用程序的打包。一个镜像包含了应用程序运行所需的所有依赖项,包括代码、库、工具和配置文件。容器运行时(如Docker、Podman)负责管理和运行这些容器镜像。

接下来说一下关于Docker的基础概念以及基础命令

1.1 Docker 核心概念

镜像(Image)

容器(Container)

Dockerfile

容器仓库(Registry)

Docker Compose

1.1.1 镜像

镜像 就是一个 模板,包含应用程序和其运行环境(如系统库、配置等)。

镜像是 只读的,可以从 Docker Hub 直接拉取,例如:

docker pull nginx

最近发现了几个可以pull的镜像站,可以试试,如果过期请留言,我会更新,麻烦了

tee /etc/docker/daemon.json << EOF

{

"registry-mirrors": [

"https://dytt.online",

"https://docker.mybacc.com",

"https://func.ink"

]

}

EOF

# systemd重新读取配置文件然后重启docker

systemctl daemon-reload

systemctl restart docker

# 然后正常拉取即可

docker pull wordpress:latest

1.1.2 容器

容器 是基于镜像运行的一个 独立进程,可以认为是“轻量级的虚拟机”。

容器是 可读写的,可以运行、停止、删除:

docker run -d --name my-nginx nginx

这个命令会启动一个 nginx 容器,名称为 my-nginx。

1.1.3 Dockerfile

Dockerfile 是一个 构建镜像的脚本,包含应用所需的所有依赖、配置等。

例如,构建一个 Python 应用的 Dockerfile:

FROM python:3.9

COPY app.py /app.py

CMD ["python", "/app.py"]

然后用以下命令构建镜像:

docker 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 的情况。

下载二进制包

wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz

解压并移动到 /usr/bin

tar xzvf docker-24.0.7.tgz

sudo mv docker/* /usr/bin/

创建 Systemd 服务

tee /etc/systemd/system/docker.service <

[Unit]

Description=Docker Service

After=network.target

[Service]

ExecStart=/usr/bin/dockerd

Restart=always

User=root

[Install]

WantedBy=multi-user.target

EOF

重新加载 systemd 并启动 Docker

sudo systemctl daemon-reload

sudo systemctl enable docker --now

验证安装

docker version

docker info

1.2.2 使用 rpm 直接安装 Docker

如果你已经有 .rpm 文件,可以直接使用 rpm 安装。

下载 Docker RPM 包

wget 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

rpm -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

systemctl enable --now docker

验证安装

docker --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️⃣ 进入运行中的容器

docker exec -it <容器名/ID> /bin/bash

# 这里的/bin/bash具体情况具体分析,有的系统没有/bin/bash需要换,例如/bin/sh

🔟 连接到容器终端

docker attach <容器名/ID>

1.3.3 容器日志与监控

1️⃣ 查看容器日志

docker logs <容器名/ID>

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 <镜像名:标签>

2️⃣ 基于容器创建新镜像

docker commit <容器ID> <新镜像名>