引言
在 DevOps(开发与运维一体化)实践中,Docker 作为容器化技术的代表,是实现 “快速交付、持续集成 / 持续部署(CI/CD)、环境一致性” 的核心工具之一。它通过解决传统开发与运维中的环境差异、资源浪费、部署复杂等问题,极大地推动了 DevOps 的落地效率。
Docker 的功能围绕 “容器化” 展开,核心是通过镜像(Image) 和容器(Container) 实现应用的打包、分发、运行与隔离
Docker部署
Linux版本:CentOS Linux release 7.9.2009 (Core)
内核版本:Linux centos.com 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
1.安装一些必要的工具
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加软件源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.更新缓存并安装docker-ce
yum clean all
yum makecache
yum install -y docker-ce
4.启动docker并设置开机自启
systemctl start docker.service
systemctl enable docker.service
5.修改docker镜像源
[root@centos ~]# vim /etc/docker/daemon.json
{"registry-mirrors": [
"https://docker.fxxk.dedyn.io",
"https://docker.xn--6oq72ry9d5zx.cn",
"https://docker.m.daocloud.io",
"https://a.ussh.net",
"https://docker.zhai.cm"]}
6.重新加载 daemon.json并重启docker
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl restart docker.service
到这里,就可以正常使用docker了 ,下面介绍一些docker常用命令
docker --help 获取docker命令帮助
docker cp --help 查询docker 子命令
docker pull centos 从网络拉取centos镜像
docker images 查询本地镜像
docker tag 修改镜像名称
docker inspect 获取镜像的元数据
docker push 上传数据
docker rmi 删除镜像
docker ps -a 查询所有镜像
docker exec -it 登录容器
docker run -itd 运行容器
docker stop centos 停止运行的容器
docker rm -f centos 删除停止的容器
拉取httpd的镜像
运行httpd容器,-p指定映射宿主机的端口是80
[root@centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 5bdbc621ec08 4 days ago 148MB
nginx latest 2cd1d97f893f 13 days ago 192MB
redis latest 0378d73bea8b 3 weeks ago 128MB
tomcat latest 9ca267cc83c7 3 weeks ago 468MB
centos 7.9.2009 eeb6ee3f44bd 3 years ago 204MB
[root@centos ~]# docker run -itd --name=apache1.0 -p 80:80 httpd:latest
0d50ef8eed72ce409f35731cf4b840292b7f5e294fb71f8b1082774a37d8f27d
[root@centos ~]#
使用docker ps -a查看运行的容器,如果未运行成功 使用docker logs 镜像名 来查看日志
[root@centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d50ef8eed72 httpd:latest "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp apache1.0
[root@centos ~]#
这个时候,就可以访问宿主机的ip来访问服务

删除运行的容器
[root@centos ~]# docker rm -f apache1.0
apache1.0
Docker部署私人仓库(harbor)
Harbor介绍
Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装
harbor核心组件
• Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
• db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
• UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
• jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
• Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
• Registry:镜像仓库,负责存储镜像文件。
• Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后 进行分析
记得编辑docker的配置文件,源改为本地harbor的地址,否则还是优先走网络仓库,并重启docker
准备工作至少两台机器,一台当agent,一台是harbor镜像服务器
1.更换华为源并安装扩展源
[root@master ~]# mkdir /etc/yum.repos.d/old
[root@master ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/old/
[root@master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
[root@master ~]# yum makecache fast
安装扩展源
[root@master ~]# yum install epel-release.noarch
安装docker-ce源
[root@master ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# yum install docker-ce
[root@master ~]# yum install docker-compose
启动docker
[root@master ~]# systemctl restart docker
2.安装harbor
官网:https://github.com/vmware/harbor/releases
安装有两种方式,一种是off-line ,一种是on-line,即离线和在线安装,离线安装需要下载的安装包较大,在线安装下载的安装包很小,可以根据自己的情况选择,我选择的是harbor-online-installer-v2.0.0.tgz 版本
[root@master ~]# tar -xvf harbor-online-installer-v2.0.0.tgz
[root@master ~]# cd harbor
[root@master harbor]# cp harbor.yml.tmpl harbor.yml cp一份配置文件
需要的文件:
master.crt:服务器端的证书文件,master.key:服务器端的秘钥 ,ca.crt:客户端的证书文件
生成ca秘钥和自签名ca证书
[root@master harbor]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:EAST
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:master.com
Email Address []:
.生成证书签名请求(域名访问,就把common name的值写为域名)
[root@master harbor]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout master.com.key -out master.com.csr
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:EAST
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:master.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
生成证书
[root@master harbor]# openssl x509 -req -days 365 -in master.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out master.com.crt
Signature ok
subject=/C=CN/ST=BJ/L=BJ/O=EAST/OU=IT/CN=master.com
Getting CA Private Key
这个时候ls当前目录就可以看到四个文件

将harbor目录移动到/etc下
[root@master ~]# cp -r /root/harbor /etc/ -r递归
配置证书和私钥文件位置
[root@master ~]# vim /etc/harbor/harbor.yml

执行install.sh安装harbor
[root@master ~]# /etc/harbor/install.sh
? ----Harbor has been installed and started successfully.----
有successfully就是成功啦,可以去浏览器访问仓库了
访问:https://192.168.0.200/harbor,默认账号是 admin 密码 Harbor12345

docker登录
首先配置host,然后在 /etc/docker/certs.d目录下创建目录,目录名称就是配置的hostname。然后将客户端证书放入该目录即可
[root@master ~]# mkdir -p /etc/docker/certs.d/master.com
[root@master ~]# cp /etc/harbor/ca.crt /etc/docker/certs.d/master.com
[root@master ~]# docker login master.com
Username: admin
Password: Harbor12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
登录harbor,可以看到有一个预置的项目,library

测试推送
[root@master ~]# docker pull lanvv/centos7.5-yum
[root@master ~]# docker tag lanvv/centos7.5-yum master.com/library/centos7.5
[root@master ~]# docker push master.com/library/centos7.5
The push refers to repository [master.com/library/centos7.5]
214ee3fcbf95: Pushed
1d31b5806ba4: Pushed
latest: digest: sha256:8b6ce104f680f69dd67443068fd92d1692e8eb707d80dbefdff7232570aa907d size: 737

推送成功
到这里私人harbor仓库就部署完成了,
5440

被折叠的 条评论
为什么被折叠?



