Docker虚拟化三个概念:

Docker镜像,Docker容器,Docker仓库。

Docker镜像:是一个静止模板文件,同ISO镜像文件类似,不能被修改,可以被封装。

Docker容器:是基于Docker镜像启动的实例,可读可写,有一个容器层,可以调用Docker镜像层的数据文件,类似程序和进程的关系,进程是程序运行的实体,而容器是镜像运行之后的实体。

Docker仓库:是存储Docker镜像的地方,分为公共仓库和私有仓库,可以自己构建企业内部的私有仓库。




1. Docker安装

1)基于CentOS6.x(6.5+)构建Docker虚拟化平台,指令如下:

yum install epel-release -y

yum install docker-io lxc cgroup device-map* -y

2)基于CentOS7.x(7.0+)构建Docker虚拟化平台,指令如下:

yum install docker* -y

 

安装后用下边命令查看

rpm -qa|grep docker

或查看进程

ps -ef|grep docker

 

 

2. 安装Docker之后,要启动一个Docker容器,首先从官网下载Docker镜像,下载镜像之前搜索官网镜像:

docker search tomcat     // 搜索tomcat镜像(从公共仓库,即公网)

docker pull docker.io/tomcat // 下载tomcat镜像(从公共仓库,即公网)

docker images // 下载之后,查看本机镜像列表

 

 

3. 运行docker镜像:

docker run -itd docker.io/tomcat  // 基于Tomcat镜像,启动Docker容器

docker run --name=testname -itd docker.io/tomcat  // --name 启动时给容器命名为testname



4. 查看容器信息:

docker ps  // 查看虚拟机,查看已经启动或运行的Docker(每一个容器就是一个虚拟机)

docker exec testname ifconfig // 查看Docker容器中的IP地址,前提是虚拟机/容器中包含ifconfig命令,

如果容器中没有ifconfig命令,就只能用其他命令查看IP

docker inspect testname|grep  -i  ipaddr

docker inspect testname|grep  -i  ipaddr|tail -1 // 只看第一列

docker inspect testname|grep  -i  ipaddr|tail -1|awk ‘{print $NF}’  

去掉双引号””

docker inspect testname|grep  -i  ipaddr|tail -1|awk ‘{print $NF}’|sed ‘s/\”//g’  

去掉双引号””和逗号,

docker inspect testname|grep  -i  ipaddr|tail -1|awk ‘{print $NF}’|sed ‘s/\”//g;s/,//g’

docker需要虚开启拟化吗 docker虚拟化部署_docker需要虚开启拟化吗

 

 

5. 得到ip后进行访问,还要获得端口

docker需要虚开启拟化吗 docker虚拟化部署_云/分布式集群_02

查看容器对外的默认端口为8080,然后用ip + 端口访问:

docker需要虚开启拟化吗 docker虚拟化部署_Docker_03

在虚拟机中终端可以访问。

那么在浏览器中是否可以访问呢?答案是不能,因为只有物理机可以访问Docker虚拟机,而浏览器是通过公网访问,根本不在一个网段内。

那浏览器、公网如何访问Docker容器呢?答案:通过NAT映射

 

6. 将Docker容器的8080端口,映射到物理机的8080端口

在运行Docker容器之时 带上参数-p 8080:8080

docker  run  -p 8080:8080  --name=testname  -itd docker.io/tomcat

-p表示做NAT映射,通过iptables映射,将物理机的8080,映射到Docker容器的8080;

然后就可以在浏览器公网访问了Docker容器了:

 

docker需要虚开启拟化吗 docker虚拟化部署_docker_04

 

同时再开一个容器,将物理机的8081端口和容器默认的8080端口NAT映射:

docker  run  -p 8081:8080  --name=testname2  -itd docker.io/tomcat

docker需要虚开启拟化吗 docker虚拟化部署_云/分布式集群_05