跟我学Docker:手动制作docker镜像(七)

制作docker镜像步骤:

启动容器安装软件服务 (以centos6.9为例)

下载centos6.9镜像

[root@docker01 ~]# docker pull centos:6.9
6.9: Pulling from library/centos
831490506c47: Pull complete 
Digest: sha256:6fff0a9edc920968351eb357c5b84016000fec6956e6d745f695e5a34f18ecd2
Status: Downloaded newer image for centos:6.9
[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              98ebf73aba75        7 days ago          109MB
centos              6.8                 82f3b5f3c58f        4 months ago        195MB
centos              6.9                 2199b8eb8390        4 months ago        195MB
[root@docker01 ~]# 

启动并进入centos6.9容器

[root@docker01 ~]# docker run -it -p 1022:22 --name fxw centos:6.9 
[root@6545598a8326 /]# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
          inet addr:172.17.0.3  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:648 (648.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@6545598a8326 /]# curl www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> 
...省略部分...
</body> </html>
[root@6545598a8326 /]#

通过netstat -lntup查看发现没有任何监听服务,也没有sshd,需要手动安装

[root@6545598a8326 /]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
[root@6545598a8326 /]# yum install openssh-server -y

为了让客户端能交互式连接,这里需要生成ssh密钥对(/etc/init.d/sshd start启动sshd服务,并会生成密钥对),同时也需要为登陆用户root设置密码(echo 123456|passwd --stdin root,该方式后面会讲到,目前先这么用)

[root@6545598a8326 /]# ls /etc/ssh/
moduli  sshd_config
[root@6545598a8326 /]# /etc/init.d/sshd start 
Generating SSH2 RSA host key:                              [  OK  ]
Generating SSH1 RSA host key:                              [  OK  ]
Generating SSH2 DSA host key:                              [  OK  ]
Starting sshd:                                             [  OK  ]
[root@6545598a8326 /]# ls /etc/ssh
moduli  ssh_host_dsa_key  ssh_host_dsa_key.pub  ssh_host_key  ssh_host_key.pub  ssh_host_rsa_key  ssh_host_rsa_key.pub  sshd_config
[root@6545598a8326 /]# echo 123456|passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
[root@6545598a8326 /]# 

此时容器的22端口也被sshd服务正常监听

root@6545598a8326 /]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      120/sshd            
tcp        0      0 :::22                       :::*                        LISTEN      120/sshd            
[root@6545598a8326 /]# 

然后重启一个标签,通过1022端口成功连接到宿主机的容器(ssh root@10.0.0.11 -p 1022)


image.png
将安装好服务的容器commit提交为镜像

说明该镜像中已经完好配置了sshd服务,然后commit打包。

[root@docker01 ~]# docker commit fxw centos6.9_ssh:v1
sha256:4e2a5ae67ee0d9238e40890ba9fdb051eb655e98e7c5c60eabf45ae9272ad94b
[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos6.9_ssh       v1                  4e2a5ae67ee0        12 seconds ago      309MB
nginx               latest              98ebf73aba75        7 days ago          109MB
centos              6.8                 82f3b5f3c58f        4 months ago        195MB
centos              6.9                 2199b8eb8390        4 months ago        195MB
[root@docker01 ~]#
启动新容器来测试新提交的镜
[root@docker01 ~]# docker run -d -p 2022:22 centos6.9_ssh:v1 /usr/sbin/sshd -D
b8e7fcd195f28afc0e7d962c1a6c6f85c6c6404dc91a79744370b98e93ed2ae5
[root@docker01 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b8e7fcd195f2        centos6.9_ssh:v1    "/usr/sbin/sshd -D"      10 seconds ago      Up 8 seconds        0.0.0.0:2022->22/tcp   tender_hertz
6545598a8326        centos:6.9          "/bin/bash"              About an hour ago   Up About an hour    0.0.0.0:1022->22/tcp   fxw
52bfde2cbef6        nginx:latest        "nginx -g 'daemon of…"   20 hours ago        Up 20 hours         0.0.0.0:90->80/tcp     gifted_brahmagupta
[root@docker01 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b8e7fcd195f2        centos6.9_ssh:v1    "/usr/sbin/sshd -D"      14 seconds ago      Up 12 seconds       0.0.0.0:2022->22/tcp   tender_hertz
6545598a8326        centos:6.9          "/bin/bash"              About an hour ago   Up About an hour    0.0.0.0:1022->22/tcp   fxw
52bfde2cbef6        nginx:latest        "nginx -g 'daemon of…"   20 hours ago        Up 20 hours         0.0.0.0:90->80/tcp     gifted_brahmagupta
[root@docker01 ~]# 

正常情况下可以采用/etc/init.d/sshd start 启动sshd服务,但是为了启动镜像的同时还能将镜像中的sshd服务启动这里我们采用了/usr/sbin/sshd -D,夯住系统。

测试手动制作的docker镜像
[root@docker01 ~]# ssh root@10.0.0.11 -p 2022
The authenticity of host '[10.0.0.11]:2022 ([10.0.0.11]:2022)' can't be established.
RSA key fingerprint is SHA256:hKK3qKZ0QPpjRg0P4rHyszBWAQxQqPu2FsSNKNG+5GQ.
RSA key fingerprint is MD5:73:de:35:86:8a:9e:2e:30:35:fc:b3:c4:83:13:c7:8b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[10.0.0.11]:2022' (RSA) to the list of known hosts.
root@10.0.0.11's password: 
Last login: Thu Jul 25 02:04:19 2019 from 10.0.0.11
[root@b8e7fcd195f2 ~]# 
扩展:如果配置的服务较多,启动容的时候需要将这些服务(httpd,sshd,tomcat,nginx等)都启动,那该如何做呢?

办法只有一个:自定义脚本start.sh,比如说我们需要同时启动apache,sshd,nginx这三个服务:

vi /usr/init.d/start.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/share/nginx/sbin/nginx
/usr/sbin/sshd -D

(注意:将/usr/sbin/sshd -D写在最后,它能夯住整个容器)然后启动容器:

docker run -d -p 8080:80 -p 1122:22 centos6-ssh-httpd:v1 /bin/bash /ect/init.d/start.sh
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 一、什么是docker容器? 容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的...
    Jzyue阅读 354评论 0 1
  • 一、需求由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试...
    虾米在海飘阅读 931评论 0 3
  • docker的安装 下载docker-ce(社区版)的yum地址 替换为清华源地址,加快安装速度 执行yum安装命...
    早_wsm阅读 722评论 0 0
  • Docker值得关注的特性: o 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。 o 资源隔离:系统...
    Anson前行阅读 775评论 0 2
  • 系统安装过程 MBR:isolinux/boot.cat stage2: isolinux/isolinux.bi...
    毛利卷卷发阅读 717评论 0 1