您的位置:首页 > 运维架构 > Docker

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: