docker命令详解、宿主机和容器通信原理的问题

我的笔记本是window7系统,为了模拟服务器的环境,安装了虚拟机centOS7。

前戏准备

  •     一些操作都需要root权限操作,从用户角色转换到root角色命令:sudo su
  •     启动docker服务:service docker start
  •     (docker所有的操作,都是基于启动docker服务,不然会报:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
  •     查看镜像列表:docker images
  •     查看已启动的容器列表:docker ps
  •     查看所有的容器列表:docker ps -a
  •     简单的开启一个容器:docker start 容器ID
  •     进入容器:docker attach 容器ID

1.首先在宿主机(虚拟机centOS7)上安装docker:

参考菜鸟教程:http://www.runoob.com/docker/centos-docker-install.html

2.之后拉取Ubuntu镜像:

参考:http://blog.csdn.net/gaoxinghuan/article/details/56352060

3.下载jdk/tomcat安装包,并且从宿主机(虚拟机)挂载到容器中:

3.1 centOS把源文件夹(/home/xiaoxie/javawebTool/)下的安装包复制到-->目标文件夹(/opt/soft/)下:

cp -Rf /home/xiaoxie/javawebTool/* /opt/soft/

(cp   -Rf     源文件夹下的所有文件     目标文件夹)

3.2 运行镜像(镜像id),并将宿主机/opt/soft目录挂载到容器的/opt/soft上 :

    docker run -i -t -v /opt/soft/:/opt/soft/ 9b9cb95443b5 /bin/bash

(docker run -i -t -v 宿主机文件目录 : 容器文件目录  镜像id  /bin/bash)

4.在容器内安装jdk和tomcat:

4.1 安装jdk到/opt/jdk:

    创建文件夹jdk:mkdir /opt/jdk

                          (mkdir  创建的文件夹)

    解压jdk安装包到/opt/jdk文件下:tar -zxvf jdk-8u161-linux-x64.tar.gz -C  /opt/jdk

                                                     (tar -zxvf      要解压文件的全路径        -C   安装路径)         

    centOS在docker中配置jdk的环境变量:

    第一步:echo -e "\n\nexport JAVA_HOME=/opt/jdk/jdk1.8.0_161" | tee -a /etc/profile


    第二步:echo -e "\nexport PATH=\$PATH:\$JAVA_HOME/bin" | tee -a /etc/profile

 

    第三步:source /etc/profile 

    最后检查:java -version

 

4.2 安装tomcat到/opt/tomcat:

    创建文件夹tomcat:mkdir tomcat

    解压tomcat安装包:tar -zxvf apache-tomcat-7.0.85.tar.gz -C /opt/tomcat/


 

5.把配置好jdk、tomcat的容器commit成镜像,方便以后使用:

docker commit -m "first ubuntu" -a "xiaoxie" efa4ec8b663c docker.javaweb
(docker commit  -m "提示信息"      -a"作者"          容器id             镜像名称)

6.启动新生成的镜像,把宿主机器的80端口映射到容器的8080端口

(这一步导致,访问ip+端口号(8080)变成了直接访问域名,因为宿主机器的80端口是访问web的默认端口。)

    docker run -it  --name  tomcat  -p  80:8080  docker.javaweb  /bin/bash

(docker run -it  --name 容器名称 -p 宿主机端口  :  容器的端口  镜像名称   /bin/bash)

启动tomcat:

    配置环境:source /etc/profile

    进入到tomcat的bin目录:cd /opt/tomcat/apache-tomcat-7.0.85/bin/

    启动tomcat:./startup.sh

访问tomcat:
    在宿主机器上访问查询IP端口:ip addr

    (用来查找访问tomcat的域名)

tomcat访问结果截图:

---------------------------------------------------------------------------打完收工。

但有了疑惑,宿主机如何找到容器中的端口,或者说,宿主机和容器是如何通信的?

7.宿主机和容器是如何通信的:

给出流程图:

如有不懂,请参考:点击打开链接,此流程图便是阅读这篇知乎文章,根据自己理解所画。

关于docker做了一个新的系列讲解:Docker最新版详解系列

---------------------------------------------------------------------------不关注我“象话”吗?

如有疑惑,请评论留言。

如有错误,也请评论留言。

我的网站 https://www.lookhot.cn/#/

 CSDN私信我,接私活

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象话

打赏犹如太阳穴的枪口

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值