DevOps----Docker部署

引言

        在 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仓库就部署完成了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值