美文网首页
Docker创建及共享

Docker创建及共享

作者: LittleTrue | 来源:发表于2018-10-03 15:24 被阅读0次

    查找镜像,下载镜像

    Docker Hub查找有哪些公共的可用镜像时,可以使用如下命令:
    docker search [keywords] 根据keywords查找镜像
    docker pull [Name] 下载列表中为Name的镜像
    docker run -t -i [Name] /bin/bash 开始启用该镜像

    docker run -d -p 8080:80 -p 3306:3306 tutum/lamp run携带参数包括运行时端口映射

    创建自己的镜像

    在上面的内容中,我们已经了解了如下查询,拉取,运行镜像,那么接下来我们将会继续学习如何修改、更新和管理自己的镜像。
    构建镜像的方式有以下两种:

    使用docker commit
    使用docker build和Dockerfile文件

    使用docker commit更新并且提交镜像

    更新一个镜像,首先我们要运行一个我们想更新的容器,然后做好相应的更改后(例如install nignx)。
    输入exit命令来退出这个容器
    使用docker commit来提交这个容器

        $ docker commit -m="Added json gem" -a="Kate Smith" \
        0b2616b0e5a8 ouruser/sinatra:v2
        4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
    

    这里我们使用了docker commit命令。我们可以指定-m和-a标示。-m标示是允许我们指定提交的信息,就像你提交一个版本控制。-a标示允许对我们的更新指定一个用户。

    我们也指定了我们想要创建的新镜像来自(我们先前记录的ID)0b2616b0e5a8和我们指定的
    (用户/目标镜像:标签):ouruser/sinatra:v2
    接下来就可以在docker images中看到这个新的镜像了

    使用Dockerfile创建镜像

    使用docker commit命令能非常简单的扩展镜像,但是它有点麻烦:在一个团队中不容易共享它的开发过程。
    为此,我们创建一个Dockerfile,其中包含一组指令告诉docker如何创建我们的镜像。
    现在让我们创建一个目录,并且创建一个Dockerfile文件并配置

        $ mkdir sinatra
        $ cd sinatra
        $ vi Dockerfile
    
    输入(每个指令前缀都必须大写)
        # This is a comment
        FROM ubuntu:14.04
        MAINTAINER Kate Smith <ksmith@example.com>
        RUN apt-get -qq update
        RUN apt-get -qqy install ruby ruby-dev
        RUN gem install sinatra
    

    让我们看看Dockerfile做了什么:第一个指令FROM,告诉Docker使用哪个镜像源,在这个案例中我们使用了一个Ubuntu 14.04基础镜像。下一步,我们使用MAINTAINER指令指定谁是维护者。最后,我们指定三个RUN指令,一个RUN指令在镜像内执行命令。例如安装包。这里我们在Sinatra中更新了APT缓存,安装了Ruby和RubyGems。

    在一个文件夹中,如果有一个名字为Dockfile的文件,其内容满足语法要求,在这个文件夹路径下执行命令:docker build --tag name:tag .就可以按照描述构建一个已有的为name:tag的镜像了, 但也可以使用-f参数+ Dockfile路径的方式指定Dockfile。

    注意:这是比较简单的创建镜像方法。我们跳过了你可以使用的一大堆指令。在后面的部门我们将会看到更多的指令指南,或者你可以参考Dockerfile参考的例子和详细描述每一个指令。

    Dockerfile中设置端口映射

    docker run -tdi -p 80:80 --name apache_web basic_sys -p : hostip : host_port : docker_container's port
    -p 从左往右的可以依次写成宿主机IP,宿主机端口,容器的端口。
    经过上面的配置以后,此时访问宿主机的80端口就等于访问容器的80端口。

    Dockerfile方式运行原理及更多配置项:

    *Docker从基础镜像运行一个容器。
    *执行一条指令,对容器修改。
    *执行类似与docker commit的操作,提交一个新的镜像层。
    *Docker再基于刚刚提交的镜像运行一个新的容器。
    *执行Dockerfile中的下一条指令,直到所有的指令执行完毕, 删除产生的中间镜像层, 留下一个顶级的镜像层。
    更多配置项参考


    Docker仓库和共享

    Docker仓库

    仓库(Repository)是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 时速云 、网易云 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。

    当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

    Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

    项目组共享注意:

    hub.docker.com上可以保存镜像,但是网速相对较慢,所以一般选择一台服务器(内外网地址)作为注册服务器,用于搭建私有仓库实现公司企业项目内共享,具体教程参考网上。

    相关文章

      网友评论

          本文标题:Docker创建及共享

          本文链接:https://www.haomeiwen.com/subject/wrgzoftx.html