1.Docker(安装部署、Dockerfile镜像优化、仓库搭建)

Docker是一个基于Go语言的,开源的应用容器引擎,是一个用于开发,交付和运行应用程序的开放平台。Docker使得应用程序与基础架构分开来,进而实现快速交付。
其作用包括:可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制(沙箱就是一个限制应用程序对系统资源的访问的运行环境,通常实现在虚拟机中),更重要的是容器性能开销极低。

一、Docker安装部署
环境介绍:一台全新的rhel7.6虚拟机,火墙和selinux均处于关闭状态。
安装docker-ce,启动服务yum install -y docker-ce
docker服务开启自动添加docker ip
在这里插入图片描述将2048游戏镜像添加到docker中 上传镜像docker load -i game2048.tar
查看已经添加的镜像docker images在这里插入图片描述

运行容器 –name表示名称为demo 端口为真实主机的80映射到虚拟机的80端口,-d表示打入后台
docker run -d --name demo -p 80:8080 mario在这里插入图片描述
在这里插入图片描述

二、镜像的构建
注意:ctrl+p+q 将运行的交互式容器打入后台
上传busybox镜像到dockerdocker load -i busybox.tar

拉起容器busybox,-i表示交互式,-t表示打开伪终端docker run -it --name demo busybox
查看镜像docker images
在这里插入图片描述

docker ps -a查看所有进程

启动已有容器docker start demo

进入已存在的demo容器中docker container attach demo

上传新的镜像,源于demo容器 demo:v1 docker commit demo demo:v1

对比查看两者层级结构
在这里插入图片描述

删除容器docker rmi demo:v1

重启读取v1中的内容
在这里插入图片描述

删掉demo后,不影响v1容器

在这里插入图片描述

对比层级结构查看,手动添加的容器没有解释每一层的作用,game2048里会对

在这里插入图片描述

Dockerfile文件方式导入镜像v2,history可以查看具体内容,容器用busybox
mkdir docker cd docker/ vim Dockerfilecat Dockerfile
在这里插入图片描述

在当前目录文件Dockerfile下创建镜像docker build -t demo:v2 .
在这里插入图片描述

三、Dockerfile详解
vim Dockerfile在这里插入图片描述

创建容器在这里插入图片描述

docker run -it --rm demo:v5 westos–rm表示执行后丢弃,不保存cache

四、镜像构建- -nginx
导入rhel7镜像,相当于使用rhel7的内核 docker load -i rhel7.tar编写
通过Dockerfile建立镜像v1,执行命令创建镜像rhel7:v1
在这里插入图片描述

docker build it rhel7:v1

拉起容器,进程名为demo,docker run -d --name demo rhel7:v1
查demo进程/容器信息docker inspect demo在这里插入图片描述

五、镜像优化

清理镜像构建的中间产物
选择最精简的基础镜像
减少镜像的层数
尽量去用构建缓存
使用多阶段构建镜像
注意优化网络请求
**
v2镜像:减少镜像层数,合并所有RUN指令,清理镜像构建的中间产物包括编译好的安装包和缓存/mnt/nginx-1.20.1 /var/cache/*
cat Dockerfile

FROM rhel7
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/
ADD nginx-1.20.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.20.1

RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel zlib-devel make && sed -i ‘s/CFLAGS=“KaTeX parse error: Expected 'EOF', got '#' at position 12: CFLAGS -g"/#̲CFLAGS="CFLAGS -g”/g’ auto/cc/gcc && ./configure &> /dev/null && make &> /dev/null && make install &> /dev/null && rm -fr /mnt/nginx-1.20.1 /var/cache/*

CMD ["/usr/local/nginx/sbin/nginx", “-g”, “daemon off;”]

创建镜像v2docker build -t rhel7:v2 .

v3:尽量去用构建缓存,使用多阶段构建镜像

cat Dockerfile

FROM rhel7 as build
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/
ADD nginx-1.20.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.20.1
RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel zlib-devel make && sed -i ‘s/CFLAGS=“KaTeX parse error: Expected 'EOF', got '#' at position 12: CFLAGS -g"/#̲CFLAGS="CFLAGS -g”/g’ auto/cc/gcc && ./configure &> /dev/null && make &> /dev/null && make install &> /dev/null && rm -fr /mnt/nginx-1.20.1 /var/cache/*
FROM rhel7
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx", “-g”, “daemon off;”]
docker build -t rhel7:v3 在这里插入图片描述

v4:选择最精简的基础镜像替换原有的rhel7cat /new/Dockerfile在这里插入图片描述

docker build -t rhel7:v4 .
docker images rhel7 查看效果在这里插入图片描述

六、本地私有仓库搭建

镜像改名
标记原有镜像rhel7:v4 为新镜像demo:latestdocker tag rhel7:v4 demo:latest

准备好搭建本地仓库的软件tegistry
docker pull registry
启动本低仓库,-v表示本地 /opt/ 映射容器中的 /var/lib ,端口映射为5000
docker run -d --name registry -v /opt/registry:/var/lib/registry -p 5000:5000 registry
将容器中的game2048镜像标记到本地仓库中
docker tag game2048:latest localhost:5000/game2048:latest
推行上传在这里插入图片描述

上传成功后本地路径中也产生了文件ls /opt/registry/

删除之后,重新加载,之前的内容依然存在
docker rm -f registry
docker run -d --name registry -v /opt/registry:/var/lib/registry -p 5000:5000 registry

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值