docker镜像创建与基本使用

查看镜像

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

[plain] view plain copy
  1. docker images  


运行镜像

查看到本地有哪些镜像后,就可以来运行已有的镜像了,使用命令:
[plain] view plain copy
  1. docker run -t -i ubuntu:15.10 /bin/bash  

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


搜索/下载镜像

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

[plain] view plain copy
  1. docker search selenium/hub  

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

[plain] view plain copy
  1. docker pull selenium/hub  

最后运行镜像:
[plain] view plain copy
  1. docker run -it selenium/hub  

创建镜像

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

镜像修改

镜像修改的方式是先运行一个现有的镜像,然后在运行的容器中进行软件的更新操作。比如:安装软件、服务之类。
[plain] view plain copy
  1. >docker run -t -i ubuntu:15.10 /bin/bash  
  2. root@e218edb10161:/# apt-get update  
  3. root@e218edb10161:/# apt-get install wget  
  4. root@e218edb10161:/# exit  
在完成软件安装/更新/升级之后,需要对该镜像进行提交操作,即做一个保存操作。
[plain] view plain copy
  1. docker commit -m="with wget" -a="five3" e218edb10161 five3/ubuntu:v2  
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID,在容器执行时可以在命令行开头查看。比如:root@e218edb10161中@之后的内容。此外还可以通过docker ps来查看
five3/ubuntu:v2:指定要创建的目标镜像名


接着,我们就可以使用新定制的镜像了。
[plain] view plain copy
  1. docker run -t -i five3/ubuntu:v2 /bin/bash    

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

[plain] view plain copy
  1. docker push five3/ubuntu:v2  
使用上述命令的前提是你已经在https://hub.docker.com/上注册了账户


dockerfile

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


通常一个dockerfile的文件格式如下:
[plain] view plain copy
  1. FROM    centos:6.7  
  2. MAINTAINER      Macy "five3@163.com"  
  3.   
  4.   
  5. RUN     /bin/echo 'root:123456' |chpasswd  
  6. RUN     useradd five3  
  7. RUN     /bin/echo 'five3:123456' |chpasswd  
  8. RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local  
  9. EXPOSE  22  
  10. EXPOSE  80  
  11. CMD     /usr/sbin/sshd -D  
它与shell脚本类似,是一个批处理的过程,但是它具有自己的命令和语法。dockerfile的命令都是大写的,比如:FROM、RUN等。从上面的dockerfile我们可以大概知道,构建的新镜像都做了什么。


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

其次,它的维护者是Macy,邮箱:five3@163.com
然后,在基础的centos之上,会运行几条RUN后面的命令。包括修改root密码,添加一个five3用户,设置系统的默认编码为utf-8
接着,通过EXPOSE命令对外开发了22和80端口。即ssh端口与WEB端口
最后,CMD命令用于设置镜像运行后的启动命令。这里是默认会启动ssh服务。这样当镜像运行之后我们就可以通过ssh连接该容器了


这里需要注意的是,22、80是容器内部的软件端口,虽然对外部开放了,但是外部需要有一个端口映射;在容器之外要连接这2个端口需要连接外部的映射端口。关于查看外部映射端口可以使用如下命令:
[plain] view plain copy
  1. docker port <container ID|container Name> 22  
  2. docker port <container ID|container Name> 80  

在dockerfile完成之后,我们就可以build自定义的镜像了。具体命令如下:
[plain] view plain copy
  1. docker build -t five3/centos:6.7 /path/to/dockerfile  
-t :指定要创建的目标镜像名,注意名称只能是小写字母


构建完成之后,可以通过docker images来查看镜像文件,还可以直接运行该镜像:
[plain] view plain copy
  1. docker run -t -i five3/centos:6.7  /bin/bash  
启动后通过id命令来检查用户five3是否创建成功
[plain] view plain copy
  1. id five3  
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页