Docker的安装部署以及私有仓库的搭建

安装

网络下载所需要的额外安装包
在这里插入图片描述
配置成本地的yum仓库

createrepo /var/www/html/docker

配置yum源

[docker]
name=docker
baseurl=http://172.25.33.250/docker
gpgcheck=0

在这里插入图片描述
安装docker查看依赖

yum install docker-ce bash-* -y

开启docker

systemctl start docker
systemctl enable docker

导入game2048游戏包,查看结果
在这里插入图片描述
加载该镜象,运行

docker load -i game2048.tar
docker run -d --name 2048 -p 80:80 game2048

查看运行状态

docker stats

在这里插入图片描述
由于使用80端口,网页直接尝试运行
在这里插入图片描述
加载ubuntu

docker load -i ubuntu.tar

以交互方式运行

docker run -it --name  docker-ubuntu ubuntu

在这里插入图片描述

镜像创建

此时创建新的基础镜像

docker commit docker-ubuntu ubuntu:v1

在这里插入图片描述
运行新的基础镜像,此时发现先前所作的更改被保存

docker run -it --name vm  ubuntu:v1

在这里插入图片描述
但是此时无法进行审计操作

docker history ubuntu:v1

在这里插入图片描述

此时尝试使用Dockerfile,进行构建
新建一个文件夹,创建Dockerfile
在这里插入图片描述
文件内容

FROM ubuntu
RUN echo "hello, world!"

在这里插入图片描述
使用build方法利用Dockerfile文件新建镜像

docker build -t ubuntu:v2 ./

在这里插入图片描述
审计,查看历史命令
在这里插入图片描述

镜像版本的查看

docker images

在这里插入图片描述
镜像版本的的修改

docker tag ubuntu:v2 ubuntu:latest

在这里插入图片描述

Docker文件的编写参数

FROM 指定基础镜像
MAINTAINER 指定镜像的作者等信息
COPY 拷贝Dockerfile同一目录下的文件

COPY src dest
CORY ["src","dest"]

ADD 拷贝并解档文件,也可以进行联网下载操作
ADD
ENV 设置环境变量,可以被后续指令使用
EXPOSE 暴露容器内服务的端口
VOLUME 申明数据卷,指定应用挂载点

VOLUME [“dir”]
WORKDIR 为RUN、CMD、ENTRYPOINT、ADD指令设置镜像中的当前工作目录,目录不存在则自动创建
RUN 容器中运行命令同时创建新的镜像层
CMD|ENTRYPOINT 设置容器启动后执行的命令,CMD会被docker run后面的命令行覆盖,但是ENTRYPOINT不会被忽略,一定会被执行,,docker run后面所接的参数可以传递给ENTRYPOINT,只能指定一个ENTRYPOINT,多个,只有最后一个有效

服务封装

使用Docker封装httpd服务
编写Dockerfile中所要用到的yum源

[root@server1 rhel]# cat dvd.repo 
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.33.250/octopus
gpgcheck=0

编写dockerfile文件

[root@server1 rhel]# cat Dockerfile 
FROM rhel7
ENV HOSTNAME server1
MAINTAINER redhat@westos.org
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"]

创建镜像

docker build -t rhel7:v1 ./

运行

docker run -d --name httpd -v /webdata:/var/www/html -p 80:80 rhel7:v1 

在发布目录创建主文件
在这里插入图片描述
查看结果

在这里插入图片描述

封装nginx服务(Docker多阶段构建镜像----有助于减小容器的大小)
拷贝nginx压缩文件至目录
编写yum源文件

[root@server1 nginx]# cat dvd.repo 
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.33.250/octopus
gpgcheck=0

编写Dockerfile

FROM rhel7 as build
COPY dvd.repo /etc/yum.repos.d/dvd.repo
ADD nginx-1.16.0.tar.gz /mnt
RUN rpmdb --rebuilddb && yum install gcc make zlib-devel zlib pcre pcre-devel -y && yum clean all
WORKDIR /mnt/nginx-1.16.0
RUN ./configure --prefix=/usr/local/nginx && make && make install

FROM rhel7
COPY --from=build /usr/local/nginx /usr/local/nginx
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

封装镜像

docker build -t rhel:nginx ./

运行查看结果

docker run -d  --name nginx-service -v /webdata/:/usr/local/nginx/html/ -p 80:80 rhel:nginx

在这里插入图片描述

容器镜像加速服务

设置阿里云容器镜像加速服务
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
进入阿里云,选择容器镜像服务
在这里插入图片描述

Docker私有仓库的构建

创建certs目录,并建立证书

mkdir certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /root/certs/octopus.com.key -x509 -days 365 -out /root/certs/octopus.com.crt

在这里插入图片描述
导入仓库镜像

docker load -i registry2.tar

在这里插入图片描述
使用该镜像搭建仓库

docker run -d \
--restart=always \
--name registry \
-v /root/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/octopus.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/octopus.com.key \
-p 443:443 \
registry:2

在这里插入图片描述
修改基础镜像的tag
在这里插入图片描述
添加本地解析
在这里插入图片描述
新建目录,并拷贝crt文件至该目录

mkdir /etc/docker/certs.d/octopus.com/

在这里插入图片描述
尝试推送
在这里插入图片描述
增加认证机制
创建目录/root/auth,增加用户和密码

mkdir auth
docker run --rm --entrypoint htpasswd registry:2 -Bbn octopus linux >auth/htpasswd

在这里插入图片描述
停止仓库的运行并删除,新建一个仓库

docker run -d --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/octopus.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/octopus.com.key -p 443:443 -v /root/auth:/auth -e REGISTRY_AUTH=htpasswd -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

在这里插入图片描述
尝试登陆,发现登陆成功,并且密码被保存在/root/.docker/config.json

docker login octopus.com

在这里插入图片描述
尝试推送
在这里插入图片描述
注意:其余主机需要使用时,需要创建相应配置文件目录/etc/docker/certs.d/octopus.com/,并导入证书

mkdir /etc/docker/certs.d/octopus.com/
cp /root/certs/octopus.com.crt /etc/docker/certs.d/octopus.com/ca.crt

添加webUI界面(docker-registry-web.tar)
加载镜像,查看认证信息

"auth": "b2N0b3B1czpsaW51eA=="

在这里插入图片描述
运行WebUI,使用8080端口

docker run -it -p 8080:8080 --name registry-web --link registry-2  \       # 连接仓库获取内容    
-e REGISTRY_URL=https://172.25.33.1:443/v2   \   #  指定仓库链接    
-e REGISTRY_TRUST_ANY_SSL=true  \        # 使用SSL
 -e REGISTRY_BASIC_AUTH="b2N0b3B1czpsaW51eA=="  \ # 指定认证信息           
  -e REGISTRY_NAME=https://172.25.33.1:443 \  # 指定仓库名称
  docker-registry-web

使用另一主机进行登录推送
在这里插入图片描述

登录网页进行查看

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值