4、Docker镜像

一、什么是Docker镜像
是一种使用联合加载技术实现的重叠的只读文件系统
是容器的基石。

使用docker info命令查看docker使用的存储驱动和存储位置
ls -l /var/lib/docker/aufs
ams文件夹下保存镜像文件

二、查看和删除镜像
1、列出镜像
docker images [optsions] [repository]
-a , --all=false 显示所有镜像
-f , --filter=[] 在显示时的过滤条件
--no-trunc=false ID是否截断,默认截断
-q, --quiet=false 只显示镜像的惟一ID

repository 仓库,一个仓库包含的是一系列关联的镜像
tag 镜像标签,一个镜像可以对应多个标签

2、查看镜像的详细信息
docker inspect [options] container|image [container|image]

docker inspect 仓库名:tag名
3、删除镜像
docker rmi [options] image [image...]
-f , --force=false 会强制删除镜像
--no-prune=false 会保留被删除镜像标签的父镜像

docker rmi ubuntu:latest
一次删除多个镜像 docker rmi ubuntu:latest ubuntu2:latest2 ......
删除所有镜像 docker rmi $(docker images -q ubuntu) ,会删除ubuntu仓库中的所有镜像


三、如何获取和推送镜像
1、查找镜像
a)docker hub https://registry.hub.docker.com
需先注册账号

b)docker search [options] term
--automated=false 自动化选项,只会显示自动化构建的镜像
--no-trunc=false 选择了true会以截断的方式输出
-s , --stars=0 限制显示结果的最低星级

2、拉取镜像
docker pull ubuntu:14.04 速度非常慢
使用 --registry-mirror 选项,使用国内的docker仓库镜像服务器
1、修改 /etc/default/docker
2、添加:DOCKER_OPTS = "--registry-mirror=https://www.daocloud.io"
DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io"

3、推送镜像

docker push不会把镜像整个提交上去,只会把修改的部分提交上去

四、构建镜像
保存对容器的修改,并再次使用
自定义镜像的能力
以软件的形式打包并分发服务及其运行环境

1、docker commit 通过容器构建
docker commit [options] container [repository[:tag]]
-a, --author="" 指定镜像的作者
-m,--message="" 记录镜像构建的信息
-p,--pause=true 指示commit不暂停正在执行的容器

docker run -i -t -p 80 --name commit_test ubuntu /bin/bash

以容器web,创建一个镜像,名字为nginx_web,仓库myrep01
docker commit -a 'chentian' -m 'nginx' web myrep01/nginx_web


以nginx_web镜像启动容器


2、docker build 通过dockerfile文件构建
先编写dockerfile文件
#First Dockerfile
FROM ubuntu:14.04
MAINTAINER chentian114 "chentian114@sina.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80


docker build -t='myrep01/df_test1' .
-t 设置创建镜像的名字
path : dockerfile文件所在目录

docker images查看已存在的镜像

以创建的df_test1镜像创建docker容器
docker run -d --name nginx_df1 -p 80 "myrep01/df_test1" nginx -g "daemon off;"


#First Dockerfile
FROM ubuntu:14.04
MAINTAINER chentian114 "chentian114@sina.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80

1、FROM指令 用来指定镜像
FROM指令格式 a)FROM <image> b)FROM <image>:<tag>
必须是已经存在的镜像,后序指令都会基于这个镜像运行。帮叫基础镜像
必须是第一条非注释指令
2、MAINTAINER <name> 指定镜像的作者信息,包含镜像的所有者和联系信息

3、RUN 用来指定当前镜像中运行的命令
有两种指令模式
a) RUN <command> (shell模式)
该模式下执行命令 :
b)RUN [ "executable","param1","param2"] (exec模式)
该模式下可指定其它形式的shell执行指令
docker build -t="myrep01/df_test1" path 查看构建过程


4、EXPOSE 用来指定运行该镜像的容器使用的端口,它可以指定一个或多个端口,也可以多次使用EXPOSE
EXPOSE <port> [<port>....]
容器运行时,仍需要手动指定映射端口


5、CMD 用来提供容器运行的默认命令,与RUN命令类似,都是用来执行指令,但RUN指令中的命令是在镜像构建
过程中运行的,而CMD指定的指令是在容器运行时运行的。当我们使用docker run指定了容器运行的命令时,
CMD命令会被覆盖,即CMD只是指定容器启动默认执行的命令。
CMD指令的模式


#First Dockerfile
FROM ubuntu:14.04
MAINTAINER chentian114 "chentian114@sina.com"
RUN apt-get install -y nginx
EXPOSE 80

docker build -t="myrep01/df_test2" .
docker run -p 80 --name="cmd_test1" -d myrep01/df_test2





6、ENTRYPOINT命令 与CMD类似,惟一不同是不会被docker run指定的命令覆盖,如果要覆盖需要在docker run中指定
docker run --entrypoint覆盖



构建缓存



docker镜像与容器关系总结:
1、先是根据镜像创建一个容器;
2、容器其实相当于一个微型虚拟机,可以在里面安装软件和部署应用
3、容器可以被整个打包,提交成一个镜像;
4、创建一个新的镜像可以基于一个已经存在的镜像
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值