天天看点

(03)docker镜像创建与基本使用docker镜像创建与基本使用

docker镜像创建与基本使用

2017年07月21日 18:32:57 像风一样的自由 阅读数:28060

查看镜像

在docker环境安装完成之后,对docker的使用主要集中在docker镜像的管理与使用。首先是docker镜像的管理,查看本地有哪些镜像可以使用命令:

docker images
           

运行镜像

查看到本地有哪些镜像后,就可以来运行已有的镜像了,使用命令:

docker run -t -i ubuntu:15.10 /bin/bash
           

如果该镜像不存在,会自动尝试下载对应的镜像,只要远程镜像库中有同名的镜像。远程镜像库默认地址为:https://hub.docker.com/。

搜索/下载镜像

当然我们也可以主动的先把镜像下载到本地,再运行。而下载之前还可以进行下搜索,命令如下:

docker search selenium/hub
           

搜索之后如果有镜像存在,就可以拉取镜像了。命令如下:

docker pull selenium/hub
           

最后运行镜像:

docker run -it selenium/hub
           

创建镜像

我们从镜像仓库下载的,都是别人事先做好的。如果我们需要一个定制的镜像,就必须得自己动手了。自己创建一个镜像有2种方式:

  1. 基于一个现有的镜像来修改
  2. 基于dockerfile来创建

镜像修改

镜像修改的方式是先运行一个现有的镜像,然后在运行的容器中进行软件的更新操作。比如:安装软件、服务之类。

>docker run -t -i ubuntu:15.10 /bin/bash
[email protected]:/# apt-get update
root@e218edb10161:/# apt-get install wget
[email protected]:/# exit
           

在完成软件安装/更新/升级之后,需要对该镜像进行提交操作,即做一个保存操作。

docker commit -m="with wget" -a="five3" e218edb10161 five3/ubuntu:v2
           

-m:提交的描述信息

-a:指定镜像作者

e218edb10161:容器ID,在容器执行时可以在命令行开头查看。比如:[email protected]中@之后的内容。此外还可以通过docker ps来查看

five3/ubuntu:v2:指定要创建的目标镜像名

接着,我们就可以使用新定制的镜像了。

docker run -t -i five3/ubuntu:v2 /bin/bash  
           

目前为止,你保存的新镜像还只是在本地。如果你希望把它更新到docker仓库,可以使用如下命令:

docker push five3/ubuntu:v2
           

使用上述命令的前提是你已经在https://hub.docker.com/上注册了账户

dockerfile

使用dockerfile的方式其实是相当于从零开始创建一个新的镜像,具体步骤是先写好一个dockerfile文件。然后使用docker build命令来构建镜像,构建时会从网上下载及更新基础镜像与相关软件。

通常一个dockerfile的文件格式如下:

FROM    centos:6.7
MAINTAINER      Macy "[email protected]"


RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd five3
RUN     /bin/echo 'five3:123456' |chpasswd
RUN     /bin/echo -e "en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
           

它与shell脚本类似,是一个批处理的过程,但是它具有自己的命令和语法。dockerfile的命令都是大写的,比如:FROM、RUN等。从上面的dockerfile我们可以大概知道,构建的新镜像都做了什么。

首先,它是基于centos6.7版本来构建的【所有的docker镜像都是基于一个linux系统来的,因为首先它得具备一个完整的运行生态,当然也可以是一个非常精简的linux系统,比如:boot2docker】

其次,它的维护者是Macy,邮箱:[email protected]

然后,在基础的centos之上,会运行几条RUN后面的命令。包括修改root密码,添加一个five3用户,设置系统的默认编码为utf-8

接着,通过EXPOSE命令对外开发了22和80端口。即ssh端口与WEB端口

最后,CMD命令用于设置镜像运行后的启动命令。这里是默认会启动ssh服务。这样当镜像运行之后我们就可以通过ssh连接该容器了

这里需要注意的是,22、80是容器内部的软件端口,虽然对外部开放了,但是外部需要有一个端口映射;在容器之外要连接这2个端口需要连接外部的映射端口。关于查看外部映射端口可以使用如下命令:

docker port <container ID|container Name> 22
docker port <container ID|container Name> 80
           

在dockerfile完成之后,我们就可以build自定义的镜像了。具体命令如下:

docker build -t five3/centos:6.7 /path/to/dockerfile
           

-t :指定要创建的目标镜像名,注意名称只能是小写字母

构建完成之后,可以通过docker images来查看镜像文件,还可以直接运行该镜像:

docker run -t -i five3/centos:6.7  /bin/bash
           

启动后通过id命令来检查用户five3是否创建成功

id five3
           

继续阅读