第一部分 基础环境配置以及安部署
1. Linux基础配置
关闭SELinux
# 修改配置文件
[root@Master ~]# SELINUX=disabled
关闭防火墙
# 停止并禁用防火墙
[root@Master ~]# systemctl stop firewalld
[root@Master ~]# systemctl disable firewalld
# 查看防火墙状态
[root@Master ~]# sudo firewall-cmd --state
安装Docker所需依赖
[root@Master ~]# yum install wget yum-utils device-mapper-persistent-data lvm2 bridge-utils -y
# 如果系统为9以上的版本,bridge-utils需要手动下载,安装
# 说明:bridge-utils这个包是用来查看docker网络的
[root@Master ~]# wget -O bridge-utils-1.7.1-3.el9.x86_64.rpm https://mirrors.aliyun.com/epel/9/Everything/x86_64/Packages/b/bridge-utils-1.7.1-3.el9.x86_64.rpm?spm=a2c6h.25603864.0.0.7ffe476dlMkW3E
下载阿里云的软件源文件
# 请先备份系统默认yum源,如果是9以下的版本,注意替换数值,然后请执行如下命令,9以上的请跳过该步骤
[root@Master ~]# mv /etc/yum.repo.d/*.repo /media
[root@Master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Master ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@Master ~]# curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@Master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
替换为开源的(因为默认的docker是收费的,我们替换为社区免费版)
[root@Master ~]# sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
更新yum缓存并安装基础工具
[root@Master ~]# yum clean all && yum makecache
[root@Master ~]# yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
2. 开启Linux内核的流量转发功能
查看CentOS内核版本
[root@Master ~]# uname -r
开启流量转发
[root@Master ~]# cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward = 1
EOF
# 加载修改内核的参数
[root@Master ~]# modprobe br_netfilter
[root@Master ~]# sysctl -p /etc/sysctl.d/docker.conf
3. 利用yum快速安装Docker
查看可用的Docker版本
[root@Master ~]# yum list docker-ce --showduplicates | sort -r
安装指定版本的Docker
[root@Master ~]# yum install docker-ce-24.0.7 -y
配置镜像加速器
# 对于Docker客户端版本大于1.10.0的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
[root@Master ~]# sudo mkdir -p /etc/docker
# 阿里云镜像加速器地址,从阿里云控制台获取
[root@Master ~]# sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://3544er7r.mirror.aliyuncs.com"]
}
EOF
错误处理
# 如果遇到安装错误,请先卸载旧版本的Docker组件
[root@Master ~]# yum remove -y docker \
docker-client \
docker-client-latest \
docker-latest \
docker-common \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 删除所有旧的数据
[root@Master ~]#rm -rf /var/lib/docker && rm -rf /usr/bin/docker
4.安装 docker-compose
# 建议提前下载,在线下载很慢
[root@Master ~]# curl -L "https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-$(uname -s)-$(uname -m)"
[root@Master ~]# cp docker-compose-linux-x86_64 docker-compose
[root@Master ~]# chmod +x docker-compose
[root@Master ~]# cp docker-compose /usr/local/bin && ln -s /usr/local/bin/docker-compose /usr/bin
设置Docker开机自启动并重启服务
[root@Master ~]# systemctl enable docker
[root@Master ~]# systemctl restart docker
查看Docker版本
[root@Master ~]# docker version # docker 详情
[root@Master ~]# docker -v # docker版本号
[root@Master ~]# docker-compose -v # docker-compose版本号
Docker Compose version v2.27.1
测试
# 如果没有报错,证明安装成功
[root@Master ~]# docker pull hello-world
[root@Master ~]# docker images
Docker服务的启停
[root@Master ~]# sudo systemctl daemon-reload
[root@Master ~]# sudo systemctl start docker # 启动
[root@Master ~]# sudo systemctl stop docker # 停止
第二部分 docker的具体使用
1. 镜像搜索、拉取、删除
# 镜像仓库名/镜像名:标签 (注意:我们一般情况选择官方镜像OFFOCIAL【OK】的,在删除的时候尽量不要加-f参数,否则可能会把正在运行的容器给删掉)
[root@Master ~]# docker search hello-world
# docker search 参数介绍
--limit 3:只查询前3条
--no-trunc:完整的描述信息,如果描述信息过长,会用…展示
[root@Master ~]# docker search hello-world --limit 3
[root@Master ~]# docker search hello-world --limit 3 --no-trunc
[root@Master ~]# docker pull hello-world # 拉取镜像
[root@Master ~]# docker images # 查看已经拉取到的镜像
[root@Master ~]# docker image list # 查看已经拉取到的镜像
[root@Master ~]# docker rmi hello-world # 删除镜像
[root@Master ~]# docker rmi -f $(docker ps -aq) # 批量删除镜像
2. 容器命令的常见参数
├── 基本语法
│ ├── IMAGE: 指定要使用的镜像
│ ├── COMMAND: 覆盖镜像中的默认命令
│ └── ARG...: 传递给命令的参数
├── 运行方式
│ ├── -d: 后台运行容器
│ ├── -i: 以交互模式运行容器
│ └── -t: 为容器分配一个伪终端
├── 端口映射
│ ├── -P: 随机端口映射
│ └── -p: 指定端口映射
├── 容器命名
│ └── --name: 为容器指定名称,标识容器,方便管理和操作
├── 容器管理
│ ├── --rm: 容器停止后自动删除,自动清理容器,节省资源
│ └── -v 或 -volume: 挂载主机目录到容器,数据持久化,挂载主机目录到容器
├── 网络配置
│ └── -dns: 设置DNS服务器
├── 环境设置
│ ├── -e: 设置环境变量
│ └── -h: 指定容器hostname
├── 权限和性能
│ ├── --privileged: 容器内使用真正root权限
│ └── -u: 指定用户身份创建容器
├── 自动重启策略
│ └── --restart: 设置容器自动重启策略
├── 其他选项
├── -link: 添加链接到其他容器
├── --expose: 开放一个端口或一组端口
└── -it: 组合使用提供交互式体验
# 例如:我们启动一个容器名称为nginx,端口映射为8080,80为容器端口,最后一个nginx为镜像名称
[root@Master ~]# docker run -d --name nginx -p 8080:80 nginx
3. 启动容器、关闭容器、删除容器
启动(注意:启动时,端口,容器别名不能重复)
# 启动(后台)
[root@Master ~]# docker run -d --name nginx -p 8080:80 nginx
# 进入容器
[root@Master ~]# docker exec -it nginx /bin/bash
# 启动并进入容器
[root@Master ~]# docker run -it --name nginx1 -p 80:80 nginx /bin/bash
停止
# 语法:docler stop/kill 运行时镜像别名/运行镜像的ID
[root@Master ~]# docker stop nginx
[root@Master ~]# docker kill nginx
检查容器状态
[root@Master ~]# docker ps -a # 容器异常(命令错误或者容器已停止退出)
[root@Master ~]# docker ps # 正常运行的容器
删除
# 删除容器时,要么加-f强制删,要么先停止,再删除,否则会报错
[root@Master ~]# docker rm nginx # 不能删除正在运行的容器,建议这种方式
[root@Master ~]# docker container prune -f # 删除所有已退出的容器
# 正式环境不允许,会把正在运行的容器给删除
[root@Master ~]# docker rm -f nginx # 不建议
4. 批量删除
# 批量删除容器
[root@Master ~]# docker rm -f $(docker ps -aq)
# 批量删除镜像
[root@Master ~]# docker rmi -f $(docker images -q)
5. 实验(运行nginx并访问)
# 运行容器
[root@Master ~]# docker run -d --name nginx -p 8090:80 nginx
# 用浏览器访问测试
6. Docker 网络
# Docker 默认会创建三块网卡,容器默认使用桥接模式
[root@Master ~]# docker network ls # 查看Docker虚拟网卡
# 查看容器主机信息
[root@Master ~]# docker exec -it nginx hostname -i
[root@Master ~]# docker inspect nginx