亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Docker學習之:鏡像概述

標簽:
Go

我们在开始这篇文章之前呢,先给大家介绍关于Image的几个相关概念
什么是Image呢?

  • 文件和meta data的集合(root filesystem)
  • 分层的,并且每一层都可以添加、改变、删除文件,成为一个新的image
  • 不同的image可以共享相同的layer
  • Image 本身是read-only的
    其实Linux是分为内核空间与用户空间的,Linux kernel(bootfs)属于内核空间,用户空间就是我们做的各种Linux发行版,比如我们常用的Centos、Ubuntu,那么这些也被成为Base Image,他们可以共享主机里面的Linux kerne空间,我们也可以在Base Image基础之上安装更多的Image,比如mysql nginx,关于这个层次关系,这里就不过多的解释了,有兴趣的可以去搜索一把!
    我们首先进入我们已经配置好的 centos,然后执行下面这条命令,就会出现当前你安装的docker下面有哪些Image,是不是很方便呢?
    sudo docker image ls

    那么如果你之前没有安装任何Image ,你输入这个命令,是没有任何镜像的,那么
    我们应该怎么获取Image呢?这里说两种方法

  • 通过写dockefile文件的方式
  • 通过Pull from Registry 的方式
    我们这里先给大家用pull的方式拉取镜像,关于dockefile的方式,我们后面会有专门的一章讲这个文件应该怎么写,大家不要着急。。。。。

    执行下面的命令我们就可以拉一个ubuntu:14.04的镜像了,是不是很简单呢。。。。

    sudo docker pull ubuntu:14.04

    再次使用

    sudo docker image ls

    输出结果

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              14.04               8cef1fa16c77        7 days ago          223MB

    不知道大家有没有注意到,我们拉下来的镜像是非常小的,相比我们直接下载安装的版本,那些都有几个G,那么原因是什么呢?这个就是我们之前说的,我们是在Linux kernel基础之上添加的ubuntu Image,所以它省去了很多不需要的东西。
    docker pull 默认是从hub.docker.com上拉取的镜像,大家可以自己去这个网站看一把,这个是官方的,当然如果你也可以直接取第三方的平台获取,镜像。

    我们该如何自己创建一个Image呢?

    在讲这个话题之前呢?我们先解决一个小问题,不知道大家有没有发现我们每次,执行docker命令的时候,都需要加一个sudo,这个有点恶心,我们解决它,执行以下的命令

    sudo groupadd docker
    sudo gpasswd -a vagrant docker
    sudo server docker restart
    最后退出你的centos,执行vagrant ssh重启就可以了

    我们在创建自己的image之前呢?先用Go语言写一段简单的程序,并把它编译成可执行的二进制文件。
    首先你可以在个人目录下(~)创建一个名为hello-world的文件夹

    mkdir hello-world
    cd hello-world/
    vim hello.go

    这里为了防止有的同学没有接触过Go,我就把最简单的Go程序贴出来了

    package main
    import "fmt"
    func main() {
    fmt.Printf("hello docker\n")
    }

    接下来,如果你的Go环境还没有安装,你可以去网上找一把教程,这个不难。

    go build hello.go 

    这个时候我们就编译好了,接下里我们书写一个dockerfile文件,

    FROM scratch
    ADD hello /
    CMD ["/hello"]

    因为这里我们是新建的BaseImage,就不需要在其他的BaseImage之上了,直接写scratch就可以了,它的意思就是不已任何镜像为基础,新建完成以后,执行

    docker build -t apple/hello-world .

    这里的-t是打标签,就是apple下面的hello-world

    [vagrant@localhost hello-world]$ docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    apple/hello-world   latest              69a935434293        17 minutes ago      2.02MB
    ubuntu              14.04               8cef1fa16c77        8 days ago          223MB

    这样我们的镜像就做好了,最后我们来变成容器,执行一把!

    docker run apple/hello-world

    输出了hello docker
    此时我们的镜像学习,到此就结束了,怎么样你学会了嘛?
    最后感觉有些小伙伴对于目录结构有点搞不清楚,贴出一张我的目录结构图
    file.png
    祝大家学习愉快!!!!!!

點擊查看更多內容
3人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Python工程師
手記
粉絲
20
獲贊與收藏
19

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消