Docker镜像的管理和创建

1. Docker镜像和Docker容器:

Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader和kernel,系统启动先加载bootfs,加载完成内核起来后,bootfs被卸载,rootfs被挂载,并运行程序,rootfs可以是多种不同的发行版,比如Fedora,Ubuntu。

Docker镜像有多层FS组成,最底层是bootfs,第二层是rootfs,更上面还有其他文件系统,Docker的文件系统是只读的,加载完rootfs后,Docker可以加载更多的上层只读文件系统,最终这些文件系统会被放到一起,从外面看,只有一个文件系统。这种文件系统是叠加的,彼此独立,Docker的这种文件系统被称为镜像。也就是说,Docker的镜像可以放在另一个镜像上面。并且镜像是只读的,要想对镜像数据操作,Docker容器必须先初始化一个可读写的文件系统,然后将下面的只读镜像加载到可读写文件系统,然后执行读写,而底层的只读镜像不会变,这就是“写时复制”。因此一个容器实际上就是Docker生成了一个读写层和其中的配置数据,加上底层的只读镜像组成的。容器可以修改,但是镜像不可修改。这样就可以保证,从同一个镜像中生成的容器各自独立,互不干扰。

2. Docker镜像标签:

Docker镜像存放在Docker仓库中,一个Docker仓库可以存放很多个镜像,为了区别同一个仓库中的不同镜像,可以为不同的镜像打上不同的标签。比如为了区别Ubuntu仓库的不同镜像,就可以Ubuntu:14.04打上标签。用pull拉取的时候,也可以加上标签拉取,特别的,官方仓库拉取的时候,不加标签,默认为拉取最新的镜像,标签为latest。

3. Docker镜像的一些操作命令:

docker images 列出本地存在的镜像;

docker pull img_name:img_tag 从docker hub上拉名为img_name,标签为img_tag的镜像;

docker search xxxx 从dockerhub上查找镜像;

4. 创建Docker镜像:

一般很少从零构建镜像,都是从已经发布的镜像上构建新镜像。主要有两种方法,

1. 使用docker commit命令

2. 使用Dockerfile文件和docker build命令

介绍第一种(第一种最简单,但是官方更推荐第二种):

先运行一个容器:

dcoker start con_name

docker attach con_name

然后在容器中安装一个软件,安装一个vim

apt-get install vim

  

  

  构建镜像一定要停止容器,退出容器,停止容器,构建这个镜像。使用docker stop con_name命令。

然后可以使用docker commit构建容器,docker commit提交的是修改,用过git的一定不会陌生git commit。

  docker commit -a your_name -m message con_name username/reps:tag

其中-a指定作者,-m指定提交信息,username是用户名,reps是仓库名,tag是标签。如图:

  

  第一个就是刚刚创建的镜像。

接下来就可以使用docker run命令,用刚刚创建的镜像创建并启动一个新的容器了

  

   再用docker ps -a查看一下,第一个容器是刚刚创建的容器,用的是刚刚构建的镜像。

  

时间: 2024-12-13 09:10:38

Docker镜像的管理和创建的相关文章

第四章 使用Docker镜像和仓库

第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ubuntu /bin/bash [email protected]:/# 这条命令会启动一个新的名为 another_container_mum 的容器,这个容器基于ubuntu镜 像并且会启动Bash Shell ----------------------------------------

Docker 镜像之存储管理

笔者在<Docker 镜像之进阶篇>中介绍了镜像分层.写时复制以及内容寻址存储(content-addressable storage)等技术特性,为了支持这些特性,docker 设计了一套镜像元数据管理机制来管理镜像元数据.另外,为了能够让 docker 容器适应不同平台不同应用场景对存储的要求,docker 提供了各种基于不同文件系统实现的存储驱动来管理实际镜像文件. 本文我们就来介绍 docker 如何管理镜像元数据,以及如何通过存储驱动来管理实际的容器镜像文件. Docker 镜像元数

创建属于自己的docker镜像

docker镜像是容器的基础,当每次执行docker run时就是在对docker说现在我需要哪个镜像.如果在你的docker主机上没有这个镜像,docker会自动从一个registry上下载这个镜像(默认为docker hub) 在这一节,我们将会探讨更多的关于docker镜像的内容: 管理和使用本地镜像 创建基础镜像 使用docker images命令列出本地的docker镜像 [[email protected] ~]# docker images  REPOSITORY         

paas架构之docker——镜像管理

1. 镜像管理 1.1. 列出镜像 Sudo docker images 1.2. 查看镜像 Sudo docker images xxxx 1.3. 拉取镜像 Sudo docker pull ubuntu 1.4. 查找镜像 Sudo docker search mysql 1.5. 删除镜像 sudo docker rmi xxxxx (force) 1.6. 构建镜像 1.6.1. Docker commit 不推荐,建议使用docker build+ docker file 1.6.2

创建支持ssh的docker镜像

docker容器运行,一般不能ssh,这容器的管理带来麻烦,下面将介绍如何创建支持ssh的docker镜像 首先从dock hub  下载 ubuntu的镜像 命令: docker pull ubuntu 新建一个ssh_ubuntu 目录 mkdir /ssh_ubuntu cd /ssh_ubuntu ;touch Dockerfile vi Dockerfile Dockerfile内容 FROM ubuntu MAINTAINER lincoln_zhongRUN apt-get upd

Docker镜像的创建、存出、载入

创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 主要参数选项包括: -a ,–author=”” 作者信息 -m,–message=”” 提交信息 -p,–pause=true 提交是暂停容器运行 比如,先创建一个运行bash的ubuntu容器

Docker 镜像与容器管理(2)

title: Docker 镜像与容器管理(2) date: 2018-12-14 17:04:05 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.D

docker(三):docker镜像管理

一.基本介绍 docker镜像是容器启动的基础,镜像里面包含容器启动所需要的文件系统及其内容.docker镜像采用分层构建的机制,这种分层大致分为两部分,一部分是最底层的引导文件系统bootfs,类型有aufs,btffs或者overlay2等:另一部分真正让用户来构建用户空间并运行进程的容器称为rootfs. bootfs:用于引导文件系统,包括BootLoader和kernel,容器启动完成后会被卸载以节约内存资源.(这里说的卸载,是从内存中移除而不是删除) rootfs:位于bootfs之

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,