1. 安装CentOS 7.x
略。
2. 安装docker
详见: How to Install Docker on CentOS 6.x
3. 基础docker命令
# 获取centos6 docker镜像[root@docker ~]# docker pull centos6Using default tag: latestlatest: Pulling from library/centos:centos643db9dbdcb30: Downloading 41.14 MB/49.33 MB43db9dbdcb30: Pull complete2dc64e8f8d4f: Pull complete670a583e1b50: Pull complete183b0bfcd10e: Pull completeDigest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54bStatus: Downloaded newer image for centso:centos6# 查看当前服务器上的docker镜像[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos6-visionet latest aeed37612ecb 6 hours ago 1.916 GBcentos centos6 a3c09d36ab4a 2 days ago 194.6 MBregistry latest c6c14b3960bd 3 days ago 33.28 MB# 查找docker镜像[root@docker ~]# docker search centos:centos6NAME DESCRIPTION STARS OFFICIAL AUTOMATEDimagine10255/centos6-lnmp-php56 centos6-lnmp-php56 10 [OK]lemonbar/centos6-ssh Installed openssh-server on centos6, defau... 7 [OK]sergeyzh/centos6-nginx 2 [OK]guyton/centos6 From official centos6 container with full ... 2 [OK]paijp/centos6-apache-php-sqlite2 php5.3.3 with sqlite2 and apache on CentOS... 1 [OK]edrans/centos6 1 [OK]mohri1219/centos6.7-ruby2.2.2-mysql5.6 centos6.7-ruby2.2.2-mysql5.6 1 [OK]......# 删除 centos6 docker镜像[root@docker ~]# docker rmi IMAGES_NAME[root@docker ~]# docker rmi centos:centos6# 报错无法删除Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container 705a30cbc002 is using its referenced image 42118e3df429# 这是因为之间的运行的进程没有清楚导致该images正在使用中,使用一下命令查看占有的进程[root@docker ~]# docker ps -a # 查看所有的docker进程CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES705a30cbc002 centos:centos6 "/bin/bash" 6 minutes ago Exited (0) 6 minutes ago centos6[root@docker ~]# docker rm 705a30cbc002705a30cbc002[root@docker ~]# docker rmi centos:centos6Untagged: centos:centos6Deleted: sha256:42118e3df429f09ca581a9deb3df274601930e428e452f7e4e9f1833c56a100aDeleted: sha256:d72d0199021776e77ac14a764a3decd156e9f6f18b37e25b867b0f1ca42fb3d9Deleted: sha256:fb178c6cea1453d089ce033b96eba0efdb42274138e042517ea2d5ea7bb51665Deleted: sha256:8945af30572845a904adce2aeaf73402c842d86e99e8f10688b25cb27834110bDeleted: sha256:ea9f151abb7e06353e73172dad421235611d4f6d0560ec95db26e0dc240642c1
4. 运行一个docker镜像
进入交互式程序
[root@docker ~]# docker run -it centos:centos6 /bin/bash[root@c1d190f95562 /]# cat /etc/redhat-releaseCentOS release 6.8 (Final)# Install openssh-server and httpdroot@d8c122dbe09d:/# yum install -y openssh-sever httpdroot@d8c122dbe09d:/# exit# 注意当你执行exit,从容器之中退出时,容器也会随着关闭,这时如果还继续执行上条命令# 你会发现之前所有的操作都被还原,因为相对于docker,又是新开了一个进程# 在exit退出之后,使用一下命令查看上次提交,然后commit修改,便可保存之前的修改[root@docker ~]# docker ps -l[root@docker ~]# docker commit c1d190f95562 centos:centos6-httpdsha256:77eb12e36c7bbe9ef874555b1873019022b5258740aa731627e2cd6fa749c325[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos centos6-httpd 77eb12e36c7b 3 seconds ago 290.3 MBcentos6-visionet latest aeed37612ecb 6 hours ago 1.916 GBcentos centos6 a3c09d36ab4a 2 days ago 194.6 MBregistry latest c6c14b3960bd 3 days ago 33.28 MB
5. 编辑Dockerfile
# dockfile的第一行一定是FROM,指定了父镜像FROM centos:centos6# RUN 指的是运行的命令RUN yum install -y epel-releaseRUN yum install -y bash-completionRUN yum install -y openssh-server openssh-client sudoRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_configRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 增加一个用户,并赋予sudo权限RUN useradd visionetRUN echo "visionet:visionet" | chpasswdRUN echo "visionet ALL=(ALL) ALL" >> /etc/sudoers# 注意,如果没有执行一下两个命令,sshd是无法远程登陆的RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key# EXPOSE 22, 将22端口暴露出来,方便ssh远程连接RUN mkdir /var/run/sshdEXPOSE 22# CMD 为系统内部执行命令CMD ["/usr/sbin/sshd", "-D"]
6. 生成自定义docker镜像
# build 编译镜像[root@docker ~]# docker build -f dockerfile3 -t centos:centos6-ssh .Sending build context to Docker daemon 44.54 kBStep 1 : FROM centos:centos6---> a3c09d36ab4aStep 2 : RUN yum install -y epel-release---> Using cache---> 04d81f280a63Step 3 : RUN yum install -y bash-completion---> Using cache---> 5ca26894dc9dStep 4 : RUN yum install -y openssh-server openssh-client sudo---> Using cache---> 42278450311eStep 5 : RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config---> Using cache---> db35bef562a2Step 6 : RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime---> Using cache---> dc9f2b82e198Step 7 : RUN useradd visionet---> Using cache---> 06c574a51755Step 8 : RUN echo "visionet:visionet" | chpasswd---> Using cache---> 03412f053d04Step 9 : RUN echo "visionet ALL=(ALL) ALL" >> /etc/sudoers---> Using cache---> bf8476812a62Step 10 : RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key---> Using cache---> 2314cce75171Step 11 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key---> Using cache---> 99304cd9ac15Step 12 : RUN mkdir /var/run/sshd---> Using cache---> f87283751553Step 13 : EXPOSE 22---> Using cache---> 56c41202dcb9Step 14 : CMD /usr/sbin/sshd -D---> Using cache---> d6dccb483fa6Successfully built d6dccb483fa6[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos centos6-ssh d6dccb483fa6 2 minutes ago 363 MBcentos centos6-httpd 77eb12e36c7b 6 minutes ago 290.3 MBcentos6-visionet latest aeed37612ecb 6 hours ago 1.916 GBcentos centos6 a3c09d36ab4a 2 days ago 194.6 MBregistry latest c6c14b3960bd 3 days ago 33.28 MB# 后台运行docker容器,并指定nat端口转发[root@docker ~]# docker run -d -p 2222:22 -P --name=sshd centos:centos6-sshb4211f7a304d9e34b72b510230be2c7a76b276886b488f08f3e12896a4d3c172
7. ssh登陆到docker容器内,部署项目环境
# inspect 查看docker 容器IP地址[root@docker ~]# docker inspect sshd | grep IPAddress[root@docker ~]# ssh visionet@172.17.0.2visionet@172.17.0.2's password:[visionet@b4211f7a304d ~]$# Install mysql# Install tomcat server[visionet@b4211f7a304d ~]$ exit[root@docker ~]# docker stop sshdsshd[root@docker ~]# docker ps -lCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb4211f7a304d centos:centos6-ssh "/usr/sbin/sshd -D" 6 minutes ago Exited (255) 3 seconds ago sshd[root@docker ~]# docker commit b4211f7a304d centos:centos6-tomcatsha256:b4f114d5484822d9a3ddf1100b76b460985ba5e5d31e936570e8d7dbd8df282c[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos centos6-tomcat b4f114d54848 4 seconds ago 363.1 MBcentos centos6-httpd 77eb12e36c7b 15 minutes ago 290.3 MBcentos6-visionet latest aeed37612ecb 7 hours ago 1.916 GBcentos centos6-ssh d6dccb483fa6 9 hours ago 363 MBcentos centos6 a3c09d36ab4a 2 days ago 194.6 MBregistry latest c6c14b3960bd 3 days ago 33.28 MB
