Docker_学习笔记系列之镜像
2021-04-04 22:33
1076 查看
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 --digests docker image pull image_name@摘要信息
8.删除镜像
docker image rm 镜像名或镜像id docker 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 # 查看容器记录,找到刚才修改的容器id docker 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:$PATH ENV DB_PUBKEY="11111222" # COPY 复制本地主机的路径下的内容到容器中的路径下 COPY ./code/ /app/python_app/ # WORKDIR 配置工作目录,相当于cd,一般用于切换服务根目录下,执行程序 WORKDIR /app/python_app/python_service_name_dir # RUN 运行命令,一般用于安装系统或程序需要依赖的包 RUN yum install -y vim RUN 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
相关文章推荐
- Docker 学习笔记1—创建一个docker nginx镜像并通过浏览器访问
- Mac下Docker学习笔记之定制Tomcat镜像
- Docker学习笔记-Docker镜像
- Docker学习系列从零开始之制作docker原始镜像【二】
- Docker学习笔记(一)------制作镜像
- Docker学习笔记(2)-docker镜像操作
- Docker学习笔记2-mysql镜像的使用和外网访问
- 【docker】学习笔记一:制作自己的centos6.9镜像
- Docker学习笔记-Docker镜像
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- docker学习笔记之镜像探析
- docker学习笔记3-使用docker镜像、容器运行过程
- docker学习笔记之构建镜像
- Docker学习笔记1-从0创建并发布一个docker镜像
- docker学习系列(二):使用Dockerfile创建自己的镜像
- Docker学习笔记(1)——Dockerfile创建镜像
- docker学习笔记02:docker镜像
- Docker学习系列从零开始之制作SSH镜像【四】
- Docker学习系列从零开始之基于SSH镜像制作mysql的镜像【六】
- docker学习笔记4---docker容器和镜像的删除