docker+k8s+centos

docker安装教程

1 docker

1 docker组成

1 Docker Client‌

命令行工具

2 Docker Daemon (dockerd)‌

Docker的后台进程,负责构建、运行和分发Docker容器。

管理Docker镜像、容器、网络和存储卷等。

监听来自Docker Client的请求。

‌3 Docker Images‌:

Docker镜像是一个轻量级、可执行的独立软件包,它包含运行某个软件所需的所有东西:代码、运行时、库、环境变量和配置文件。

镜像可以被容器化,即创建为容器实例。

4 Docker Containers‌

容器是镜像的运行实例。可以被启动、停止、移动和删除。每个容器都是相互隔离的,互不影响。

‌5 Docker Registry‌

存储Docker镜像的仓库。包括公共的Docker Hub和私有仓库(如Docker Registry或Harbor)。

6 Docker Networking‌

管理容器之间的网络连接。支持多种网络模式,如bridge、host、overlay等。

7 Docker Volumes‌

用于持久化数据和配置文件,独立于容器的生命周期。可以被多个容器共享或挂载到容器中。

8 Docker Compose‌

用于定义和运行多容器Docker应用程序的工具。通过一个YAML文件来配置应用程序的服务。

‌9 Docker Swarm‌

Docker的集群管理工具,用于将多个Docker主机虚拟化为单个虚拟的Docker主机。支持服务发现、负载均衡等功能。

10 Kubernetes (K8s)‌

一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

与Docker紧密集成,可以作为更高级别的容器编排工具使用。

这些组件通过Docker Engine协同工作,使得开发者可以轻松地构建、部署和管理容器化应用。通过使用这些工具和组件,可以大大提高开发、测试和部署的效率。

2 安装

1 配置镜像

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

2 安装

yum -y install docker-ce

备注:

如果缺container-selinux 不能用yum安装的话,可以先替换阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7

3 验证

dockerd &

4 systemctl

systemctl enable --now docker可以立即启动并注册成开机启动

sudo usermod -aG docker $USER 需要将客户用户加入到docker组才能连接dockerd

命令 作用 示例

start 启动服务 systemctl start sshd

stop 停止服务 systemctl stop sshd

restart 重启服务 systemctl restart sshd

reload 重新加载服务配置 systemctl reload sshd

enable 设置服务开机自启动 systemctl enable sshd

disable 取消服务开机自启动 systemctl disable sshd

status 查看服务状态 systemctl status sshd

is-active 检查服务是否活动 systemctl is-active sshd

is-enabled 检查服务是否开机自启动 systemctl is-enabled sshd

list-units 列出所有服务状态 systemctl list-units --type=service

list-unit-files 列出所有服务单元文件 systemctl list-unit-files

failed 显示启动失败的服务 systemctl --failed

isolate 切换运行级别 systemctl isolate multi-user.target

5 docker常用命令

停止所有运行中的容器

docker stop $(docker ps -q)

删除所有容器

docker rm $(docker ps -a -q)

3 registry:2搭建

1 配置/etc/hosts

根据实际情况填写,确保网络能访问

|------------------------------------------------------------------------------------------|
| 192.168.1.7 registry1.wyp.test 192.168.1.5 client1.wyp.test 192.168.1.8 client2.wyp.test |

2 安装httpd-tools

yum install httpd-tools -y

3 openssl.conf配置

复制代码
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = CN
ST = SomeState
L = SomeCity
O = MyCompany
OU = MyDivision
CN = registry1.wyp.test

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = registry1.wyp.test
DNS.2 = localhost
IP.1 = 192.168.1.7

4 生成密码

htpasswd -Bbn testuser1 testpwd1 > /root/wypdata/docker-registry/auth/htpasswd

5 运行容器

docker run -d -p 5000:5000 --restart=always --name registry \

-v /root/wypdata/docker-registry/certs:/certs \

-v /root/wypdata/docker-registry/auth:/auth \

-v /root/wypdata/docker-registry/data/registry:/var/lib/registry \

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.crt \

-e REGISTRY_HTTP_TLS_KEY=/certs/docker.key \

-e "REGISTRY_AUTH=htpasswd" \

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

registry:2

对数据目录可以做个冗余备份,如果需要

6 复制证书

cd /etc/docker && mkdir -p certs.d/registry1.wyp.test:5000/

进入到/etc/docker/certs.d/registry1.wyp.test:5000/

scp registry1.wyp.test:/root/wypdata/docker-registry/certs/docker.crt .

/etc/docker/certs.d/your-registry:5000/

需要访问的仓库节点需要将证书复制到对应的目录

7 编写Dockfile

复制代码
# 安装必要工具
# 修改后的Dockerfile片段
RUN cd /etc/yum.repos.d/ && \
    sed -i 's/mirrorlist/#mirrorlist/g' CentOS-* && \
    sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' CentOS-* && \
    yum update -y && \
    yum install -y bash && \
    yum clean all

# 设置工作目录
WORKDIR /app

# 复制启动脚本到容器
COPY hello.sh .

# 设置脚本执行权限
RUN chmod +x hello.sh

# 设置容器启动时执行的命令
ENTRYPOINT ["./hello.sh"]

hello.sh

复制代码
#!/bin/bash
# 打印欢迎信息
echo "=================================="
echo "    Welcome to Docker World!"
echo "=================================="
echo "Hello, World!"
echo "Current time: $(date)"
echo "Running on: $(uname -a)"
echo "=================================="

8 登录仓库

在client1.wyp.test上登录仓库

docker login -u testuser1 -p testpwd1 registry1.wyp.test:5000

9 制作镜像

docker build -t registry1.wyp.test:5000/centos7-hello:v1 .

10 上传镜像

docker push registry1.wyp.test:5000/centos7-hello:v1

docker images registry1.wyp.test:5000/*

11 拉取镜像

在client2.wyp.test登录仓库,拉取镜像

docker pull registry1.wyp.test:5000/centos7-hello:v1

12 运行容器

13 其他

redistry好像没有管理界面和备份机制,Harbor好像有界面,不知道没有备份机制,有更高需求的可以研究。实际上可以简单粗暴的备份磁盘数据,实际上肯能最需要备份的是Dockerfile(可以使用git)

2 k8s安装

1 配置hosts

相关推荐
AI服务老曹3 小时前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频
众人皆醒我独醉3 小时前
Pod 一直 Terminating,死活删不掉?三个凶手,每一个你都意想不到
面试·kubernetes
飞翔沫沫情4 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
辉的技术笔记5 小时前
拆解 Dify 的 Celery:15 个队列都在干什么
docker
潮起鲸落入海10 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
梦想的颜色10 小时前
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill
运维·容器·ai 工程化·沙盒隔离·docker 本地部署·claude code硬核实战·国内国产模型接入
摇滚侠10 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
渣渣盟11 小时前
Docker 运维常用命令手册(含扩容与实战)
运维·docker·容器
小尘要自信11 小时前
小米摄像头怎么接入RTSP?Go2RTC转流、EasyNVR录像与公网访问教程
人工智能·docker·开源
我叫张小白。12 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构