Docker创建及共享

2018-10-03  本文已影响0人  LittleTrue

查找镜像,下载镜像

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

上一篇下一篇

猜你喜欢

热点阅读