Docker 知识点汇总(上)

前言

!!本教程所使用Linux系统为:openEuler-24.03 !!

最近,听说学弟学妹们开始做docker的课程设计了,当然作为学长肯定得多关心学弟学妹,让学弟学妹们做上更有难度的课程设计,于是在老师手头上接下了辅导学弟学妹做课程设计的任务,所以就诞生了这篇课件;因为之前没接过这种活,所以各位大佬喷的时候轻点喷

1、准备 Linux 环境

1.1.安装 VMware

1.2.创建虚拟机

1.3.安装

CentOS7(Linux)详细安装教程(手把手图文详解版)-CSDN博客

2、SSH 连接

2.1 SSH客户端

2.1.1 XTerminal

下载地址:Xterminal - 更好用的开发工具,但不止于(SSH/控制台/More)

PixPin_2025-05-05_21-10-12

2.1.2 mobaxterm

下载链接:学校alist服务器(10.22.108.10:5244)

PixPin_2025-05-05_21-09-04

2.1.3 xshell/xftp

下载地址:家庭/学校免费 - NetSarang Website

Xshell_Free_zh-600x405

Xftp_Free_zh-600x405

2.2 XTerminal配置

PixPin_2025-05-02_20-03-17

3、Linux基础语法

1
cd /etc/sysconfig/network-scripts/

PixPin_2025-06-08_19-58-26

1
systemctl restar NetworkManager

4、Docker安装及镜像源配置

4.1 系统基础操作

注意先换到root权限下执行命令

安装依赖工具dnf-utils device-mapper-persistent-data lvm2

dnf-utils主要是用于管理yum仓库配置文件,减少复杂操作

device-mapper-persistent-data lvm2这两个则是docker的核心文件

1
yum install -y dnf-utils device-mapper-persistent-data lvm2

使用华为云镜像站

1
curl -o /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo

替换仓库地址为华为云镜像

1
sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
1
sed -i 's+$releasever+9+' /etc/yum.repos.d/docker-ce.repo

更新yum缓存

1
yum makecache

4.2 Docker安装

安装docker及关键组件

1
sudo yum install -y docker-ce docker-ce-cli containerd.io

检查是否安装完成

1
docker -v

4.3 启动和校验

启动docker

1
systemctl start docker

查看启动状态

1
systemctl status docker

停止docker

1
systemctl stop docker

重启

1
systemctl restart docker

设置开机自启

1
systemctl enable docker

4.4 配置镜像加速

目前可能还能用的加速源

1
2
3
4
5
6
https://image.cloudlayer.icu
https://proxy.1panel.live
https://docker.1panel.top
https://docker.m.daocloud.io
https://docker.1ms.run
https://docker.ketches.cn

配置加速源的方式

1
cd /etc/docker/
1
touch daemon.json
1
2
3
4
5
6
7
8
9
10
{
"registry-mirrors": [
"https://image.cloudlayer.icu",
"https://proxy.1panel.live",
"https://docker.1panel.top",
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.ketches.cn"
]
}

接下来重启docker

1
systemctl restart docker
1
docker info

5、简单镜像安装部署(Hello_world)

5.1 Hello_world

5.1.1 拉取镜像

1
docker pull hello-world

5.1.2 查看是否拉取成功

1
docker images

5.1.3 启动镜像

1
docker run hello-world

5.1.4 查看启动状态

1
docker ps -a

6、Docker基础命令与逻辑

6.1 镜像与容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container)。

镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:DockerHub。

PixPin_2025-05-05_21-17-21

6.2 命名规范

镜像名称一般分两部分组成:[repository]:[tag]。

  • 其中repository就是镜像名

  • tag是镜像的版本

在没有指定tag时,默认是latest,代表最新版本的镜像

PixPin_2025-05-05_21-16-33

6.3 基础命令

PixPin_2025-05-05_21-15-13

6.3.1 build

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~]# docker build -h
Flag shorthand -h has been deprecated, use --help
Start a build

Usage: docker buildx build [OPTIONS] PATH | URL | -

Start a build

Aliases:
docker build, docker builder build, docker image build, docker buildx b

Options:
....
-t, --tag stringArray Name and optionally a tag (format: "name:tag")
--target string Set the target build stage to build
--ulimit ulimit Ulimit options (default [])
1
docker build -t [name] .
  • [name]:容器名字,注意不要出现大写字母
  • . :代表当前目录

6.3.2 save、load

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# docker save -h
Flag shorthand -h has been deprecated, use --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

Aliases:
docker image save, docker save

Options:
-o, --output string Write to a file, instead of STDOUT
--platform string Save only the given platform variant. Formatted as
"os[/arch[/variant]]" (e.g., "linux/amd64")
1
docker save -o 1.tar [镜像名称:版本]
  • -o 1.tar : 容器打包成压缩包的名字

  • 这里的镜像名称记得按照这样的格式 [镜像名称:版本] 否则后续load载入的时候会出现 <none>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]# docker load -h
Flag shorthand -h has been deprecated, use --help
Usage: docker load [OPTIONS]

Load an image from a tar archive or STDIN

Aliases:
docker image load, docker load

Options:
-i, --input string Read from tar archive file, instead of STDIN
--platform string Load only the given platform variant. Formatted as
"os[/arch[/variant]]" (e.g., "linux/amd64")
-q, --quiet Suppress the load output
1
docker load -i 1.tar -q
  • -i 1.tar :需要载入的压缩包
  • -q : 不输出调试信息,可加可不加

6.3.3 images、rmi

1
docker images

查看已经安装成功的镜像

1
docker rmi [容器名称(id)]

删除镜像

需要确保该镜像没有启动的容器

6.3.4 docker run

1
docker run -d -p 8080:80 --name test -e flag=flag{very_easy} [镜像名字]
  • **docker run **:创建并运行一个容器
  • -d :让容器在后台运行
  • –name test:给容器起个名字,注意必须得唯一
  • -p 3306:3306 :设置端口映射
  • -e flag=flag{very_easy} : 设置环境变量
  • mysql :指定运行的镜像名字

6.3.5 logs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# docker logs -h
Flag shorthand -h has been deprecated, use --help
Usage: docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Aliases:
docker container logs, docker logs

Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. "2013-01-02T13:23:37Z")
or relative (e.g. "42m" for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default
"all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g.
"2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42
minutes)
1
docker logs -f -t [容器名称]
  • **-f **:跟踪日志输出

  • -t :显示时间戳

6.3.6 exec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@localhost ~]# docker exec -h
Flag shorthand -h has been deprecated, use --help
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Execute a command in a running container

Aliases:
docker container exec, docker exec

Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: "<name|uid>[:<group|gid>]")
-w, --workdir string Working directory inside the container
1
docker exec -it [容器名称] bash
  • -it : 启用交互式
  • bash : 命令行

6.3.7 start、stop

1
2
docker start [容器名称]  
docker stop [容器名称]

启动和关闭容器,注意和移除容器进行区分

6.3.8 ps、rm

1
docker ps -a
  • -a : 查看已停止运行的容器
1
docker rm [容器名称]
  • -f : 可以删除正在运行的容器

删除容器

6.4 其他命令

6.4.1 cp

7、Docker部署案例

案例一、部署Mysql

  • 拉取mysql镜像
  • 查看本地镜像列表
  • 创建并运行容器(设置时区与密码)
    • TZ=Asia/Shanghai
    • MYSQL_ROOT_PASSWORD=123456
  • 停止容器
  • 再次启动容易
  • 使用远程连接工具进行连接
  • 删除容器
  • 删除镜像

(1)案例答案

拉取镜像

1
docker pull mysql

查看镜像有没有拉下来

1
docker images

运行容器

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

之后可以尝试使用mysql远程连接工具进行连接

(2)命令讲解

1
2
3
4
5
6
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
  • **docker run **:创建并运行一个容器

  • -d :让容器在后台运行

  • –name:给容器起个名字,注意必须得唯一

  • -p 3306:3306 :设置端口映射

  • -e KEY=VALUE : 设置环境变量

  • mysql :指定运行的镜像名字

PixPin_2025-06-09_21-30-58

案例二、部署Nginx

PixPin_2025-05-05_21-52-05

搜索nginx https://hub.docker.com/_/nginx

PixPin_2025-05-06_13-47-33

拉取nignx镜像

1
docker pull nginx

查看本地镜像列表

1
docker images

创建并运行容器

1
docker run -d --name nginx -p 8080:80 nginx:latest

查看容器

1
docker ps

停止容器

1
2
#docker stop [NAMES/CONTAINER ID]
docker stop nginx

再次启动容器

1
docker start [NAMES/CONTAINER ID]

进入Nginx容器

1
docker exec -it nginx bash

删除容器

1
docker rm [NAMES/CONTAINER ID]