docker基础知识 -- 操作镜像

实验环境

CentOS 7.5

安装并启动docker

yum install -y docker
systemctl start docker

镜像

安装镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

注:对于Docker镜像来说,如果不显式地指定TAG,则默认会选择 latest标签,即下载仓库中最新版本的镜像。

  • 从Docker Hub的CentOS仓库下载一个最新的CentOS操作系统的镜像。
[[email protected] ~]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for docker.io/centos:latest docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for docker.io/centos:latest docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for docker.io/centos:latest

注:该命令实际上下载的就是centos:latest镜像,目前最新的7.6.1810版本的镜像。

  • 从Docker Hub的CentOS仓库下载一个指定版本的CentOS操作系统的镜像。
[[email protected] ~]# docker pull centos:7.3.1611
Trying to pull repository docker.io/library/centos ...
7.3.1611: Pulling from docker.io/library/centos
b8e0383d5f94: Pull complete
Digest: sha256:6fe8d484f2897e2ea75f496bfb6792b539baf3e56880fce3b9b6505d76e266dd
Status: Downloaded newer image for docker.io/centos:7.3.1611

查看镜像信息

列出本地主机上已有的镜像

[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              1e1148e4cc2c        7 weeks ago         202 MB
docker.io/centos    7.3.1611            1e20acd39495        3 months ago        192 MB
  • 各字段释义

    • REPOSITORY:来自于哪个仓库,比如centos仓库;
    • TAG:镜像的标签信息,比如7.3.1611;
    • IMAGE ID:镜像的ID号(唯一);
    • CREATED:创建时间;
    • SIZE:镜像大小。

创建镜像

创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建;这里着重介绍前两种。

基于已有镜像的容器创建

  • 该方法实现创建的命令行格式
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

[[email protected] ~]# docker commit --help
Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container‘s changes
Options:
  -a, --author string    作者信息
  -c, --change list      提交的时候执行Dockerfile指令 (default [])
      --help             帮助信息
  -m, --message string   提交信息
  -p, --pause            提交期间暂停容器运行
  • 实际操作创建一个新镜像

    • 启动一个镜像,然后做修改后退出
    [[email protected] ~]# docker run -t -i docker.io/centos:7.3.1611 /bin/bash
    [[email protected] /]# touch test.txt
    [[email protected] /]# exit

    注:记住容器 ID为90d3b762f848。

    • 此时的该容器与原centos:7.3.1611镜像相比,已经发生改变,可执行docker commit命令来提交一个新的镜像;提交时可以使用ID或名称来指定容器。
    [[email protected] ~]# docker commit -m "add a file named test.txt" -a "docker new" 90d3b762f848 www.wholj.com:7.3
    sha256:3a51b6661c9f9c31ec8239405535cc57f782972f6eedf8452e2d8f4bce0bc2d6
    [[email protected] ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    www.wholj.com       7.3                 3a51b6661c9f        7 seconds ago       192 MB
    docker.io/centos    latest              1e1148e4cc2c        7 weeks ago         202 MB
    docker.io/centos    7.3.1611            1e20acd39495        3 months ago        192 MB

    镜像ID为3a51b6661c9f的镜像即为刚新增的。

基于本地模板导入

  • 该方法实现创建的命令行格式
[[email protected] /home/tools/ISO]# docker import --help
Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Options:
  -c, --change list      Apply Dockerfile instruction to the created image (default [])
      --help             帮助信息
  -m, --message string   为此导入镜像设置提交信息
  • 实际操作创建一个新镜像
[[email protected] /home/tools/ISO]# cat centos-7-x86_64-minimal.tar.gz | docker import - www.wholj.com:7.5
sha256:4950a54ede5a5c0da704c6f74e6bcc43d440e83260b0752a926325035435a7dc
[[email protected] /home/tools/ISO]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
www.wholj.com       7.5                 4950a54ede5a        10 seconds ago      435 MB
www.wholj.com       7.3                 3a51b6661c9f        2 days ago          192 MB
docker.io/centos    latest              1e1148e4cc2c        7 weeks ago         202 MB
docker.io/centos    7.3.1611            1e20acd39495        3 months ago        192 MB

镜像ID为4950a54ede5a的镜像即为刚新增的。

导出(save)和载入(load)镜像

导出镜像

将本地已有的镜像文件导出后可分享给其他人使用。

  • 导出镜像的命令行格式用法
docker save [OPTIONS] IMAGE [IMAGE...]

[[email protected] ~]# docker save --help
Usage:  docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
      --help            帮助信息
  -o, --output string   从标准输出导出镜像到指定的文件中
  • 导出本地的docker.io/centos:latest镜像为文件centos_7.6.tar
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
www.wholj.com       7.3                 3a51b6661c9f        About an hour ago   192 MB
docker.io/centos    latest              1e1148e4cc2c        7 weeks ago         202 MB
docker.io/centos    7.3.1611            1e20acd39495        3 months ago        192 MB
[[email protected] ~]# ll
total 8
-rw-------. 1 root root 2090 Nov 30 11:33 anaconda-ks.cfg
-rw-------. 1 root root 1955 Nov 30 11:33 original-ks.cfg
[[email protected] ~]# docker save -o centos_7.6.tar docker.io/centos:latest
[[email protected] ~]# ll
total 205272
-rw-------. 1 root root      2090 Nov 30 11:33 anaconda-ks.cfg
-rw-------  1 root root 210186752 Jan 25 17:17 centos_7.6.tar
-rw-------. 1 root root      1955 Nov 30 11:33 original-ks.cfg
[[email protected] ~]#

载入镜像

将别人分享给自己的镜像导入到本地镜像库。

  • 载入镜像的命令行格式用法
docker load [OPTIONS]

[[email protected] ~]# docker load --help
Usage:  docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
      --help           帮助信息
  -i, --input string   从指定tar文件读入镜像内容
  -q, --quiet          Suppress the load output
  • 从指定文件导入镜像文件到本地镜像库
[[email protected] ~]# docker load -i ./centos_7.6.tar
Loaded image: docker.io/centos:latest

或者:

[[email protected] ~]# docker load < ./centos_7.6.tar
Loaded image: docker.io/centos:latest

注:上述命令将导入镜像及其相关的元数据信息(包括标签等)。导入成功后,可以使用docker images命令进行查看,与原镜像一致。

原文地址:https://www.cnblogs.com/wholj/p/10313670.html

时间: 2024-08-30 11:12:51

docker基础知识 -- 操作镜像的相关文章

docker基础知识 -- 操作容器(二)

实验环境 CentOS 7.5 容器 容器是镜像的运行实例.不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层:同时,容器中的应用进程处于运行状态. 进入容器 可使用以下命令进入容器: attach命令 docker container attach [OPTIONS] CONTAINER [root@kvm ~]# docker container attach --help Usage: docker container attach [OPTIONS] CONTAINER A

Docker 基础知识-入门篇

1. Docker简介和KVM区别 1.1 docker的三大理念 构建 运输 运行 ps:有点类似于java代码,一次构建到处运行 1.2 docker结构 相关说明:image: 和虚拟机的镜像类似container: 用镜像创建的实例repository: 类似于yum仓库docker client: 命令行输入的docker命令docker server: 启动的docker进程 1.3 docker和kvm的区别 1.虚拟机需要hypervisor这个中间层来进行支持,上面跑的每一个虚

Docker03 Docker基础知识、Docker实战

1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器,就像杯子可以装水.书包可以装书一样:docker官网 Docker是Docker公司开发的,并开源到GitHub上; Docker是跨平台的,支持windows.linux.Macos 1.2 Docker思想 1.2.1 集装箱 需要运行的程序放到一个集装箱中 1.2.2 标准化 运输方式 存储方式 API接口 1.2.3 隔离 1.3 Docker解决了什么问题 1.3.1 解决运行环境不一致问题  解

docker学习---docker基础知识

目录 docker的基础 1.安装docker 2.使用镜像 3.镜像迁移|导入和导出 4.docker Hub介绍 5.搭建私有镜像仓库 5.1.docker开源的镜像分发工具--docker Registry 5.2.harbor部署 6.使用容器 7.容器导出和导入 8.数据卷 9.网络访问 10.dockerfile 10.1.基础指令 10.2.控制指令 10.3.引入指令 10.3.执行指令 10.4.配置指令 10.5.特殊用法 docker的基础 1.安装docker yum i

Docker基础-容器操作

1.创建容器 1.新建容器 可以使用docker create命令新建一个容器. [[email protected] ~]# docker create -it ubuntu:latest ffc9099be315f1b94876410c7d74dcd20e311e735e638080dd477534c063a6d6 [[email protected]-node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

docker 基础知识分享ppt

给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx 原文地址:https://www.cnblogs.com/harrychinese/p/docker_ppt.html

docker 基础 之操作容器

启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动. 新建并启动,所需要的命令主要为 docker run.例如,下面的命令输出一个 “Hello World”,之后终止容器. $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 下面的命令则启动一个 bash 终端,允许用户进行交互. $ sudo docker run -t -i ubuntu:

Docker 基础知识

Docker Docker 是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 镜像是一种轻量级.可执行的独立软件包,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 容器是镜像的运行时实例 - 实际执行时镜像会在内存中变成什么.默认情况下,它完全独立于主机环境运行,仅在配置为访问主机文件和端口的情况下才执

Docker基础知识(一)

Docker简介: Docker 是一个开源的应用容器引擎,以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. Docker与传统的虚拟化技术 传统虚拟化技术(VMware.Xen.Kvm)等技术 纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统: 硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Inter-VT等,具