docker的安装及其镜像的构建优化

Docker 安装

官方网站可以下载:也可以到阿里云镜像下载

docker-ce-18.09.6-3.el7.x86_64.rpm
containerd.io-1.2.5-3.1.el7.x86_64.rpm   docker-ce-cli-18.09.6-3.el7.x86_64.rpm
container-selinux-2.21-1.el7.noarch.rpm
yum install * -y  #安装这四个包
systemctl start docker  
systemctl enable  docker  #开机自启
docker load -i  game2048  #倒入镜像
docker  history  game2048:latest  #打包的分层构建历史
docker  run  -d --name game1   -p 80:80 game2048  #运行容器
docker images #查看所有的镜像

在这里插入图片描述
Docker 配置文件
在这里插入图片描述

添加ubuntu.tar镜像
docker run -it  --name  vm1 ubuntu   #--it交互运行镜像
共享主机的内核

在这里插入图片描述

构建镜像

加载镜像
在这里插入图片描述查看镜像
在这里插入图片描述

Ctrl+d #退出容器 
docker start vm1 #启动容器
docker attach vm1  #连接容器

在这里插入图片描述

ctrl+p+q  #不直接退出后台运行
docker commit vm1 test:v1 #提交镜像
docker images  #查看

在这里插入图片描述
查看构建历史
在这里插入图片描述

docker rm -f  vm1 #强制删除正在运行的容器
docker run -it --name vm1 test:v1  #运行自己提交的镜像

在这里插入图片描述写入的数据全部都在

Dockerfile构建镜像

在这里插入图片描述
编辑文件
在这里插入图片描述

docker build -t test:v2 .  #获取dockerfile的数据

在这里插入图片描述
在这里插入图片描述
1,COPY 用法
在这里插入图片描述

docker history test:v1  #查看构建历史
docker run -it  --name vm1 test:v1  #运行容器

在这里插入图片描述
2,ADD的用法
ADD的用法类似与COPY但是ADD可以自动解压文件
EXPOST 如果容器中运行服务,可以把务府的端口暴露出去

3,VOLUME 声明数据卷,指定数据的挂载
在这里插入图片描述

docker inspect vm2 

在这里插入图片描述
写入数据在宿主机/var/lib/docker/volumes/bcf893c629faeae0629e5233bf2b5d73925d539a23cea2e2e8642e51817f69f1/_data 在容器里面查看相当于自动挂载
在这里插入图片描述

docker run -it  --name  vm3   -v /opt/data:/data  test:v2  #手动挂在共享目录

在这里插入图片描述
4,WORKDIR用法

WORKDIR 相当于cd命令 不存在会自动创建
RUN 在容器中运行命令并创建的新的镜像层,常用于安转软件包
CMD 和 ENTRYPOINT      都是用于设置容器启动后执行命令,但CMD会被docker run 后面的命令进行覆盖,而ENTRYOINT不会被忽略,一定会被执行
Docker run 后面的参数可以传递给ENTRYPOINT指令当作参数;
Dokerfile中只能指定一个ENTRYPOINT,如果指定多个,只有最后一个生效

vim dockerfile
在这里插入图片描述

docker build -t test:v3 #构建镜像
docker run --rm  test:v3  #运行一次自动删除

在这里插入图片描述
ENTRYPOINT格式
在这里插入图片描述
在这里插入图片描述
CMD提供额外参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

镜像的优化

编辑dockerfile
FROM rhel7
EXPOSE 80
MAINTAINER  haha@westos.org
COPY hh.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb
RUN  yum  install -y  gcc  make pcre-devel zlib-deve
ADD nginx-1.16.0.tar.gz /mnt
WORKDIR  /mnt/nginx-1.16.0
RUN  ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

在这里插入图片描述

Docker build -t naginx:v1 #构建镜像
Docker images #查看镜像

在这里插入图片描述
清理中间产物:

FROM rhel7
EXPOSE 80
MAINTAINER  haha@westos.org
COPY hh.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb
RUN  yum  install -y  gcc  make pcre-devel zlib-deve && yum clean all
ADD nginx-1.16.0.tar.gz /mnt
WORKDIR  /mnt/nginx-1.16.0
RUN  ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
RUN rm -fr /mnt/nginx-1.16.0
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

Docker build -t naginx:v2 #构建镜像

Docker images  #查看镜像

在这里插入图片描述
减少层数:

减少层数:

FROM rhel7 
EXPOSE 80
MAINTAINER  haha@westos.org
COPY hh.repo /etc/yum.repos.d/
ADD nginx-1.16.0.tar.gz /mnt
WORKDIR  /mnt/nginx-1.16.0
RUN rpmdb --rebuilddb &&  yum  install -y  gcc  make pcre-devel zlib-devel && yum clean all && ./configure --prefix=/usr/local/nginx &&  make  && make  install && rm -fr /mnt/nginx-1.16.0
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]


Docker build -t naginx:v3  #构建镜像
Docker images  #查看镜像

在这里插入图片描述
多阶段构建镜像:

FROM rhel7 as build
EXPOSE 80
MAINTAINER  haha@westos.org
COPY hh.repo /etc/yum.repos.d/
ADD nginx-1.16.0.tar.gz /mnt
WORKDIR  /mnt/nginx-1.16.0
RUN rpmdb --rebuilddb &&  yum  install -y  gcc  make pcre-devel zlib-devel && yum clean all && ./configure --prefix=/usr/local/nginx &&  make  && make  install && rm -fr /mnt/nginx-1.16.0

FROM rhel7
EXPOSE 80
MAINTAINER  haha@westos.org
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx  /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

Docker build -t naginx:v4  #构建镜像

Docker images  #查看镜像

在这里插入图片描述
选择最精简的基础镜像可以进一步缩减新建镜像的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值