Docker知识点汇总(上)
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)
2.1.2 mobaxterm
下载链接:学校alist服务器(10.22.108.10:5244)

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


2.2 XTerminal配置

3、Linux基础语法
1 | cd /etc/sysconfig/network-scripts/ |

1 | systemctl restar NetworkManager |
4、Docker安装及镜像源配置
4.1 系统基础操作
注意先换到root权限下执行命令
安装依赖工具dnf-utils device-mapper-persistent-data lvm2
dnf-utils主要是用于管理yum仓库配置文件,减少复杂操作
device-mapper-persistent-datalvm2这两个则是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 | https://image.cloudlayer.icu |
配置加速源的方式
1 | cd /etc/docker/ |
1 | touch daemon.json |
1 | { |
接下来重启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。

6.2 命名规范
镜像名称一般分两部分组成:[repository]:[tag]。
其中repository就是镜像名
tag是镜像的版本
在没有指定tag时,默认是latest,代表最新版本的镜像

6.3 基础命令

6.3.1 build
1 | [root@localhost ~]# docker build -h |
1 | docker build -t [name] . |
- [name]:容器名字,注意不要出现大写字母
.:代表当前目录
6.3.2 save、load
1 | [root@localhost ~]# docker save -h |
1 | docker save -o 1.tar [镜像名称:版本] |
-o 1.tar : 容器打包成压缩包的名字
这里的镜像名称记得按照这样的格式 [镜像名称:版本] 否则后续load载入的时候会出现
<none>
1 | [root@localhost ~]# docker load -h |
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 | [root@localhost ~]# docker logs -h |
1 | docker logs -f -t [容器名称] |
**-f **:跟踪日志输出
-t :显示时间戳
6.3.6 exec
1 | [root@localhost ~]# docker exec -h |
1 | docker exec -it [容器名称] bash |
- -it : 启用交互式
- bash : 命令行
6.3.7 start、stop
1 | docker start [容器名称] |
启动和关闭容器,注意和移除容器进行区分
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 | docker run -d \ |
**docker run **:创建并运行一个容器
-d :让容器在后台运行
–name:给容器起个名字,注意必须得唯一
-p 3306:3306 :设置端口映射
-e KEY=VALUE : 设置环境变量
mysql :指定运行的镜像名字

案例二、部署Nginx

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

拉取nignx镜像
1 | docker pull nginx |
查看本地镜像列表
1 | docker images |
创建并运行容器
1 | docker run -d --name nginx -p 8080:80 nginx:latest |
查看容器
1 | docker ps |
停止容器
1 | #docker stop [NAMES/CONTAINER ID] |
再次启动容器
1 | docker start [NAMES/CONTAINER ID] |
进入Nginx容器
1 | docker exec -it nginx bash |
删除容器
1 | docker rm [NAMES/CONTAINER ID] |