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

相关推荐
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS4 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心4 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing4 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)4 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang4 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren4 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
羑悻的小杀马特4 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe4 天前
docker常见命令
docker
正经教主4 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde