docker:二、 构建镜像

镜像组成

1. base镜像:有基本的操作系统环境,不依靠其它镜像。
Linux操作系统包括内核空间和用户空间。内核空间即kernel,启动时加载bootfs文件系统,然后卸载bootfsb。用户空间即文件系统rootfs,不同kinux发行版本主要是rootfs不同
docker支持多种Linux镜像,模拟出多种操作系统环境。
docker只使用了base镜像的用户空间,系统kernel用的是host的kernel(所有容器共用),所有bas镜像只要提供rootfs。
2. docker 使用分层结构实现资源共享,每一层都可以被共享,base镜像层在最下面,不断添加新的软件则一层层叠加。查找或修改文件时,自上而下寻找文件,找到后复制到容器层操作。不同的层有相同路径的文件,则只能访问上层的。
3. 当有多个镜像由相同的base镜像构建,docker host只在磁盘上保存一份base镜像,内存只加载一份。
4. 对容器的所有改动,只发生在容器层,容器层是可读可写的,镜像层是只读的

命令

docker images 查看镜像信息
docker history 镜像构建历史(即镜像的分层),一定要在/root目录下运行
docker commit 容器保存为镜像
docker tag 镜像打tag
docker build 从dockerfile构建镜像
docker rmi 从dock host删除镜像,只删除docker host中的(注意:只有镜像对应的所有tag都被删除时(没有容器占用镜像),镜像才真正删除)

手动构建镜像

1. 从仓库下载镜像
docker pull ubuntu
2. 运行容器
docker run -it ubuntu
PS:-it 以交互模式进入容器并打开终端
3. 修改容器
apt-get install -y vim
4. 保存为镜像
docker commit ubuntu_vi

通过Dockerfile构建镜像

1. Dockerfile是镜像的描述文件(在基础镜像上,dockerfile产生一个新层)
2. Dockerfile 命令
FROM                 指定base镜像( alpinc非常小的镜像,scratch从0开始构建 镜像)
MAINTAINER     镜像作者
COPY                 复制到镜像
ADD                   复制到镜像,如果是压缩包,自动解压
ENV                    环境变量
EXPOSE              暴露端口
WORKDIR          当前工作目录,不存在则自动创建
VOLUME            将文件或目录声明为卷
RUN                   在容器中运行命令
CMD                  容器启动时运行命令(只有最后一个生效)
ENTRYPOINT     容器启动时运行的命令(只有最后一个生肖)
注意:
RUN、CMD、ENTRYPOINT的区别:
RUN 执行命令并创建新的镜像层
CMD 设置容器启动时的默认参数,可以被docker run之后的参数覆盖
ENTRYPOINT 一定被执行
3. 写dockerfile
FROM ubuntu:lastest
RUN apt-get install vi   # 安装
COPY 1.txt /             # 将1.txt文件复制到/
CMD ["ls"]               #  容器启动时执行ls
4. 构建
docker build -t ubuntu_vi  # docker将文件发给docker daemon 
注意:
镜像缓存特性:如果镜像层已存在,直接使用,无法重新创建
不需要缓存:docker build时  --no-cache
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值