• 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查看一下,第一个容器是刚刚创建的容器,用的是刚刚构建的镜像。
      
  • 相关阅读:
    MTK 定时器 休眠时的动作
    Troubleshooting MySQL Memory Usage
    disruptor
    Google Protocol Buffer 的使用和原理
    百度贴吧10亿量级LAMP架构分享
    nginx 不带www到www域名的重定向
    配置电信网通双线双IP的解决办法
    Create a W3C validated anchor link with target=“_blank”
    Could not update ICEauthority file /home/username/.ICEauthority
    Can't load IA 32bit .dll on a AMD 64bit platform
  • 原文地址:https://www.cnblogs.com/crazywangzx/p/5635336.html
Copyright © 2020-2023  润新知