Docker 入门
简介:Docker是基于Go语言实现的云开源项目,通过镜像将除了系统之外所需要的系统环境由下而上打包,达到服务跨平台的无缝运作,简单的说就是把特定的环境一模一样地搬过来。
1. 安装Docker,参考官方文档:https://docs.docker.com/engine/install/centos/;
A.安装软件包:yum install -y yum-utils device-mapper-persistent-data lvm2;
B. 配置仓库:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
C. 安装docker:yum install docker-ce -y;
2. 卸载Docker
A. 停止运行的docker:systemctl stop docker;
B. 查看yum或rpm安装的docker文件包:yum list installed | grpe docker;
C. 删除所有安装的docker文件包:yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64;
D. 删除docker目录:rm -rf /var/lib/docker。
3. Docker概念
A. 镜像(Image):用于创建Docker容器的只读模板,镜像是特殊文件叠加而成的,相当于一个root文件系统;
B. 容器(Container):是独立运行、相互隔离的一个或一组应用,是镜像创建的运行实例,它和镜像的关系,就像Java中实例和类一样,容器可以看做简易版的Linux环境+应用程序;
容器的五个状态:
Created:容器已经创建,容器所需的相关资源已经准备就绪;
Running:容器正在运行,是应用正在运行;
Paused:容器已暂停,容器中所有程序处于暂停,而不是停止状态;
Stopped:容器已停止,只是容器中应用处于停止状态;
Deleted:容器已删除,相关占用的资源已释放;
容器重启策略(restart_policy)判断依据:进程退出(Container process exited)或内存溢出(killed by out of memory);
C. 仓库(Repository):存放镜像文件的地方,就像代码控制中心,分公有仓库和私有仓库;
D. 宿主机(Host):一个物理或者虚拟的机器用于执行Docker守护进程和容器。
4. Docker仓库
A. Docker仓库即:Docker Hub
B. 阿里云仓库,用来加速
C. 搭建私有仓库
第一步:启动Docker Registry
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry: 2
第二步:重命名镜像:docker tag hello-world:latest localhost:5000/my-registry
第三步:推送镜像:docker push localhost:5000/my-registry
第四步:查看本地仓库镜像:http://localhost:5000/v2/my-registry/tags/list
D. 配置私有仓库认证
第一步:查看Docker registry私有仓库搭建服务器地址:ifconfig
第二步:生成自签名证书
第三步:生成用户名和密码
第四步:重启Docker registry本地镜像仓库服务
第五步:配置Docker registry访问接口
第六步:Docker registry私有仓库使用登记
第七步:重启并加载docker配置文件
5. docker目录介绍
A. containers:用于存储容器信息,每启动一个容器都会记录在这;
B. image:用于存储镜像中间件及本身信息、大小和依赖信息,默认里面只有一个overlay2目录;
C. network:docker的网关、容器的IP地址等信息;
D. overlay2:docker存储驱动;
E. plugins:docker插件;
F. swarm:docker swarm集群信息;
G. tmp:docker临时目录;
H. trust:docker信任目录;
I. volumes:docker卷目录。
可参考:docker存储目录详解
二、Harbor私有仓库
1. 简介:Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
2. Harbor部署
A. 先确保docker已经安装,未安装可参考:Docker官方文档;
B. 再确保docker-compose已经安装,未安装可参考:Docker Compose编排工具;
C. 下载harbor安装文件,可前往Github下载;
wget https://github.com/vmware/harbor/releases/download/v2.1.3/harbor-online-installer-v2.1.3.tgz
tar -xvf harbor-online-installer-v2.1.3.tgz
D. 根据harbor.yml.tmpl模板创建harbor.yml文件;
# 目标主机的主机名,用于访问Portal和注册表服务
hostname: 192.168.102.10 http: port: 8080 # 管理员的初始密码,此密码仅在Harbor首次启动时生效 harbor_admin_password: admin
#database:
# 用于db_auth的PostgreSQL数据库的root密码
#password: root123
# 存储数据的位置,映射到宿主机
data_volume: /data
jobservice:
# 作业服务中的最大复制工作者数
max_job_workers: 10
log:
level: info
local:
# 日志存储目录
location: /var/log/harbor
# 外部数据库配置,目前只支持POSTGRES
external_database:
# 核心数据库配置
harbor:
host: harbor_db_host
port: harbor_db_port
db_name: harbor_db_name
username: harbor_db_name
password: harbor_db_password
# 配置使用外部redis
external_redis:
host: redis:6379
password: 123456
E. 启动harbor:sh /usr/local/harbor/install.sh;
F. 访问地址:http://192.168.102.10:8080,用户名/密码为admin/admin;
G. harbor修改harbor.yml配置文件后重启。
# -f 指定使用的compose文件,-d表示以后台方式启动
docker-compose -f docker-compose.yml up -d
# 启动已经存在的服务容器
docker-compose start
# 停止已经处于运行状态的容器
docker-compose stop
3. Harbor核心组件
A. db:负责储存用户权限、审计日志、Docker Image分组信息等数据;
B. Proxy:是一个nginx的前端代理,代理Harbor的registry,UI, token等服务;
C. UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权;
D. jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log;
E. Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置;
F. Registry:镜像仓库,负责存储镜像文件;
G. Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
4. Harbor使用
A. 在/etc/docker/daemon.json文件中增加:"insecure-registries":["192.168.102.10:8080"],然后重启docker;
B. Linux登录Harbor:docker login -u admin -p admin 192.168.102.10:8080;
C. 制作镜像标签:docker tag prom/prometheus:latest 192.168.102.10:8080/rhxy/prom/prometheus:latest;
D. 推送镜像:docker push 192.168.102.10:8080/rhxy/prom/prometheus。
5. 问题集绵
可参考:数据库不建议部署在docker内
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架