备注:在上一篇博文当中,修改命令,已经省略掉了sudo。所以,直接输入docker,就可以查看docker相关的命令和所需要的参数。

         另外,后缀添加--help也是可以的。


方法一:镜像以Redis为例,pull镜像

1) 拉取redis镜像,并查看当前系统存在的所有镜像。

docker   pull redis

docker   images

docker补充之commit镜像制作_docker


2) 创建守护式容器,并命名为myredis.通过ps -a查看容器

docker run -d  --name=myredis redis

docker补充之commit镜像制作_镜像的制作_02


3) 以指定格式查看容器中应用的ip地址。

docker inspect  --format='{{.NetworkSettings.IPAddress}}'  myredis

docker补充之commit镜像制作_镜像的制作_03


4)使用本地redis-cli客户端链接指定的redis服务器:

redis-cli  -h 172.17.0.2  -p 6379

docker补充之commit镜像制作_docker_04


5) 倘若没有redis-cli客户端,请参考前面redis部分。



方法二:docker  run创建容器。使用docker commit  -m  “”,提交修改后的docker容器。

1)拉取已有镜像ubuntu14.04。

docker补充之commit镜像制作_docker_05

2)启动并进入容器。

docker images  查看镜像,记住ubuntu的image  id

docker补充之commit镜像制作_镜像的制作_06

docker  run  -i  -t  指定的IMAGE  ID 

docker补充之commit镜像制作_docker_07

3)添加、删除或者修改ubuntu容器。

例如添加nginx服务器,如果出现以下问题,很有可能是ubuntu14.04的镜像源尚未更新,依赖包出现问题

docker补充之commit镜像制作_镜像的制作_08

可以通过sudo  apt-get  update更新源和sudo apt-get  upgrade升级依赖包

docker补充之commit镜像制作_docker_09

docker补充之commit镜像制作_镜像的制作_10

由于默认时区的关系,可能需要执行dpkg-reconfigure  tzdata  来修改所在时区,选择Asiza,选择shanghai

docker补充之commit镜像制作_镜像的制作_11

好了,现在可以通过apt-get获取你所需要的软件了,如nginx。

docker补充之commit镜像制作_docker_12

输入nginx  -v查看版本号,说明成功安装。

docker补充之commit镜像制作_镜像的制作_13



4)接下来,就是将容器转换成镜像。

输入exit退出容器:

docker补充之commit镜像制作_docker_14

而查看容器的结果如下docker ps -a

docker补充之commit镜像制作_镜像的制作_15

查看images的结果如下docker  images

docker补充之commit镜像制作_镜像的制作_16

最后保存刚刚修改的内容信息:docker commit -m  “说明信息” -a  "用户信息"  容器ID     用户名/仓库: TAG信息

docker补充之commit镜像制作_镜像的制作_17

其中, -m 来指定提交的说明信息,跟我们使用的版本控制工具一样; -a 可以指定更新的用户信息;之5c9ee44a971c后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。


再次使用docker images命令就会发现此时多出了一个我们刚刚创建的镜像:

docker补充之commit镜像制作_docker_18

当然如果有兴趣的话,可以将刚保存的镜像上传到dockerhub(需要**翻**墙)上,也可以搭建自己的仓库,也可以上传到其他仓库。



接下来再写一个案例熟悉一下,搭建JAVA的开发环境。

1)拉取centos镜像,并查看image。

docker pull  centos

docker images

docker补充之commit镜像制作_docker_19

可以看到此时出现了centos的image镜像。


2)根据上述镜像,创建容器,并命名为mycentos。

docker run  -i  -t   --name=mycentos  centos

docker补充之commit镜像制作_镜像的制作_20

可以看到在创建完容器之后,已经进入到容器当中并且显示为命令行。


3)此时,我不小心关闭了命令窗口,name就需要重新进入docker容器当中。可以使用如下的命令:

docker ps -a 查看存在哪些container;

docker attach   容器名称或者CONTAINER ID就可以重新进入容器;

docker补充之commit镜像制作_docker_21

可以使用exit命令退出容器。


4)在容器当中安装JDK.


安装JDK没有什么可以讲,直接yum命令安装也行,拉取源码安装也行。不过记得一定得配置环境变量,使用yum命令的时候,貌似已经帮你配置了。使用命令如下:

yum install java-1.7.0-openjdk

docker补充之commit镜像制作_镜像的制作_22

好吧,还是查看下环境变量,发现什么鬼都没有。

docker补充之commit镜像制作_镜像的制作_23

然而,然而,连vim编辑器都没有。

yum  install  vim安装下就好了

docker补充之commit镜像制作_docker_24

安装完vim后,添加环境变量。

docker补充之commit镜像制作_镜像的制作_25

修改如下内容,只要能找到bin目录下的java就好了。

docker补充之commit镜像制作_docker_26

最好执行一下。

docker补充之commit镜像制作_docker_27

校验是否配置正确,并查看版本信息。

docker补充之commit镜像制作_镜像的制作_28

5) 在容器当中安装tomcat。

docker补充之commit镜像制作_docker_29

下载对应版本到本地。

docker补充之commit镜像制作_docker_30


上传后cp到docker container中,并解压,移动tomcat到指定目录下,

docker补充之commit镜像制作_docker_31

docker补充之commit镜像制作_镜像的制作_32

exit退出容器。

docker补充之commit镜像制作_镜像的制作_33

提交容器为镜像,docker commit mycentos  mytomcat8

docker补充之commit镜像制作_镜像的制作_34

停止mycentos容器

docker补充之commit镜像制作_docker_35

运行新的容器mytomcat8,指定端口号8888映射到8080.

docker补充之commit镜像制作_镜像的制作_36

进入容器,运行tomcat

docker补充之commit镜像制作_镜像的制作_37

此时就可以访问到tomcat的主页了---------注意:此时访问页面的ip地址和端口号,为映射的,并非容器自身的端口号和IP.

docker补充之commit镜像制作_镜像的制作_38

docker补充之commit镜像制作_docker_39


既然配置完,就全部删除了吧。

<<<先删除所有容器>>>>

docker补充之commit镜像制作_镜像的制作_40

<<<再删除所有镜像>>>

docker补充之commit镜像制作_镜像的制作_41

docker补充之commit镜像制作_镜像的制作_42