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. JS原生带小白点轮播图

    咱们刚刚说了js原生轮播图,现在给他加上可以随着一起走动的小圆点吧! css代码: *{ margin:0px; padding: 0px; } ul{ width: 2500px; height: ...

  2. GIS平台结构设计

    前言: WebGIS由于技术发展和功能定位的原因,一般在进行架构设计的时候更多地考虑是否容易实现.用户交互.数据传输方便.渲染效果等方面,对强GIS的应用考虑得少,所以架构上与桌面的GIS平台很不一样 ...

  3. 【vue入门】日志demo,增删改查的练习(无vuex版本)

    安装 1. 确定电脑已装node和npm 出现版本号则说明电脑已经安装好node和npm2. 创建一个基于webpack的项目   3. 在项目里安装依赖 4. 运行 配置路由为了动态渲染各个页面的组 ...

  4. Modern Operating System

    No one can do all things, learn to be good at use what others already did. Most computers have two m ...

  5. Python with VS Code

    1. 基本的代码结构为: 2.

  6. unistd.h文件

    转载地址:http://baike.baidu.com/link?url=nEyMMFYevs4yoHgQUs2bcfd5WApHUKx0b1ervi7ulR09YhtqC4txmvL1Ce3FS8x ...

  7. Python爬虫教程-00-写在前面

    鉴于好多人想学Python爬虫,缺没有简单易学的教程,我将在CSDN和大家分享Python爬虫的学习笔记,不定期更新 基础要求 Python 基础知识 Python 的基础知识,大家可以去菜鸟教程进行 ...

  8. Unity射线

    //射线原点 [SerializField] Transform tr; //射线长度    [SerializField] float dis = 5; //射线停留时间 [SerializFiel ...

  9. Python 装饰器的总结

    先来了解几个定义: 1,函数 在python中,函数通过def关键字.函数名和可选的参数列表定义.通过return关键字返回值.我们举例来说明如何定义和调用一个简单的函数: #coding:UTF8 ...

  10. EJB 官方API

    http://download.oracle.com/otndocs/jcp/ejb-3_0-fr-eval-oth-JSpec/