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

相关推荐
阿方索29 分钟前
Kubernetes Pod 管理
云原生·容器·kubernetes
哪里不会点哪里.44 分钟前
Docker
运维·docker·容器
汪碧康1 小时前
一文掌握k8s的健康检查探针
云原生·容器·kubernetes·k8s·xkube·k8s管理平台
危笑ioi1 小时前
k8s创建pv和pvc部署jenkins
kubernetes·jenkins
七七powerful1 小时前
docker 搭建wtsap代理
运维·docker·容器
Shanxun Liao2 小时前
Docker vlmcsd 完整管理指南
运维·docker·容器
有谁看见我的剑了?3 小时前
K8s crictl 客户端学习
学习·容器·kubernetes
怒放de生命20103 小时前
前端子包+docker流水线部署+nginx代理部署
前端·nginx·docker
KubeSphere 云原生3 小时前
云原生周刊:Kubernetes 1.35 新机制与云原生生态更新
云原生·容器·kubernetes
Java程序员威哥3 小时前
云原生Java应用优化实战:资源限制+JVM参数调优,容器启动快50%
java·开发语言·jvm·python·docker·云原生