docker镜像管理仓库搭建加密认证及负载均衡仓库的搭建

1.镜像管理:

Docker 仓库:
Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以部署完成仓库:

# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2.3.1
目录 /var/lib/registry 是仓库存放镜像的位置。除了使用数据卷做镜像存储之外,Registry
还支持将镜像存储到 亚马逊的 S3,OpenStack 的 Swift/Glance 等存储后端。
# docker tag nginx localhost:5000/nginx:latestDocker 镜像的命名规则 localhost:5000/nginx:latest 中,localhost:5000 表示 Registry 的地
址和端口。
# docker push localhost:5000/nginx:latest
推送镜像到 localhost:5000 仓库
# docker rmi localhost:5000/nginx:latest 删除本地 nginx 镜像的 TAG
# docker pull localhost:5000/nginx:latest 拉取镜像到本地

1.1>制作安装httpd的镜像

登陆测试:在另一个bash测试安装命令是否正确
docker run -it --name vm1 rhel7 bash
cd /etc/yum.repos.d/
vi dev.repo
yum repolist
yum install -y httpd
在docker目录下编辑安装脚本进行编译
vim Dockerfile

FROM rhel7
MAINTAINER weiwei@westos.org
ENV HOSTNAME server1
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN  rpmdb --rebuilddb && yum install -y httpd && yum clean all
VOLUME ["/var/www/html"]
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

[dvd]
name=rhel7.3
baseurl=http://172.25.30.250/rhel7.3
gpgcheck=0

docker build -t rhel7:v1 . #在本地编译构建镜像



1.2>制作安装ssh的镜像:

制作镜像之前我们需要将操作测试一下看看是否正确
cd /etc/docker
mkdir ssh 
cd ssh 
cp ../dvd.repo .
vim Dockerfile 

FROM rhel7
MAINTAINER weiwei@westos.org
ENV HOSTNAME server2
EXPOSE 22
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN  rpmdb --rebuilddb && yum install openssh-server openssh-client -y && ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" &&  ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" &&  echo root:westos | chpasswd
CMD ["/usr/sbin/sshd", "-D"]


docker build -t rhel7:v2 .
docker run -d –name vm4 rhel7:v2


查看镜像:

删除镜像:
docker rmi rhtl7:v2

2. 在镜像内部封装静态信息

构建一个nginx镜像:

cd /tmp/docker/test
mkdir nginx
mkdir /tmp/docker/test/nginx/html
vim /tmp/docker/test/nginx/html/index.html
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>

tar cf html.tar nginx #打包静态文件到html
tar tf html.tar nginx #查看

nginx/
nginx/html/
nginx/html/index.html
vim /tmp/docker/test/Dockerfile

FROM rhel7
ADD html.tar /usr/share/
VOLUME ["/usr/share/nginx/html"]

docker build  -t rhel7:v4 . #构建一个v4的镜像内部封装了静态页面
docker create  --name vol rhel7:v4 bash
docker run -d --name vm1 --volumes-from vol nginx
curl 172.17.0.2 #访问容器内部


搭建nginx仓库
docker push westos.org:5000/nginx
docker tag nginx localhost:5000/nginx
docker push localhost:5000/nginx

3. 远程加密

搭建nginx仓库5000端口做法只能实现本地用户登陆,远程登陆根本无法登陆;我们希望可以通过加密也可以实现远程从仓库下载镜像;因此我们做了443的端口映射和加密证书

cd /tmp/docker/
mkdir certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
#生成制作证书在certs目录下面
docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2 #生成443加密端口以便远程登陆
docker tag nginx westos.org/nginx #建立nginx仓库
cd /etc/docker/
mkdir -p certs.d/westos.org
cd certs.d/westos.org/
cp /tmp/docker/certs/domain.crt ./ca.crt #copy证书
docker push westos.org/nginx #推送nginx镜像生成443---
>5000的端口映射


5. 添加认证

添加认证:建立认证用户并添加用户密码
为了保证环境的干净我们把之前的volume删除

docker volume rm d81c6c2a8a60ba5d997da08e4c555101ca1eb1ce9217db115e9824cdfe9d7025 
d81c6c2a8a60ba5d997da08e4c555101ca1eb1ce9217db115e9824cdfe9d7025
docker volume ls
DRIVER              VOLUME NAME
 cd .. #注意`pwd`表当前路径所以加密认证要在/tmp/docker执行   
添加认证用户及密码wei;westos
docker run --entrypoint htpasswd registry:2 -Bbn wei westos > auth/htpasswd
cat auth/htpasswd  #生成信息记录在当前目录下的auth/htpasswd文件中
添加两个认证用户
docker run --entrypoint htpasswd registry:2 -Bbn admin admin >> auth/htpasswd
cat auth/htpasswd 
docker ps -a #查看用户进程
[root@foundation30 docker]# htpasswd -cm htpaswd  wei #创建用户新建用户c;再次创建用户不需要加c否则会被覆盖
htpasswd -m htpaswd  admin
docker container prune #暂停容器服务

docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  -p 443:443 registry:2 #添加加密认证,证书位置密钥路径443端口映射
docker push westos.org/rhel7 #推送
docker tag nginx westos.org/nginx #上传镜像
docker login -u wei -p westos westos.org #登陆认证登陆,登陆成功之后下次登陆不用认证


生成认证信息记录在~.docker/config.json文件中

6 .Docker-compose整合实现负载均衡

安装docker-compose即下即使用

cd /tmp/docker/
mkdir compose
vim docker-compose.yml
cp -r web/ compose/
ls compose/
mv docker-compose.yml compose/
cd compose/
mkdir haproxy
cd haproxy/
vim haproxy.cfg #haproxy实现负载均衡

global #全局变量
        log 127.0.0.1 local0 
        log 127.0.0.1 local1 notice
defaults
        log global
        mode http
        option httplog
        option dontlognull
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        stats uri /status
frontend balancer
        bind 0.0.0.0:80
        default_backend web_backends
backend web_backends
        balance roundrobin
        server web1 apache:80 check
        server web2 nginx:80 check

[root@foundation30 haproxy]# vim /tmp/docker/compose/docker-compose.yml #构建整个均衡负载镜像


访问8080代理端口测试是否实现:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值