docker深入1-创建一个自己的docker p_w_picpath

===
参考资料:

[业务架构实践]应该如何使用阿里云?高级篇  http://bbs.aliyun.com/read/182036.html?spm=5176.7189909.0.0.R1MNwz&displayMode=1
利用Docker构建开发环境  http://tech.uc.cn/?p=2726
Docker:利用Linux容器实现可移植的应用部署  http://www.infoq.com/cn/articles/docker-containers
cnetos7安装docker V1.0  http://www.51ou.com/browse/centos/57797.html
笔记- api管理docker Container的lnmp操作  http://www.tuicool.com/articles/3QJFRzI
CentOS 6.5下使用docker 容器  http://www.21ops.com/linux/7324.html
构建一个高可用及自动发现的Docker基础架构-HECD[原创]  http://blog.liuts.com/post/242/
Dockerfile Reference  https://docs.docker.com/reference/builder/
Docker使用Dockerfile创建支持ssh服务自启动的容器镜像  http://blog.csdn.net/kongxx/article/details/38412119
Docker之配置Centos_ssh   http://blog.chinaunix.net/uid-10915175-id-4442800.html
CentOS 6.5 制作可以ssh登录的Docker镜像  http://www.21ops.com/linux/26334.html/comment-page-1
===

【】安装
[root@server200-21 ~]# yum install docker-io
[root@server200-21 ~]# docker -v
Docker version 1.4.1, build 5bc2ff8/1.4.1

【】启动服务
[root@server200-21 ~]# service docker start

【】查看状态
[root@server200-21 ~]# docker info

【】将某个用户加入到docker组,以便已非root用户来运行docker命令。
[root@server200-21 ~]# usermod -a -G docker Jack
切换到用户目录

【】从国内的仓库docker.cn上pull一个p_w_picpath到本地
[Jack@server200-21 ~]$ docker pull docker.cn/docker/centos

【】查看p_w_picpaths
[Jack@server200-21 ~]$ docker p_w_picpaths
REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.cn/docker/centos   latest              8efe422e6104        4 weeks ago         224 MB
docker.cn/docker/centos   7                   8efe422e6104        4 weeks ago         224 MB
docker.cn/docker/centos   centos7             8efe422e6104        4 weeks ago         224 MB


【】Dockerfile

[Jack@server200-21 ~]$ mkdir repository
[Jack@server200-21 ~]$ cd repository/
】编辑启动脚本
[Jack@server200-21 repository]$ vim start.sh
[Jack@server200-21 repository]$ cat start.sh 
#!/bin/bash

__create_user() {
# Create a user to SSH into as.
useradd admin
SSH_USERPASS=admin
echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin admin)
echo ssh user password: $SSH_USERPASS
}

# Call all functions
__create_user

】编辑Dockerfile
[Jack@server200-21 repository]$ vim Dockerfile
[Jack@server200-21 repository]$ cat Dockerfile 
FROM docker.cn/docker/centos:7
MAINTAINER pcnk

RUN yum -y update; yum clean all
RUN yum -y install openssh-server passwd; yum clean all
ADD ./start.sh /root/start.sh
RUN mkdir /var/run/sshd
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

RUN chmod 755 /root/start.sh
# EXPOSE 22
RUN ./root/start.sh
ENTRYPOINT ["/usr/sbin/sshd", "-D"]

】查看p_w_picpaths:
[Jack@server200-21 repository]$ docker p_w_picpaths
REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.cn/docker/centos   centos7             8efe422e6104        4 weeks ago         224 MB
docker.cn/docker/centos   latest              8efe422e6104        4 weeks ago         224 MB
docker.cn/docker/centos   7                   8efe422e6104        4 weeks ago         224 MB

】build一个p_w_picpath:
[Jack@server200-21 repository]$ docker build --rm -t develop/ssh:v1 .          
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM docker.cn/docker/centos:7
 ---> 8efe422e6104
Step 1 : MAINTAINER pcnk
 ---> Running in 77605343a277
 ---> 26a7e9d91296
Removing intermediate container 77605343a277
Step 2 : RUN yum -y update; yum clean all
 ---> Running in 43889045a3ed
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.cug.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package glibc.x86_64 0:2.17-55.el7_0.3 will be updated
---> Package glibc.x86_64 0:2.17-55.el7_0.5 will be an update
---> Package glibc-common.x86_64 0:2.17-55.el7_0.3 will be updated
---> Package glibc-common.x86_64 0:2.17-55.el7_0.5 will be an update
---> Package openssl-libs.x86_64 1:1.0.1e-34.el7_0.6 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-34.el7_0.7 will be an update
---> Package systemd-libs.x86_64 0:208-11.el7_0.5 will be updated
---> Package systemd-libs.x86_64 0:208-11.el7_0.6 will be an update
---> Package tzdata.noarch 0:2014j-1.el7_0 will be updated
---> Package tzdata.noarch 0:2015a-1.el7_0 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch         Version                    Repository     Size
================================================================================
Updating:
 glibc              x86_64       2.17-55.el7_0.5            updates       3.6 M
 glibc-common       x86_64       2.17-55.el7_0.5            updates        11 M
 openssl-libs       x86_64       1:1.0.1e-34.el7_0.7        updates       942 k
 systemd-libs       x86_64       208-11.el7_0.6             updates       154 k
 tzdata             noarch       2015a-1.el7_0              updates       432 k

Transaction Summary
================================================================================
Upgrade  5 Packages

Total download size: 16 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
warning: /var/cache/yum/x86_64/7/updates/packages/openssl-libs-1.0.1e-34.el7_0.7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for openssl-libs-1.0.1e-34.el7_0.7.x86_64.rpm is not installed
--------------------------------------------------------------------------------
Total                                              2.0 MB/s |  16 MB  00:08     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-0.1406.el7.centos.2.5.x86_64 (@Updates/$releasever)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : tzdata-2015a-1.el7_0.noarch                                 1/10 
  Updating   : glibc-common-2.17-55.el7_0.5.x86_64                         2/10 
  Updating   : glibc-2.17-55.el7_0.5.x86_64                                3/10 
  Updating   : 1:openssl-libs-1.0.1e-34.el7_0.7.x86_64                     4/10 
  Updating   : systemd-libs-208-11.el7_0.6.x86_64                          5/10 
  Cleanup    : systemd-libs-208-11.el7_0.5.x86_64                          6/10 
  Cleanup    : 1:openssl-libs-1.0.1e-34.el7_0.6.x86_64                     7/10 
  Cleanup    : glibc-common-2.17-55.el7_0.3.x86_64                         8/10 
  Cleanup    : glibc-2.17-55.el7_0.3.x86_64                                9/10 
  Cleanup    : tzdata-2014j-1.el7_0.noarch                                10/10 
  Verifying  : glibc-2.17-55.el7_0.5.x86_64                                1/10 
  Verifying  : tzdata-2015a-1.el7_0.noarch                                 2/10 
  Verifying  : glibc-common-2.17-55.el7_0.5.x86_64                         3/10 
  Verifying  : 1:openssl-libs-1.0.1e-34.el7_0.7.x86_64                     4/10 
  Verifying  : systemd-libs-208-11.el7_0.6.x86_64                          5/10 
  Verifying  : glibc-common-2.17-55.el7_0.3.x86_64                         6/10 
  Verifying  : systemd-libs-208-11.el7_0.5.x86_64                          7/10 
  Verifying  : tzdata-2014j-1.el7_0.noarch                                 8/10 
  Verifying  : glibc-2.17-55.el7_0.3.x86_64                                9/10 
  Verifying  : 1:openssl-libs-1.0.1e-34.el7_0.6.x86_64                    10/10 

Updated:
  glibc.x86_64 0:2.17-55.el7_0.5          glibc-common.x86_64 0:2.17-55.el7_0.5
  openssl-libs.x86_64 1:1.0.1e-34.el7_0.7 systemd-libs.x86_64 0:208-11.el7_0.6 
  tzdata.noarch 0:2015a-1.el7_0          

Complete!
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
 ---> 65693f134694
Removing intermediate container 43889045a3ed
Step 3 : RUN yum -y install openssh-server passwd; yum clean all
 ---> Running in a96d6492c1c1
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:6.4p1-8.el7 will be installed
--> Processing Dependency: openssh = 6.4p1-8.el7 for package: openssh-server-6.4p1-8.el7.x86_64
--> Processing Dependency: fipscheck-lib(x86-64) >= 1.3.0 for package: openssh-server-6.4p1-8.el7.x86_64
--> Processing Dependency: libwrap.so.0()(64bit) for package: openssh-server-6.4p1-8.el7.x86_64
--> Processing Dependency: libfipscheck.so.1()(64bit) for package: openssh-server-6.4p1-8.el7.x86_64
---> Package passwd.x86_64 0:0.79-4.el7 will be installed
--> Running transaction check
---> Package fipscheck-lib.x86_64 0:1.4.1-5.el7 will be installed
--> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib-1.4.1-5.el7.x86_64
---> Package openssh.x86_64 0:6.4p1-8.el7 will be installed
---> Package tcp_wrappers-libs.x86_64 0:7.6-77.el7 will be installed
--> Running transaction check
---> Package fipscheck.x86_64 0:1.4.1-5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                  Arch          Version               Repository   Size
================================================================================
Installing:
 openssh-server           x86_64        6.4p1-8.el7           base        367 k
 passwd                   x86_64        0.79-4.el7            base        105 k
Installing for dependencies:
 fipscheck                x86_64        1.4.1-5.el7           base         21 k
 fipscheck-lib            x86_64        1.4.1-5.el7           base         11 k
 openssh                  x86_64        6.4p1-8.el7           base        341 k
 tcp_wrappers-libs        x86_64        7.6-77.el7            base         66 k

Transaction Summary
================================================================================
Install  2 Packages (+4 Dependent packages)

Total download size: 911 k
Installed size: 2.4 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              1.1 MB/s | 911 kB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : fipscheck-1.4.1-5.el7.x86_64                                 1/6 
  Installing : fipscheck-lib-1.4.1-5.el7.x86_64                             2/6 
  Installing : openssh-6.4p1-8.el7.x86_64                                   3/6 
  Installing : tcp_wrappers-libs-7.6-77.el7.x86_64                          4/6 
  Installing : openssh-server-6.4p1-8.el7.x86_64                            5/6 
  Installing : passwd-0.79-4.el7.x86_64                                     6/6 
  Verifying  : openssh-server-6.4p1-8.el7.x86_64                            1/6 
  Verifying  : openssh-6.4p1-8.el7.x86_64                                   2/6 
  Verifying  : tcp_wrappers-libs-7.6-77.el7.x86_64                          3/6 
  Verifying  : fipscheck-lib-1.4.1-5.el7.x86_64                             4/6 
  Verifying  : fipscheck-1.4.1-5.el7.x86_64                                 5/6 
  Verifying  : passwd-0.79-4.el7.x86_64                                     6/6 

Installed:
  openssh-server.x86_64 0:6.4p1-8.el7         passwd.x86_64 0:0.79-4.el7        

Dependency Installed:
  fipscheck.x86_64 0:1.4.1-5.el7      fipscheck-lib.x86_64 0:1.4.1-5.el7        
  openssh.x86_64 0:6.4p1-8.el7        tcp_wrappers-libs.x86_64 0:7.6-77.el7     

Complete!
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
 ---> d6d5d26a325a
Removing intermediate container a96d6492c1c1
Step 4 : ADD ./start.sh /root/start.sh
 ---> 06ff76970b4a
Removing intermediate container fc185c16dec7
Step 5 : RUN mkdir /var/run/sshd
 ---> Running in 4670dcd82f93
 ---> 904ed7d476e9
Removing intermediate container 4670dcd82f93
Step 6 : RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
 ---> Running in 5996bf6a5a23
 ---> e48a480c7498
Removing intermediate container 5996bf6a5a23
Step 7 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
 ---> Running in 2c24cb002c4d
Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
48:fc:06:c2:12:e9:b8:6d:1f:91:e5:68:d4:0a:54:4c root@1e15b50fb185
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
| .o=E.           |
|  ooo.o          |
| o.oo*+          |
|. ..*o.+         |
| o . .. S        |
|. o .  .         |
| . . .           |
|    .            |
|                 |
+-----------------+
 ---> 4463e6885b2e
Removing intermediate container 2c24cb002c4d
Step 8 : RUN chmod 755 /root/start.sh
 ---> Running in e806ed020a8d
 ---> 1cc76b428192
Removing intermediate container e806ed020a8d
Step 9 : RUN ./root/start.sh
 ---> Running in 9b2ba94d80c0
Changing password for user admin.
passwd: all authentication tokens updated successfully.
ssh user password: admin
 ---> 61d83e0403a8
Removing intermediate container 9b2ba94d80c0
Step 10 : ENTRYPOINT /usr/sbin/sshd -D
 ---> Running in abdd6049a1a8
 ---> 42d8e120be8f
Removing intermediate container abdd6049a1a8
Successfully built 42d8e120be8f



】再次查看p_w_picpaths:
[Jack@server200-21 repository]$ docker p_w_picpaths                         
REPOSITORY                TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
develop/ssh               v1                  42d8e120be8f        About a minute ago   387.8 MB
docker.cn/docker/centos   7                   8efe422e6104        4 weeks ago          224 MB
docker.cn/docker/centos   centos7             8efe422e6104        4 weeks ago          224 MB
docker.cn/docker/centos   latest              8efe422e6104        4 weeks ago          224 MB



】启动
[Jack@server200-21 repository]$ docker run -d --name test1 -p 127.0.0.1:10822:22 develop/ssh:v1
0a9e8be52d9e1ee979de02e5afa5ae572d616a30589d265c3f575cb8f69f3e9c


(也可以使用本机的随机端口来映射到容器的22端口:)
[Jack@server200-21 repository]$ docker run -d --name test1 -p 22 develop/ssh:v1



】查看ssh的端口
[Jack@server200-21 repository]$ docker port test1   
22/tcp -> 0.0.0.0:49155    

(也可以这样查看:)
[Jack@server200-21 repository]$ docker top test1
[Jack@server200-21 repository]$ docker ps test1


】测试ssh连接
[Jack@server200-21 repository]$ ssh -p 10822 admin@127.0.0.1
The authenticity of host '[127.0.0.1]:10822 ([127.0.0.1]:10822)' can't be established.
RSA key fingerprint is 48:fc:06:c2:12:e9:b8:6d:1f:91:e5:68:d4:0a:54:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:10822' (RSA) to the list of known hosts.
admin@127.0.0.1's password: 
[admin@0a9e8be52d9e ~]$ exit
logout
Connection to 127.0.0.1 closed.



】删除镜像
[Jack@server200-21 repository]$ docker rmi `docker p_w_picpaths |grep develop |grep v1 |awk '{print $3}'`
Error response from daemon: Conflict, cannot delete 42d8e120be8f because the running container 0a9e8be52d9e is using it, stop it and use -f to force
FATA[0000] Error: failed to remove one or more p_w_picpaths   

这个p_w_picpath被使用,先stop再rm对应的container的id
[Jack@server200-21 repository]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                     NAMES
0a9e8be52d9e        develop/ssh:v1      "/usr/sbin/sshd -D"   2 minutes ago       Up 2 minutes        127.0.0.1:10822->22/tcp   test1  
             
[Jack@server200-21 repository]$ docker stop 0a9e8be52d9e
0a9e8be52d9e

[Jack@server200-21 repository]$ docker rm 0a9e8be52d9e  
0a9e8be52d9e

删除p_w_picpath
[Jack@server200-21 repository]$ docker rmi `docker p_w_picpaths |grep develop |grep v1 |awk '{print $3}'`
Untagged: develop/ssh:v1
Deleted: 42d8e120be8f70c5085d142f575e0b755d86ee41b5b1d842a19966d4fcfaa96b
Deleted: 61d83e0403a8e61c82a5348d54e3efb982176ffcaa6a2e7c42adf5d654fe7b33
Deleted: 1cc76b42819251ddf5fec90b2dd39a847808538a450a3589594000059f13a991
Deleted: 4463e6885b2ee45f22241c511a0d73660dd892560fa6da2f0d96c139cec25c0b
Deleted: e48a480c74980331c980b32a6d969380363a0e80aebe07ef90396359d317c3e3
Deleted: 904ed7d476e962601cbbf71885d02d58f44446a9fedfaf1ff76660e33a19be26
Deleted: 06ff76970b4ac0cc853402073b1a2a6599c0785749e49d16c151a4cd1ab65609
Deleted: d6d5d26a325aec67158e59b81517345e23790b50494cbdf34155e214ce708456
Deleted: 65693f134694aa2ab51315f439d15afb02775c9a72fcb8c3e856b6cb63ce7954
Deleted: 26a7e9d912969e1a21c0532121344b8cac232e060ffc0edb237073a9543b852e