<Docker学习>3. docker镜像命令使用

  镜像提供容器运行时所需要的程序,资源、配置文件等,是一个特殊的文件系统。是容器运行的基础。镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变,后一层的改变只会在自己这一层发生改变。删除前一层的文件操作,实际上不会删除前一层的文件,而是仅仅在该层将文件标记为删除,实际上还存储在前一层。因此在镜像的构建过程中,只尽量的添加该层需要的文件,任何和该层无关的文件要清理。

镜像使用命令:

(1)镜像拉取

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

docker镜像仓库地址,地址格式<域名/IP>:端口号,默认地址是 Docker Hub

仓库名称:<用户名>/<软件名> ,对于docker hub,没给出用户名。默认是library,即官方镜像

docker pull ubuntu:16.04

(2)运行镜像

运行镜像,是以一个镜像为基础启动一个容器。

docker run  [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

docker run -it --rm ubuntu:16.04

-i 交互式操作

-t 伪终端

-rm 容器退出时立即删除,默认是不删除

(3)列出镜像

docker image ls

  虚悬镜像:是一种特殊的镜像,没有仓库名,没有标签,均为<none> ,这种镜像是因为镜像维护,新旧镜像同名的话,旧镜像名会被取消,这类无标签的镜像就是虚悬镜像(dangling image)。

列出虚悬镜像命令:docker image ls -f dangling=true

这种镜像是没有意义的,可以随意删除。删除命令:docker image prune

  中间层镜像:为了加速镜像构建、 重复利用资源, Docker 会利用 中间层镜像。 所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认docker image ls 列表中只会显示顶层镜像, 如果希望显示包括中间层镜像在内的所有镜像的话, 需要加 -a 参数。

命令 : docker image ls -a

(4)删除本地镜像

docker image rm [选项] [镜像ID/镜像名称/镜像摘要]

docker image rm nginx:v2

docker 镜像的删除有 untagged 和 delete 行为

首先是会按照要求取消镜像的tag,但是如果一个镜像有多个标签tag,如果只是删除了指定的标签,镜像还有其他标签,那么不会发生删除delete行为,只是取消了标签。当镜像所有的标签都取消了,才会触发删除行为。因为镜像是多层存储结构,再删除的时候,会从最上层向底层依次进行判断删除,当其他镜像依赖于该镜像的某一层,依旧不会触发删除行为。所以可能会看到删除的层数和docker pull时的层数不一样。

容器的运行时建立在镜像基础之上的,如果某个镜像的容器还存在,即使没有运行,该镜像也不能删除。

删除一个还有容器的镜像会报类似这样的错:Error response from daemon: conflict: unable to remove repository reference "nginx:v2" (must force) - container aa59eab5cc29 is using its referenced image 97d1bffd8e7f

原文地址:https://www.cnblogs.com/xiaojianfeng/p/9378658.html

时间: 2024-08-04 13:46:30

<Docker学习>3. docker镜像命令使用的相关文章

Docker 学习 (2): 常用命令

Docker 学习 (2): 常用命令 命令行操作前提: systemctl start docker 启动docker sudo -i 进去root模式 一.帮助命令 docker version 查看对应安装的版本号,可以用来检测docker是否安装c成功 docker info Docker容器安装之后,个人信息的描述,比version更加详细 docker --help docker的帮助命令 二.镜像命令 前提:在操作镜像的时候,如果镜像名称的后面没有加版本号,那默认就是操作的最高的版

Docker学习之Docker容器基本使用

Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:docker container start containerid 停止:docker container stop containerid 重启:docker container restart containerid 查看后台运行的容器的日志 命令格式:docker container logs

Docker学习笔记之镜像管理命令

镜像: docker images -a  查看镜像列表 docker  images -q 只返回ID docker images inspect +镜像名称  查看镜像的详细信息 docker rmi [OPTIONS] IMAGE...  删除一个镜像 docker rmi $(docker images -q) 删除所有的镜像 dockerhub 镜像 docker search[OPTIONS] TERM --automated=false--no-trunc=false-s,--st

Docker学习总结之Run命令介绍

在使用Docker时,执行最多的命令某过于run了.这个命令可以说是所有docker操作的入口.在Docker官方Reference中单独列出了一个章节来介绍Run的各种参数使用,也足以看出Docker run的重要性.有感于此,我感觉有必要好好学习一下Run命令,因此特意看了一下Run命令介绍,结合日常中的使用心得,分享一下.以下文档大部分翻译于Docker 官方Reference,肯定会存在不少错误之处,希望能抛砖引玉,大家共同讨论. Docker在执行时会将相关进程封装到相互隔离的容器(c

Docker学习笔记 — Docker镜像

1. 基本概念 Docker镜像可以用来创建Docker容器,为一个只读的模板. Docker运行容器前需要本地存在对应的镜像,如果镜像不在本地,Docker会从镜像仓库下载. 2. 本地镜像 使用docker images显示本地已有镜像. 其中包含了如下信息:仓库,标记,ID,创建时间,大小. 3. 使用镜像启动容器 使用docker run启动一个容器. 在命令中我们也可以只指明ubuntu,这样就默认使用TAG为latest的版本.使用exit退出. 4. 搜索和获取镜像 使用docke

docker学习之二镜像创建

继上一篇docker入门之后写一点使用的经验. 通过命令:docker run -it REPOSITORY或IMAGE ID   注:-it后面跟的字段可以通过下面指令获得 创建运行的容器,会进入一个伪终端,如果使用ctrl+D或者使用exist命令来退出伪终端,会造成容器也终止运行.正确推出伪终端的姿势是:ctrl+P之后再按ctrl+q   这样就能把伪终端与容器分离了. Ps:到现在为止可以自己粗略自己发现一些命令了,使用docker --help可以查看到一些命令.其中attach的功

DOCKER学习_002:Docker的镜像容器管理

一 Docker的基本信息 前面已经安装了Docker,现在看一下已安装Docker的安装环境以及其他信息 1.1 系统环境 [[email protected] ~]# uname -r 3.10.0-957.27.2.el7.x86_64 [[email protected]-server3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 1.2 Docker版本 [[email protected] ~]#

Docker学习笔记 — Docker仓库

基本概念 仓库是集中存放镜像的地方. Docker Hub Docker Hub是Docker官方维护的一个公共仓库. 执行docker login命令登录,本地用户目录下的.dockercfg文件中保存了用户的认证信息. 使用docker search命令查找官方仓库中的镜像,使用docker pull命令下载镜像到本地. 私有仓库的搭建 — 使用Docer-registry 通常从官方维护的中央仓库下载镜像会比较慢,或者公司内部想搭建一个私有的仓库以供内部人员使用,此时我们可以使用官方提供的

&lt;Docker学习&gt;4. docker容器的使用

简单的说, 容器是独立运行的一个或一组应用, 以及它们的运行态环境. 对应的, 虚拟机可以理解为模拟运行的一整套操作系统( 提供了运行态环境和其他系统环境) 和跑在上面的应用.容器的运行是基于镜像的. 容器启动 docke run [选项] [镜像] 通过 docker run --help 查看 docke run 的用法 docker run -t -i ubuntu:14.04 /bin/bash -t :选项让Docker分配一个伪终端( pseudo-tty) 并绑定到容器的标准输入上