Devops 开发运维高级篇之容器管理

虚幻大学 虚幻 359℃ 0评论

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

Devops 开发运维高级篇之容器管理

安装docker

Dockerfile镜像脚本入门制作

Harbor镜像仓库安装及使用

不过多解释docker直接秀基操

安装docker:(jenkins服务器 20.0.0.30 、Harbor 20.0.0.50 、 生产服务器 20.0.0.60)

命令操作可以见之前我的文章:docker 介绍及安装操作 - 隐姓埋名4869 - 博客园 (cnblogs.com)

?

| 1234567891011121314151617181920212223242526272829303132333435363738394041 | systemctl stop firewalldsetenforce 0#安装依赖包yum -y install yum-utils device-mapper-persistent-date lvm2 #设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装新版本dockeryum -y install docker-ce #启动并设置开机自启动systemctl start docker.servicesystemctl enable docker.service #镜像加速下载(这里是我的阿里云的镜像加速)vim /etc/docker/daemon.json {"registry-mirrors": ["https://au0weiai.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}} #加载重启systemctl daemon-reload systemctl restart docke #设置iPv4vim /etc/sysctl.conf net.ipv4.ip_forward=1 #重启网卡重启dockersysctl -psystemctl restart networksystemctl restart docker |

  

Dockerfile镜像脚本入门制作

Dockerfile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的组合,只要理解它的逻辑和语法格式,就可以编写Dockerfile了。

简单点说,Dockerfile的作用:它可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。

Dockerfile**常见命令:**

| 命令 | 作用 |
| FROM image_name:tag | |
| MAINTAINER user_name | 声明镜像的作者 |
| ENV key value | 设置环境变量 (可以写多条) |
| RUN command | 编译镜像时运行的脚本(可以写多条) |
| CMD | 设置容器的启动命令 |
| ENTRYPOINT | 设置容器的入口程序 |
| ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
| COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
| WORKDIR path_dir | 设置工作目录 |
| ARG | 设置编译镜像时加入的参数 |
| VOLUMN | 设置容器的挂载卷 |

具体用法可以看官网示例

接下来我们用dockerfile制作微服务镜像

我们利用Dockerfile制作一个Eureka注册中心的镜像

上传Eureka的微服务jar包到linux

?

| 1234 | cd ~mkdir testcd test把idea打包的jar包拖进test文件里! |

1)编写Dockerfile:

?

| 1 | vim Dockerfile |

?

| 12345 | FROM openjdk:8-jdk-alpine ARG JAR_FILECOPY ${JAR_FILE} app.jar EXPOSE 10086ENTRYPOINT ["java","-jar","/app.jar"] |

2) 构建镜像

?

| 1 | docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 . |

3) 查看镜像是否创建成功

?

| 1 | docker images |

4) 创建容器

?

| 1 | docker run -i --name=eureka -p 10086:10086 eureka:v1 |

5)访问容器

?

| 1 | http://20.0.0.50:10086 |

4876b59847809816d5bbb5db439bf028 - Devops 开发运维高级篇之容器管理

fb68c4b2b2e454e55e87380bcf414574 - Devops 开发运维高级篇之容器管理

  

Harbor镜像仓库安装及使用

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

优势:

  • 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定 传输的对象。
  • 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
  • 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
  • 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限, 具有更好的安全性。

安装Harbor:

把docker-compose 拖进harbor服务器

然后给权限,并移动目录

?

| 12 | chmod +x docker-composemv docker-compose /usr/local/bin |

把harbor安装包拖进去harbor服务器然后解压

?

| 1 | tar zxvf harbor-offline-installer-v1.9.2.tgz -C /opt |

然后去改配置文件

?

| 1234 | cd /opt/harborvim harbor.ymlhostname: 20.0.0.50port: 85 |

  

d7142304172e395561140cda9e80517c - Devops 开发运维高级篇之容器管理

然后,安装Harbor(docker要处于启动状态)systemctl status docker 看一下

?

| 12 | ./prepare./install.sh |

访问:http://20.0.0.50:85默认账户:admin默认密码:Harbor12345

e24c71c21bc1f42212d0c6ed4908d970 - Devops 开发运维高级篇之容器管理

补充:启动harbordocker-compose up -d 启动docker-compose stop 停止docker-compose restart 重新启动

Harbor上的操作:

1) 创建项目

Harbor的项目分为公开和私有的:

公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。 私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。

我们可以为微服务项目创建一个新的项目:

7e90d5e4aaf694ad7da32a17fa6c11b7 - Devops 开发运维高级篇之容器管理

2) 创建用户

04d45ae2a1a22d2d642fff5e7ad230a5 - Devops 开发运维高级篇之容器管理

07bb302c69e2df8915476496bf891b2d - Devops 开发运维高级篇之容器管理

创建的用户为: lvbu / Lvbu1234

3) 给私有项目分配用户进入tensquare项目->成员

5f6a158d44e8860de56c2ad43116a1b0 - Devops 开发运维高级篇之容器管理

58d1e324c2276146f06aca45bc8ae91a - Devops 开发运维高级篇之容器管理

| 角色 | 权限说明 |
| 访客 | 对于指定项目拥有只读权限 |
| 开发人员 | 对于指定项目拥有读写权限 |
| 维护人员 | 对于指定项目拥有读写权限,创建 Webhooks |
| 项目管理员 | 除了读写权限,同时拥有用户管理/镜像扫描等管理权限 |

4) 以新用户登录Harbor

a52020cfe19fa9c0999ed77097313011 - Devops 开发运维高级篇之容器管理

如何把之前创建的镜像上传到Harbor ?

f48c43962818ffd5ee9d8b51e9bad0ff - Devops 开发运维高级篇之容器管理

Docker要把Harbo加入信任列表中

?

| 1 | vim /etc/docker/daemon.json |

?

| 1234 | {"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"]} |

然后重启docker

?

| 1 | systemctl restart docker |

然后登录harbor 用之前创建的lvbu账户

?

| 1 | docker login -u lvbu -p Lvbu1234 20.0.0.50:85 |

然后在推送一下下:

?

| 1 | docker push 20.0.0.50:85/tensquare/eureka:v1 |

再去Harbor刷新看一下:

a2f864209a5cf170bfd2ed9483e42e49 - Devops 开发运维高级篇之容器管理

 

 

如何拉取呢?

开一台webserver服务器,安装好docker

然后修改配置:和之前的一样的

?

| 1 | vim /etc/docker/daemon.json |

?

| 1234 | {"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"]} |

c2bd371c2fd7dd6112bcf3acbb302114 - Devops 开发运维高级篇之容器管理

  

然后一样~~:

先登录在拉取:

?

| 1 | docker login -u lvbu -p Lvbu1234 20.0.0.50:85 |

  

登录上后直接在harbor找到项目镜像然后点击复制命令

去执行就可以了:

最后查看一下:docker images

9aec8c40ac175341232f64029ef3ed5f - Devops 开发运维高级篇之容器管理

41b15e63b334464c7f4508fd273ad2e7 - Devops 开发运维高级篇之容器管理

转载请注明:虚坏叔叔 » Devops 开发运维高级篇之容器管理

喜欢 (0)

您必须 登录 才能发表评论!