docker镜像和仓库

镜像介绍

  • docker镜像是由文件系统叠加而成的。最低端是一个引导文件系统,即bootfs。当一个容器启动后,它会将被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存以供initrd磁盘镜像使用。
  • docker镜像第二层是root文件系统rootfs,它位于引导文件系统之上。rootfs可以使一种或者多种操作系统。
  • 在docker中rootfs(root文件系统)永远只能是只读状态,并且docker利用联合加载技术又会在root文件系统层上加载更多的只读文件系统。联合加载指的是一次同时加载多个文件系统,但是在外面看起来只能看到一个文件系统。联合加载会将隔层文件系统叠加到一起,这样最终的文件系统会包含所有底层的文件和目录。
  • 当从一个镜像启动容器时,docker会在该镜像的最顶层加载一个读写的文件系统。
    当docker第一次启动一个容器时,初始的读写层是空的。当文件系统发生变化时,这些变化都会应用到这一层上。如果修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层。该文件的只读版本依然存在,但是已经被读写层中的该文件的副本所隐藏了。
  • 通常这种机制被称作写时复制,这也是使docker如此强大的技术之一。每个只读镜像层都是只读的,并且以后永远不会变化。当创建一个新的容器时,docker会构建出一个镜像栈,并且在栈的最顶端添加一个读写层。这个读写层再加上其下面的镜像以及一些配置项数据,就构成了一个新的容器。

查看镜像

docker images
本地镜像都保存在docker宿主机的/var/lib/docker目录下,每个镜像都保存在docker采用的存储驱动目录下面,如aufs或者devicemapper。也可以在/var/lib/docker/containers目录下面看到所有的容器。
镜像从仓库下载下来。镜像保存在仓库中,而仓库存在于Registry中。默认的Registry是由docker公司运营的公共Registry服务,即Docker Hub。

拉取镜像

docker run命令从镜像启动一个容器时,如果该镜像不在本地,docker就会先从Docker Hub下载该镜像。如果没有指定具体的镜像标签,那么docker会自动下载latest标签的镜像。
docker run -t -i --name test_centos centos /bin/bash
使用docker pull命令来拉取centos仓库中的内容,可以节省从一个新的镜像启动一个容器的时间。

查找镜像

可以通过docker search nginx命令来查找所有docker hub上的可用镜像。(nginx是可变参数)
字段含义:
仓库名称、镜像描述、用户评价(starts)、是否官方、自动构建

构建镜像

https://hub.docker.com/login 新建账号
docker login


docker commit 镜像ID 镜像仓库名/仓库名
docker commit去提交,指定了要提交的修改过的容器id,以及一个目标镜像仓库和镜像名。docker commit提交的只是创建容器的镜像和容器当前状态不同部分,所以这部分非常轻量。
也可以加参数来制定更多描述
docker commit -m="a new image" --author="bigdata" 镜像ID 镜像仓库名/仓库名:test
-m指的是创建新的镜像的提交信息,--author用来列出镜像作者信息。并在最后加一个test标签。
执行后,可以通过docker images命令查看到提交的新镜像。
使用docker push 镜像仓库名/仓库名命令,提交本地的镜像到docker hub上。

使用docker build命令和Dockerfile文件构建镜像。

我们并不推荐用docker commit命令来构建镜像,推荐使用被称为Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基本的基于DSL语法的指令来描述一个docker镜像,之后使用docker build命令基于该Dockerfile中的指令构建一个新的镜像。
创建文件夹 mkdir /data/program/dockerfile
创建文件 touch Dockerfile
创建/data/program/dockerfile目录来保存Dockerfile文件,这个目录就是构建环境,docker则称此环境为上下文或者构建上下文。docker会在构建镜像时将构建上下文和该上下文的文件和目录上传到docker守护进程,这样docker守护进程就能直接访问你想在镜像中存储的任何代码、文件或者其他数据。


构建镜像
docker build -t="仓库/名称:标签 ."后面加一个.


使用docker history 镜像ID查看镜像构建过程
使用docker port 容器ID 容器内应用端口号命令来查看容器内应用端口号映射到宿主机的随机端口是什么。
使用docker run -d -p 80:8080 --name tomcatstart tomcat:7.0来指定宿主机的80端口映射到容器内的8080端口

 

04_Docker入门(下)之docker镜像和仓库的使用的更多相关文章

  1. 第四章 使用Docker镜像和仓库(二)

    第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...

  2. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  3. centos7下更改docker镜像和容器的默认路径

    笔者近期在服务器上搭建docker环境,可由于笔者是普通用户,在安装的时候就跳了很多坑,现在记录一下. 一.docker权限问题 据官方解释,搭建docker环境必须使用root权限,或者sudo装, ...

  4. Docker之- 使用Docker 镜像和仓库

    目录 使用Docker 镜像和仓库 什么是 Docker 镜像 列出 Docker 镜像 tag 标签 Docker Hub 拉取镜像 查找镜像 构建镜像 创建Docker Hub 账号 使用 Doc ...

  5. docker镜像的仓库

    一.docker镜像的仓库 --- repos-registry的创建: 仓库分为公共仓库和私有仓库 DockerHub的官方仓库 https://hub.docker.com DockerPool社 ...

  6. Docker镜像的仓库及底层依赖的核心技术(3)

    一.docker镜像的仓库 仓库分为公共仓库和私有仓库 DockerHub的官方仓库:https://hub.docker.com DockerPool社区仓库:https://dl.dockerpo ...

  7. Docker镜像与仓库(一)

    Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...

  8. 《第一本docker书》第4章 使用docker镜像和仓库 读书笔记

    docker最底端是一个引导文件系统,即bootfs. 第二层是root文件系统rootfs,位于引导文件系统之上. 在传统的Linux引导过程中,root文件系统会最先以只读的方式加载,当引导结束并 ...

  9. Docker镜像与仓库(二)Dockerfile

    Docker镜像文件与仓库(二) Docker镜像文件与仓库(二) Dockerfile指令 Dockerfile格式: 1.#Comment注释2.INSTRUCTION大写的指令名 argumen ...

随机推荐

  1. ionic--分模块

    1. app.js var app=angular.module("myApp",["ionic","myController"," ...

  2. Vue.js简单入门

    这篇文章我们将学习vue.js的基础语法,对于大家学习vue.js具有一定的参考借鉴价值,有需要的朋友们下面来一起看看. Vue.js是一个数据驱动的web界面库.Vue.js只聚焦于视图层,可以很容 ...

  3. LeetCode赛题392---- Is Subsequence

    392. Is Subsequence Given a string s and a string t, check if s is subsequence of t. You may assume ...

  4. MUI框架-02-注意事项-适用场景-实现页面间传值

    MUI框架-02-注意事项-适用场景-实现页面间传值 关于开发,我拷贝太多也没什么意义,就请查阅:官方文档:http://dev.dcloud.net.cn/mui/ui/ 快速入门 - 注意事项 有 ...

  5. gitlab一次代码回滚引起的bug...

    问题描述:线上问题有一个bug,挺严重的.在线下排查后发现是一个之前的同事添加的代码影响的,为了不影响之前的业务,代码回滚了. 但是 过了几天,测人人员测试之后说这个问题又复现了,然后再次看,发现还是 ...

  6. .net core系列之《从源码对Configuration的底层运行机制进行分析》

    通过对Configuration源代码的分析从而来自定义一个配置数据源 1.用反编译工具来看看AddJsonFile()这个方法究竟干了什么,源代码如下: public static IConfigu ...

  7. Exchange Server 2016 安卓手机打不开超过10M的附件问题处理

    华为手机配置Exchange Server 2016  时,打不开超过10M的附件,如PPT或者是DOC之类的附件,而iphone手机确可以,因为iphone手机使用了IMAP协议,安卓手机如果使用I ...

  8. Linux基础入门 - 1

    第一节 Linux简介 Linux 就是一个操作系统,也就是系统调用和内核那两层,Linux 本身只是操作系统的内核(内核是使其他程序能够运行的基础.它实现了多任务和硬件管理,用户或者系统管理员交互运 ...

  9. linux性能系列--内存

    一.啥是内存呢? 回答:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁.计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大. 内存(Memory)也被称为内存储器, ...

  10. Safari自动代理

    1. 准备一个代理服务器,我使用的是GoAgent. 2. 准备一个PAC文件,我是从chrome导出的. 3. 准备一个本地文件服务器或web服务器,我是因为手头有一个使用NodeJS的小项目,所以 ...