CentOS 7 极简 Docker 部署指南:从安装到私有仓库全流程(def0)

引言:(可以跳过)

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

一、安装Docker最新版

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1、配置Docker的yum库

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

注意:上述的执行结果要类似上图所示, repo saved to .... 如果有Could not 类似的字眼说明保存失败;请重新执行直到成功。

如果失败(上面2行代码):运行这行代码:(这种12345的错误)

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old
vi /etc/yum.repos.d/CentOS-Base.repo

复制以下内容到新建CentOS-Base.repo配置中

i进入修改模式,按Esc加:(冒号)加wq(小写),保存并退出。

[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
sudo yum clean all
sudo yum makecache
再尝试yum安装即可成功

2、安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

注意:如果出现 网络不可达 的情况;请更换网络重新执行命令。

3、启动和校验

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 启动Docker
systemctl start docker​
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker​
# 设置开机自启
systemctl enable docker​
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

4、配置镜像加速

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.xuanyuan.me"
    ]
}
EOF

如果最后测试拉取镜像不行(使用此方法)(先跳过不看)(拉取镜像成功,跳过此步)

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
  "https://docker.1ms.run",
  "https://docker.xuanyuan.me",

"https://docker.registry.cyou",

"https://docker-cf.registry.cyou",

 "https://dockercf.jsdelivr.fyi",

"https://docker.jsdelivr.fyi",

"https://dockertest.jsdelivr.fyi",

  "https://mirror.aliyuncs.com",

"https://dockerproxy.com",

"https://mirror.baidubce.com",

 "https://docker.m.daocloud.io",

"https://docker.nju.edu.cn",

"https://docker.mirrors.sjtug.sjtu.edu.cn",

"https://docker.mirrors.ustc.edu.cn",

"https://mirror.iscas.ac.cn",

"https://dockerpull.com",

"https://docker.rainbond.cc",

"https://dockerpull.com",

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

"https://docker.211678.top"

  ]
}EOF

测试:

docker pull nginx

一、Docker 安装与初始化

1. 系统环境准备

bash

# 更新系统  
yum update -y  
# 安装依赖包  
yum install -y yum-utils device-mapper-persistent-data lvm2  
# 添加 Docker CE 阿里云源  
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
# 安装最新 Docker CE  
yum install -y docker-ce  
# 启动并设置开机自启  
systemctl start docker && systemctl enable docker  

2. 验证安装

bash

docker version  
# 测试运行 Hello World  
docker run hello-world  

二、镜像拉取与加速优化

1. 拉取镜像(示例:Nginx)

bash

# 拉取最新版本  
docker pull nginx:latest  
# 查看本地镜像  
docker images  

2. 配置国内镜像加速器(可选)

bash

# 创建 Docker 配置文件  
mkdir -p /etc/docker  
cat > /etc/docker/daemon.json <<EOF  
{  
  "registry-mirrors": ["https://hub-mirror.c.163.com"]  
}  
EOF  
# 重启 Docker 生效  
systemctl restart docker  

三、自建 Docker 私有镜像仓库

1. 启动本地仓库容器

bash

# 创建存储目录  
mkdir -p /mnt/registry  
# 运行私有仓库(HTTP 模式,生产环境建议 HTTPS)  
docker run -d \  
  --restart always \  
  --name registry \  
  -p 5000:5000 \  
  -v /mnt/registry:/var/lib/registry \  
  registry:2  

2. 配置 Docker 信任本地仓库

bash

# 编辑 Docker 配置  
cat > /etc/docker/daemon.json <<EOF  
{  
  "insecure-registries": ["localhost:5000"]  
}  
EOF  
# 重启 Docker  
systemctl restart docker  

3. 构建并推送自定义镜像

(1)创建测试镜像

bash

# 新建测试目录  
mkdir myapp && cd myapp  
# 创建 Dockerfile  
cat > Dockerfile <<EOF  
FROM nginx:latest  
RUN echo "Hello Private Registry" > /usr/share/nginx/html/index.html  
EOF  
# 构建镜像  
docker build -t localhost:5000/myapp:v1 .  

(2)推送至私有仓库

bash

docker push localhost:5000/myapp:v1  
(3)验证镜像仓库

bash

# 访问仓库列表(浏览器)  
http://localhost:5000/v2/_catalog  
# 拉取并运行测试  
docker run -d -p 8080:80 localhost:5000/myapp:v1  

四、镜像持续更新策略

1. 手动更新流程

bash

# 拉取最新基础镜像  
docker pull nginx:latest  
# 重新构建镜像  
cd myapp && docker build -t localhost:5000/myapp:v2 .  
# 推送新版本  
docker push localhost:5000/myapp:v2  
# 更新容器(示例)  
docker stop myapp_container && docker rm myapp_container  
docker run -d -p 8080:80 --name myapp_container localhost:5000/myapp:v2  

2. 自动化更新方案

(1)GitHub Actions 自动构建

yaml

# .github/workflows/docker.yml  
name: Docker Build and Push  
on: [push]  
jobs:  
  build:  
    runs-on: ubuntu-latest  
    steps:  
      - uses: actions/checkout@v4  
      - name: Set up Docker Buildx  
        uses: docker/setup-buildx-action@v3  
      - name: Login to Docker Registry  
        uses: docker/login-action@v3  
        with:  
          registry: localhost:5000  
          username: ${{ secrets.REGISTRY_USER }}  
          password: ${{ secrets.REGISTRY_PASSWORD }}  
      - name: Build and push  
        uses: docker/build-push-action@v5  
        with:  
          context: .  
          push: true  
          tags: localhost:5000/myapp:${{ github.sha }}  

(2)Watchtower 自动更新

bash

# 安装 Watchtower  
docker run -d \  
  --name watchtower \  
  --restart always \  
  -v /var/run/docker.sock:/var/run/docker.sock \  
  containrrr/watchtower  

五、生产环境优化建议

1. 安全加固

bash

# 生成自签名证书(HTTPS 模式)  
mkdir -p /etc/docker/certs.d/localhost:5000  
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \  
  -keyout /etc/docker/certs.d/localhost:5000/key.pem \  
  -out /etc/docker/certs.d/localhost:5000/cert.pem \  
  -subj "/CN=localhost"  
# 重启仓库容器(HTTPS 模式)  
docker run -d \  
  --restart always \  
  --name registry \  
  -p 5000:5000 \  
  -v /mnt/registry:/var/lib/registry \  
  -v /etc/docker/certs.d/localhost:5000:/certs \  
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/cert.pem \  
  -e REGISTRY_HTTP_TLS_KEY=/certs/key.pem \  
  registry:2  

2. 镜像分层与瘦身

dockerfile

# 多阶段构建示例  
FROM golang:1.20-alpine AS builder  
WORKDIR /app  
COPY . .  
RUN go build -o myapp  

FROM alpine:latest  
WORKDIR /app  
COPY --from=builder /app/myapp .  
CMD ["./myapp"]  

3. 数据持久化

bash

# 使用卷挂载存储  
docker run -d \  
  --restart always \  
  --name registry \  
  -p 5000:5000 \  
  -v registry-data:/var/lib/registry \  
  registry:2  

六、常见问题解决方案

1. 镜像推送失败

bash

# 检查 Docker 配置是否包含 insecure-registries  
cat /etc/docker/daemon.json  
# 重启 Docker 服务  
systemctl restart docker  

2. 仓库证书错误

bash

# 删除旧证书并重新生成(HTTPS 模式)  
rm -rf /etc/docker/certs.d/localhost:5000  
# 重新生成证书并重启仓库  

3. 镜像更新不生效

bash

# 强制拉取最新镜像  
docker pull --force localhost:5000/myapp:v2  

七、总结与扩展

通过以上步骤,你已完成:

  1. Docker 安装与基础配置
  2. 私有镜像仓库搭建
  3. 镜像构建与推送流程
  4. 自动化更新策略

扩展实践

  • 结合 Kubernetes 实现容器编排
  • 使用 Harbor 增强镜像仓库功能(支持权限管理、扫描等)
  • 集成 SonarQube 实现镜像安全扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小红花大酒店

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值