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"]
#!/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