Docker_学习笔记系列之镜像

Docker镜像是一个只读的模板,它是由一层层文件构成的,由一组文件组成,或者多组文件系统联合组成,每当修改镜像就会生成一个新的层文件

1.查看镜像

docker images  参数-q 只显示镜像id-q  只显示id-a 所有-f  过滤条件 如:只显示没有tag的中间层镜像<none>:<none>  dangling=true-no trunk  不截断id# 如删除镜像名为ubuntu的所有镜像docker rmi $(docker image -q ubuntu)# 另一种查看方式, 直接docker image可以查看该命令的帮助docker image ls  

2.通过--filter 或 -f 对镜像列表输出内容进行过滤

docker image ls --filter 过滤条件-- Docker 目前支持如下的过滤器。   dangling:可以指定 true 或者 false,仅返回悬虚镜像(true),或者非悬虚镜像(false)。   before:需要镜像名称或者 ID 作为参数,返回在之前被创建的全部镜像。   since:与 before 类似,不过返回的是指定镜像之后创建的全部镜像。   label:根据标注(label)的名称或者值,对镜像进行过滤。docker image ls命令输出中不显示标注内容。   其他的过滤方式使用reference 如下:   过滤标签为latest的镜像   docker image ls --filter reference="*.latest"

3.通过--format参数通过Go模板对输出内容进行格式化

# 返回 Docker 主机上镜像的大小属性docker images ls --format "{{.Size}}"# 只显示仓库、标签、大小信息,后面的命令是格式化显示docker image ls --format "{{.Repository}}: {{.Tag}}: {{.Size}}"|column -t

4.查找某个镜像

docker search 仓库名称【包含了docker Id,或非官方仓库的组织名称】--filter "is-official=true"  仅仅返回官方镜像--limit 返回的行数  最多100行,不加该参数默认docker返回25行

5.查看某个镜像的详细信息

docker image inspect  镜像名或镜像id

6.查看某个镜像的构建历史过程

docker history 镜像名或镜像id

7.拉取镜像【从docker registry 即docker hub获取】

# 注:如不加tag,默认拉取最后一版及tag为latest,下面这种是默认从仓库拉取镜像docker image pull [docker registry地址(域名:端口)] 镜像名:标签# 如需从非Docker Hub 官方仓库拉取,需要带上私有仓库名或命名空间docker image pull username/repository_name:image_name# 通过摘要拉取镜像查看本地镜像的摘要docker image ls --digestsdocker image pull image_name@摘要信息

8.删除镜像

docker image rm 镜像名或镜像iddocker rmi 镜像名或镜像id-f  强制删除..

9.导出镜像到本地文件

docker save 镜像名or镜像id > 本地存放位置/名称如:docker save centos > /opt/centos.tar.gz

10.将本地文件重新导入到镜像仓库

docker load < 本地存放位置/名称

11.docker bulid 命令用于使用 Dockerfile 创建镜像

docker build [OPTIONS] PATH | URL | ---build-arg=[] :设置镜像创建时的变量;--cpu-shares :设置 cpu 使用权重;--cpu-period :限制 CPU CFS周期;--cpu-quota :限制 CPU CFS配额;--cpuset-cpus :指定使用的CPU id;--cpuset-mems :指定使用的内存 id;--disable-content-trust :忽略校验,默认开启;-f :指定要使用的Dockerfile路径;--force-rm :设置镜像过程中删除中间容器;--isolation :使用容器隔离技术;--label=[] :设置镜像使用的元数据;-m :设置内存最大值;--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;--no-cache :创建镜像的过程不使用缓存;--pull :尝试去更新镜像的新版本;--quiet, -q :安静模式,成功后只输出镜像 ID;--rm :设置镜像成功后删除中间容器;--shm-size :设置/dev/shm的大小,默认值是64M;--ulimit :Ulimit配置。--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。--network: 默认 default。在构建期间设置RUN指令的网络模式

12通过修改已有镜像构建新的镜像

# 进入模板镜像docker run --name=test01 -it 镜像id /bin/bash# 在镜像中修改想要的内容,如安装软件等等yum install -y vim# 退出镜像exit# 查看容器记录,找到刚才修改的容器iddocker container ls -a# 提交修改的容器,从而创建新的镜像docker commit 容器id 仓库名/镜像名:标签docker commit 111111  192.168.0.100:5000/centos-vim:v1# 查看新生成的镜像docker images

13,通过Dockerfile创建镜像

# 1. Dockerfile文件,文件名不允许更改# This is bulid a image of Python service by centos7# FROM 基础镜像【每个镜像的构建都必须依赖基础镜像也解释了镜像的层级结构】FROM centos7# MAINTAINER 指定维护者信息MAINTAINER 一个Python小白重构生活之路# LABEL 镜像的帮助信息,镜像的一些说明信息LABEL version='1.0'LABEL description='this is the first image for how to use dockerfile commad'# ENV 指定程序在容器中的环境变量ENV PATH /usr/local/nginx/sbin:$PATHENV DB_PUBKEY="11111222"# COPY 复制本地主机的路径下的内容到容器中的路径下COPY ./code/ /app/python_app/# WORKDIR 配置工作目录,相当于cd,一般用于切换服务根目录下,执行程序WORKDIR /app/python_app/python_service_name_dir# RUN 运行命令,一般用于安装系统或程序需要依赖的包RUN yum install -y vimRUN pip install -i https://pypi.doubanio.com/simple/ requirement.txt# EXPOSE 声明镜像内服务所监听的端口,容器映射端口,即您写的服务里开放的端口号EXPOSE 6666# CMD 指定容器启动时执行的命令CMD ["Python","test_main.py"]# 2. 构建镜像docker build --build-arg DB_PUBKEY=$DB_PUBKEY -t image_name:$(data +%Y%m%d)_v1 -f dockerfile的路径如:docker build -t access-flow:20201001_v1 -f .--build-arg=[] :设置镜像创建时的变量;比如启动oracle数据库需要些环境变量--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签-f :指定要使用的Dockerfile路径# 3. 打标签,以docker registry的地址端口开头# docker-hub写法docker tag 仓库名 用户名/仓库名docker tag sun/access-flow:20201001_v1 sunwen@163.com/access-flow:20201001_v1# 私有仓库写法docker tag 镜像名 仓库名/镜像名docker tag access-flow:20201001_v1 192.168.0.100:5000/access-flow:20201001_v1

推送镜像到私有仓库或docker-hub

docker push sunwen@163.com/access-flow:20201001_v1
docker push 192.168.0.100:5000/access-flow:20201001_v1

©著作权归作者所有:来自51CTO博客作者mob604756e88498的原创作品,如需转载,请注明出处,否则将追究法律责任