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

安装docker

Dockerfile镜像脚本入门制作

Harbor镜像仓库安装及使用

不过多解释docker直接秀基操

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

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

systemctl stop firewalld
setenforce 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 #安装新版本docker
yum -y install docker-ce #启动并设置开机自启动
systemctl start docker.service
systemctl 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 #设置iPv4
vim /etc/sysctl.conf net.ipv4.ip_forward=1 #重启网卡重启docker
sysctl -p
systemctl restart network
systemctl 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

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

1)编写Dockerfile:

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

2) 构建镜像

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

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

docker images

4) 创建容器

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

5)访问容器

http://20.0.0.50:10086

  

Harbor镜像仓库安装及使用

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

优势:

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

安装Harbor:

#把docker-compose 拖进harbor服务器

#然后给权限,并移动目录

chmod +x docker-compose
mv docker-compose /usr/local/bin

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

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

#然后去改配置文件

cd /opt/harbor
vim harbor.yml
hostname: 20.0.0.50
port: 85

  

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

./prepare
./install.sh

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

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

Harbor上的操作:

1) 创建项目

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

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

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

2) 创建用户

创建的用户为: lvbu / Lvbu1234

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

角色

权限说明

访客

对于指定项目拥有只读权限

开发人员

对于指定项目拥有读写权限

维护人员

对于指定项目拥有读写权限,创建 Webhooks

项目管理员

除了读写权限,同时拥有用户管理/镜像扫描等管理权限

4) 以新用户登录Harbor

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

Docker要把Harbo加入信任列表中

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["20.0.0.50:85"]
} 

然后重启docker

systemctl restart docker  

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

docker login -u lvbu -p Lvbu1234 20.0.0.50:85 

然后在推送一下下:

docker push 20.0.0.50:85/tensquare/eureka:v1 

再去Harbor刷新看一下:

 

 

如何拉取呢?

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

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

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["20.0.0.50:85"]
}

  

然后一样~~:

先登录在拉取:

docker login -u lvbu -p Lvbu1234 20.0.0.50:85

  

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

去执行就可以了:

最后查看一下:docker images

Devops 开发运维高级篇之容器管理的更多相关文章

  1. Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上)

    Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上) Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 1) 开发 ...

  2. Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化

    Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成--部署方案优化 之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个 ...

  3. Devops 开发运维高级篇之微服务代码上传和代码检查

    Devops 开发运维高级篇之微服务代码上传和代码检查 微服务持续集成(1)-项目代码上传到Gitlab 微服务持续集成(2)-从Gitlab拉取项目源码 微服务持续集成(3)-提交到SonarQub ...

  4. (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)

    本文是<快速创建网站>系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  5. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

  6. 逼格高又实用的Linux高级命令,开发运维都要懂!

    在运维的坑里摸爬滚打好几年了,我还记得我刚开始的时候,我只会使用一些简单的命令,写脚本的时候,也是要多简单有多简单,所以有时候写出来的脚本又长又臭. 像一些高级点的命令,比如说 Xargs 命令.管道 ...

  7. 转载----开发运维资产管理系统cmdb一些观点扯淡

    在新公司负责全网的自动化运维平台及给各个业务线提供接口数据.这工作和以前做的很类似,也算是比较顺手的工作,这段时候遇见一些问题,导致开发的前进速度的放慢了,具体有哪些的不完善,我这里就先不摆出了,但是 ...

  8. 分享一款一直在维护的【网络开发运维|通用调试工具】: http请求, websocket,cmd, RSA,DES, 参数签名工具,脚本批量生成工具,google动态口令,端口检测,组件注册,js混淆...

    首先发下下载地址:https://files.cnblogs.com/files/taohuadaozhu/ConfigLab.Test.ex.rar 日常开发,运维,跨部门跨公司对接中.  想快速调 ...

  9. Redis开发运维的陷阱及避坑指南

    原文首发于博客园,作者:后青春期的Keats:地址:https://www.cnblogs.com/keatsCoder/ 转载请注明,谢谢! Linux 配置优化 我们在使用 Redis 过程中,可 ...

随机推荐

  1. 备忘录——基于rdlc报表实现打印产品标签

    目录 0. 背景说明 1. 条形码生成 2. 获取产品的小程序码 3. 报表设计器设计标签模版 3.1 为WinForm控件工具箱添加ReportViewer控件 3.2 为VS2019安装RDLC报 ...

  2. 《剑指offer》面试题31. 栈的压入、弹出序列

    问题描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2 ...

  3. 使用idea时jsp中使用out.print();时报错的解决办法

    在用Maven创建web项目时 在jsp页面中out.print();老是报错 这边print显示红色出错因为这边使用的是JSP的API并不是Servlet的,但是可以运行,所以我们只要导包就完事其实 ...

  4. 【机器学习】kNN

    机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...

  5. 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  6. Redisson 实现分布式锁原理分析

    Redisson 实现分布式锁原理分析   写在前面 在了解分布式锁具体实现方案之前,我们应该先思考一下使用分布式锁必须要考虑的一些问题.​ 互斥性:在任意时刻,只能有一个进程持有锁. 防死锁:即使有 ...

  7. 集合框架-HashSet存储自定义对象

    1 package cn.itcast.p4.hashset.test; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 6 ...

  8. 不难懂------适配移动端flexible

    基于 vue-cli 配置手淘的 lib-flexible + rem,实现移动端自适应 安装 flexible npm install lib-flexible --save 引入 flexible ...

  9. hadoop 支持 LZO 压缩配置

    1)hadoop 本身并不支持 lzo 压缩,故需要使用 twitter 提供的 hadoop-lzo 开源组件.hadoop lzo 需依赖 hadoop 和 lzo 进行编译,编译步骤如下. 编译 ...

  10. 为什么内部类调用的外部变量必须是final修饰的?

    感谢原文:https://blog.csdn.net/u010393325/article/details/80643636 因为生命周期的原因.方法中的局部变量,方法结束后这个变量就要释放掉,fin ...