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’
5. 得到ip后进行访问,还要获得端口
查看容器对外的默认端口为8080,然后用ip + 端口访问:
在虚拟机中终端可以访问。
那么在浏览器中是否可以访问呢?答案是不能,因为只有物理机可以访问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容器了:
同时再开一个容器,将物理机的8081端口和容器默认的8080端口NAT映射:
docker run -p 8081:8080 --name=testname2 -itd docker.io/tomcat