关于docker的搭建,请参见:http://blog.csdn.net/kzx_2008/article/details/50961029
1、下载干净的centos镜像
[root@slave2 ~]# docker pull centos
2、查看本地镜像
[root@slave2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest bb3d629a7cbc 2 weeks ago 196.6 MB
3、通过镜像生成容器
[root@slave2 ~]# docker run -i -t bb3d629a7cbc /bin/bash
参数说明:
- -i : 表示以“交互模式”支行容器
- -t : 表示容器启动后会进入其命令行
- bb3d629a7cbc是镜像ID,也可以使用镜像名
- /bin/bash表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
4、下载安装nginx
[root@2b7be065c686 /]# cd /usr/local/
[root@2b7be065c686 local]# wget http://nginx.org/download/nginx-1.9.12.tar.gz
[root@2b7be065c686 local]# tar -zxvf nginx-1.9.12.tar.gz
[root@2b7be065c686 local]# cd nginx-1.9.12
[root@2b7be065c686 nginx-1.9.12]# ./configure --prefix=/usr/local/nginx --with-stream
[root@2b7be065c686 nginx-1.9.12]# make
[root@2b7be065c686 nginx-1.9.12]# make install
[root@2b7be065c686 local]# /usr/local/nginx/sbin/nginx
此时,默认端口为80,通过宿主机IP+端口则无法访问,有两种方案
一、提前为nginx规划好IP,如8009,创建容器时先指定主机与docker容器的端口映射,则第3步时增加-p参数
[root@slave2 ~]# docker run -i -t bb3d629a7cbc /bin/bash
这个命令改为下面的命令
[root@slave2 ~]# docker run -i -t -p 58009:8009 bb3d629a7cbc /bin/bash
- -p : 表示宿主机与容器的端口映射,此时将容器内部的 8009 端口映射为宿主机的 58009 端口,这样就向外界暴露了 58009 端口,可通过 Docker 网桥来访问容器内部的 8009端口了。
5、列出目前的所有容器
[root@slave2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b7be065c686 bb3d629a7cbc "/bin/bash" 23 hours ago Exited (0) About a minute ago stoic_albattani
6、创建带有nginx的镜像
[root@slave2 ~]# docker commit 2b7be065c686 xyf/nginx:0.1
命令说明:
- 2b7be065c686 是容器ID
- xyf/nginx 是镜像名
- 0.1 是标签
[root@slave2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
xyf/nginx 0.1 0bb45d171504 About an hour ago 380.4 MB
centos latest bb3d629a7cbc 2 weeks ago 196.6 MB
7、用带有nginx的镜像生成新容器
[root@slave2 ~]# docker run -i -t -p 58009:8009 0bb45d171504 /bin/bash
[root@slave2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95133e2c2a82 0bb45d171504 "/bin/bash" About an hour ago Exited (130) 42 minutes ago drunk_meitner
ffe50016ba94 xyf/nginx:0.1 "/bin/bash" About an hour ago Exited (0) About a minute ago fervent_goodall
48b226bb684a bb3d629a7cbc "/bin/bash" 23 hours ago Exited (0) 23 hours ago fervent_hopper
2b7be065c686 bb3d629a7cbc "/bin/bash" 24 hours ago Exited (0) 9 minutes ago stoic_albattani
[root@slave2 ~]# docker start 95133e2c2a82
95133e2c2a82
[root@slave2 ~]# docker attach 95133e2c2a82
8、启动nginx
[root@95133e2c2a82 /]# vi /usr/local/nginx/conf/nginx.conf #把端口80改为8009
[root@95133e2c2a82 /]# ps -ef|grep nginx
root 15 1 0 07:25 ? 00:00:00 grep --color=auto nginx
[root@95133e2c2a82 /]# /usr/local/nginx/sbin/nginx
[root@95133e2c2a82 /]# ps -ef|grep nginx
root 17 1 0 07:25 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 18 17 0 07:25 ? 00:00:00 nginx: worker process
root 20 1 0 07:25 ? 00:00:00 grep --color=auto nginx
9、在浏览器中访问宿主机IP加映射端口:http://10.10.5.31:58009/
10、补充说明,dcoker pull下来的centos:latest版本是centos7
[root@8da8ffe8894d /]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core