容器镜像构建以及harbor部署

 

Linux中的Namespace

Namespace又称命名空间,主要做访问隔离。其原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用,因为每个容器都有自己的抽象,而它们彼此之间是不可见的,所有就可以做到访问隔离。

 

Namespace是将内核的全局资源做封装,使得每个namespace都有一份独立的资源,因此不同的进程在各自的namespace内对同一种资源的使用不会互相干扰。

Cgroup

     Cgroup 是 Control group 的简称,是 Linux 内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用。对不同资源的具体管理是由各个子系统分工完成的。

     它主要有以下子系统,并且各个子系统作用如下:

 

 

 

 

 

 

验证系统Cgroup:

环境:centos7.6系统

如下图所示:

 

 

CGROUP中的内存模块:

 

 

有了以上的chroot、namespace、cgroups就具备了基础的容器运行环境

 

Dockerfifile构建镜像
 
Dockfifile原理:
在Dockerfifile定义所要执行的命令,使用docker build创建镜像,过程中会按照Dockerfifile所定义的内容打开临时性容器(使用docker commit进行提交),把Dockerfifile文件中的命令全部执行完成,就得到了一个容器应用镜像。
 
Dockerfifile关键字:
FROM(指定基础image)
MAINTAINER(用来指定镜像创建者信息)
RUN (运行命令)
CMD(设置container启动时执行的操作)
ENTRYPOINT(设置container启动时执行的操作)
USER(设置container容器的用户)
EXPOSE(指定容器需要映射到宿主机器的端口)
ENV(用于设置环境变量)
ADD(从src复制文件到container的dest路径)
VOLUME(指定挂载点)
WORKDIR(切换目录) 
 
Dockerfile构建nginx镜像:
 
首先准备一个centos的基础镜像,并安装相应的组件
 
1.创建目录dockfile,然后再创建centos ,nginx 2个文件夹,用于后面的构建
进入 centos 目录,编辑Dockerfile,内容如下所示:

 

 2.完成之后,执行:

[root@docker-singel centos]# docker build -t centos-base:v1 .

[root@docker-singel centos]# docker run -it --name=centos-base centos-base:v1 bash

查看结果,并验证:

 

 

 

 

 

3.进入nginx目录,同样编辑Dockerfile文件,另外先准备好nginx安装包
 
Dockefile编辑内容如下:

 

 

4.接下来执行
 
[root@docker-singel nginx]# docker build -t dockerfile-nginx:v1 .
[root@docker-singel nginx]# docker run -it -d -p 8082:80 --name nginx_v1 dockfile-nginx:v1
[root@docker-singel nginx]# docker ps -a
 

 

 

5.web访问验证 
 

 

 

6.更改index,html,使用参数 -V 挂载
 
执行如下:
 

[root@docker-singel nginx]# mkdir /wwwroot
[root@docker-singel nginx]# echo "dockfile test" >/wwwroot/index.html
[root@docker-singel nginx]# docker run -d -p 8083:80 -v /wwwroot/:/usr/local/nginx/html --name nginx_v2 dockfile-nginx:v1

 

web 访问验证:

 

 

测试挂载目录,更改/wwwroot/index.html,是否能生效
 
[root@docker-singel nginx]# echo "magedu class " >/wwwroot/index.html 
 
再次验证
 

 Dockerfile构建tomcat镜像:

1.准备镜像包:

apache-tomcat-9.0.11.tar.gz和jdk-8u201-linux-x64.tar.gz

2.创建目录

[root@docker-singel ~]# mkdir /dockfile/tomcat/

[root@docker-singel ~]# cd /dockfile/tomcat/

3.Dockfile构建

编辑Dockfile文件,内容如下:

 

 

4.执行dockbuild命令

[root@docker-singel tomcat]# docker build -t dockfile-tomcat:v1 .

执行成功后:

验证

 

 

运行镜像:

[root@docker-singel tomcat]# docker run -d -p 8084:8080 --name tomcat_v1 dockfile-tomcat:v1

web验证:

 

 

 部署Harbor私有云仓库

环境准备:

系统Centos7.6 1810

1.系统安装Docker环境(这里已安装)

安装 docker-compose. 并赋予执行权限

[root@harbor ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1 .24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

2.安装harboor

这里准备的版本是离线版:harbor-offline-installer-v1.8.2.tgz

[root@harbor ~]# tar xf harbor-offline-installer- v1.8.2.tgz -C /usr/local/
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor ~]# vim harbor.cfg
找到如下行:
hostname = 192.168.122.18 将hostname改成harbor服务器的IP
harbor_admin_password = 123 admin用户的默认 密码,我这里改为简单的123
[root@harbor harbor]# ./install.sh(这里可以加扫描参数)

3.安装完成后,测试访问

 

 

为了做高可用性,配置另外一台一样的,方法同上

测试访问:

 

 

4.    2台harbor做仓库同步,配置如下:

172.16.1.71上配置

172.16.1.72上配置

 

 

172.16.1.71上同步配置

 

 

 

 

 172.16.1.72上同步配置

 

 

 

 5.Docker上测试镜像上传同步

[root@docker-singel ~]# docker tag dockfile-tomcat:v1 172.16.1.71/n56/dockfile-tomcat:v1

 [root@docker-singel ~]# docker push 172.16.1.71/n56/dockfile-tomcat:v1

6.harbor 验证

 

 

 

 可以看到2台镜像已经同步

 

haproxy+keepalive反向代理harbor

环境准备:

1.准备一台服务器,并安装haproxy+keepalive(这里已经安装好,步骤不做演示)

更改配置文件:

[root@lb haproxy]# vim haproxy.cfg

添加如下行:

 

 完成后重启haproxy服务

2.Docker验证

 

 

 3.harbor服务端查看

 

 

 

 

 发现2台已经都有上传的镜像,测试成功

 

4.haproxy验证

关闭其中一台harbor服务器

 

 

登录docker服务器,再上一个镜像

 

 

 可以看到上传成功,测试完成。

posted @ 2021-09-09 19:04  雾雨风  阅读(288)  评论(1)    收藏  举报