一、安装CentOS7 Linux虚拟机
https://pan.baidu.com/s/1Hhov4WqJ0Gw3Jasor8brMg
二、安装和配置Docker
yum install docker-io
service docker start
chkconfig docker on
如果Docker启动失败,关闭防火墙和Selinux
三、下载Docker镜像
docker pull tcbenkhard/centos6-jdk7
四、查看Docker镜像
docker images
五、启动Docker容器
docker run -i -t docker.io/tcbenkhard/centos6-jdk7 /bin/bash
参数 -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,参数 -i 则让容器的标准输入保持打开。
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
(1)检查本地是否存在指定的镜像,不存在就从公有仓库下载
(2)利用镜像创建并启动一个容器
(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
(5)从地址池配置一个 ip 地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器被终止
六、使用已有Docker镜像生成新的镜像
A、修改root用户密码
passwd root
B、安装Openssh
yum -y install openssh-server
yum -y install openssh-clients
C、修改Openssh配置
vi /etc/ssh/sshd_config
D、配置Ssh
service sshd restart
chkconfig sshd on
E、退出Docker容器
F、使用 docker commit 命令来提交更新后的副本
docker commit -m ‘openssh’ -a ‘Docker TomatSSH’ 8a6143db8502 web:centos6ssh
G、查看Docker镜像
修改Tag名称
docker tag -f web:centos6ssh web:latest
七、启动新的容器并打通22端口
docker run -d -p 50001:22 web:centos6ssh /usr/sbin/sshd -D
八、查看Docker进程
docker ps
九、使用SSH连接Docker容器
十、关闭Docker容器
十一、删除Docker镜像
docker rmi -f e1ddf3a0b26
十二、定制Docker镜像
在CensOS7 Linux虚拟机上新建目录
/u01/tomcat-docker,拷贝JDK7和Tomcat7到此目录中
这些文件可以从云盘下载:
https://pan.baidu.com/s/1ong89jTKWdCQ1lEWRSD6QA
在/u01/tomcat-docker目录下新建文件Dockerfile
FROM centos:6
MAINTAINER qixiangchen “qixiang_chen@aliyun.com”
ENV DEBIAN_FRONTEND noninteractive
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
ADD tomcat-7.0.33 /tomcat
ADD jdk1.7.0_21 /jdk
ADD run.sh /run.sh
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh
CMD ["/run.sh"]
在/u01/tomcat-docker目录下新建文件run.sh文件
#!/bin/bash
exec ${CATALINA_HOME}/bin/catalina.sh run
十三、生成自定义Docker镜像
将Shell的当前目录转移到/u01/tomcat-docker
docker build -t my:tomcat /u01/tomcat-docker -f /u01/tomcat-docker/Dockerfile
[root@localhost tomcat-docker]# docker build -t my:tomcat /u01/tomcat-docker -f /u01/tomcat-docker/Dockerfile
Sending build context to Docker daemon 226.4 MB
Step 1/11 : FROM centos:6
Trying to pull repository docker.io/library/centos …
6: Pulling from docker.io/library/centos
987d765a926d: Already exists
Digest: sha256:bac053540cfdc5c034191d2f20207dc83f5336bca0bcdbb9d9a58a64ed30d4f3
Status: Downloaded newer image for docker.io/centos:6
—> 70b5d81549ec
Step 2/11 : MAINTAINER qixiangchen “qixiang_chen@aliyun.com”
—> Running in 19b2694c1fd4
—> 9b4320452e5e
Removing intermediate container 19b2694c1fd4
Step 3/11 : ENV DEBIAN_FRONTEND noninteractive
—> Running in f5ad60c00fd6
—> 6a0f695af2a1
Removing intermediate container f5ad60c00fd6
Step 4/11 : ENV CATALINA_HOME /tomcat
—> Running in f5f080288411
—> 4554cb29b2a1
Removing intermediate container f5f080288411
Step 5/11 : ENV JAVA_HOME /jdk
—> Running in 2f082860f356
—> 5ef966815b55
Removing intermediate container 2f082860f356
Step 6/11 : ADD tomcat-7.0.33 /tomcat
—> 0047c158947d
Removing intermediate container 226f4e806032
Step 7/11 : ADD jdk1.7.0_21 /jdk
—> 24c69e85d8fd
Removing intermediate container 3cf84e93c5a7
Step 8/11 : ADD run.sh /run.sh
—> 0326fea49b0e
Removing intermediate container 8afa67a983e6
Step 9/11 : RUN chmod +x /*.sh
—> Running in 6abc6421de4f
—> de07b2ff628a
Removing intermediate container 6abc6421de4f
Step 10/11 : RUN chmod +x /tomcat/bin/*.sh
—> Running in b441bfa0720f
—> da572d3cf19f
Removing intermediate container b441bfa0720f
Step 11/11 : CMD /run.sh
—> Running in 85a36c4532fc
—> 836de2459d34
Removing intermediate container 85a36c4532fc
Successfully built 836de2459d34
[root@localhost tomcat-docker]#
十四、查看Docker镜像
十五、配置自定义Docker镜像可以SSH远程访问
A.修改root用户密码
B.安装OpenSSH
yum -y install openssh-server
yum -y install openssh-clients
service sshd restart
chkconfig sshd on
C.配置JAVA_HOME和PATH
vi /etc/profile
在文件最末尾添加
export JAVA_HOME=/jdk
export PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
生效配置
source /etc/profile
D.退出Docker容器,生成新的Docker镜像
docker commit -m ‘openssh’ -a ‘Docker TomatSSH’ 2f2636098538 my:tomcat
十六、Docker容器多端口映射启动
docker run -d -p 10022:22 -p 18080:8080 my:tomcat /usr/sbin/sshd -D
十七、SSH远程Docker容器并启动Tomcat
十八、打包Docker镜像
docker save -o mytomcat-docker.tar my
十九、导入Docker镜像
docker load -i mytomcat-docker.tar
二十、停止Docker容器
docker stop containerId 关闭容器
docker restart containerId 重启容器
docker exec -it containerId /bin/bash 连接后台容器启动Shell
二十一、Docker容器映射多个端口启动
docker run -d -p 10022:22 -p 18080:8080 my:tomcat /usr/sbin/sshd -D
问题列表
1、如果SSH连接Docker镜像,出现Connection to localhost closed
主要原因是Docker镜像中SSH配置文件问题
vi /etc/ssh/sshd_config
UsePAM no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand none
AuthorizedKeysCommandRunAs nobody
PermitRootLogin yes
使用SSH连接Docker出现异常,可以使用如下命令跟踪SSH调试信息
$ ssh -v localhost
如果出现
Transferred: sent 2264, received 2224 bytes, in 0.0 seconds
Bytes per second: sent 235367.6, received 231209.1
debug1: Exit status 254
说明/etc/ssh/sshd_config配置文中
UsePAM yes
修改为
UsePAM no
2、如果启动端口映射报iptables端口地址转换失败
docker run -d -p 10022:22 -p 18080:8080 my:tomcat /usr/sbin/sshd -D
重新启动docker服务
service docker restart