一、前情回顾
1.Docker是什么?
Docker是一个容器化平台
2.Docker容器与传统虚拟化之间的区别?
Docker容器运行在主机上,不需要完整的操作系统
3.容器与镜像关系?
镜像是容器的只读模版,镜像是模版,容器是实例
4.docker拉取镜像的常用指令
docker pull
二、Docker安装
二进制安装
压缩包内容详解(这里22.04版本为示例进行安装)
Contarinerd (容器运行时核心)、dockerd (docker守护进程)、docker(客户端命令)、runc底层容器运行工具

解压tar包----> 添加docker用户和用户组---->放入/etc/profile目录
docker vesion查看docker环境变量信息
验证启动的容器
Client:
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:30:51 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine(引擎):
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:32:17 2023
OS/Arch: linux/amd64
Experimental: false
containerd(管理容器的生命周期):
Version: v1.7.3
GitCommit: 7880925980b188f4c97b462f709d0db8e8962aff
runc(基于OCI标准实现):
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init(docker初始化,防止僵尸进程):
Version: 0.19.0
GitCommit: de40ad0
Systemctl 安装Docker
这里版本针对于26版本以上,并且可以指定/usr/local/docker目录到/usr/bin/docker
注意: 链接形式必须是如下截图(需要将/usr/local/docker/文件转移到/usr/bin/下)

sudo vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker server daemon
Documentation=man:docker(8) man:sshd_config(5)
After=network.target docker-keygen.target
Wants=docker-keygen.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
检查sock中daemon文件启动情况
[root@localhost system]# ps -ef | grep dockerd | grep -v grep
root 2998 2046 0 22:54 pts/1 00:00:00 /usr/local/docker/dockerd
[root@localhost system]# netstat -lnp | grep docker.sock
unix 2 [ ACC ] STREAM LISTENING 33369 2998/dockerd /var/run/docker.sock
[root@localhost system]#
YUM源安装Docker
安装docke-ce docker源使用Yum一键安装
wget -O /etc/yum.repos.d/docker-ce.repo
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum makecache # 更新 YUM 缓存(使新配置生效)
yum install -y docker-ce docker-ce-cli containerd.io # 安装 Docker
systemctl start docker # 启动 Docker 服务
systemctl enable docker # 设置开机自启
三、Docker基础命令
镜像管理
1.基础操作
docker --version # 查看docker版本信息
docker info # 交互相关信息
2.镜像管理
1.docker pull # 拉取镜像
2.docker images # 列出镜像
3.docker rmi # 删除镜像
备注:
<none> <none> 557466b563c2 5 days ago 412MB
如果删除镜像后(通过名称删除会出现上面问题,这个问题也叫空镜像)
docker image -f dangling=true -q # 用于过滤没有标签(<none> <none> )的镜像
# 清理空镜像
docker rmi $(docker images -f dangling=true -q) ## docker images -f dangling=true -q 获取空镜像的id
docker rmi <镜像id>
4. docker search nginx # 搜索镜像
5.docker build # 构建镜像
-
查看正在运行的容器
[root@localhost system]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -
查看所有容器(包括停止的容器)
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5.拉取镜像 需修改daemon.json文件
使用 之前关闭docker进程 或systmctl docker reload

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.mybacc.com",
"https://dytt.online",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://docker.yomansunter.com",
"https://aicarbon.xyz",
"https://666860.xyz",
"https://docker.zhai.cm",
"https://a.ussh.net",
"https://hub.littlediary.cn",
"https://hub.rat.dev",
"https://docker.m.daocloud.io"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
针对docker速度问题吧可以修改/etc/resolv.conf 提高速度

由于dokcer search 查询到的是公有仓库的镜像,而我们docker search 查看的是本地私有镜像,所以docker search 查询不到本地镜像。

若出现容器被占用情况,可以先停止容器,然后再删除镜像
#停止容器
docker stop containerd-id
# 删除镜像
docker rmi -f containerd-id
# 一次性删除未使用镜像
docker image prune -a
容器管理
前后台运行容器
# 前台运行
[root@localhost docker]# docker run --name my-nginx -p 80:80 nginx:latest
# 后台运行
[root@localhost docker]# docker run -d --name my-nginx2 -p 80:80 nginx:latest
# 查看容器状态
docker ps -a | grep "my-nginx"
# 彻底删除容器
docker stop my-nginx && docker rm my-nginx
查看容器的状态
#1. 查看所有容器状态
docker ps -a
#2. 进入容器
docker exec
#3. 删除容器
docker rm
#4. 查看日志
docker logs
#5. 删除容器
docker rm
#6. 查看日志
docker logs
#7. 资源监控
docker status
Exited 为退出,UP状态为正在启用
