Docker入门-如何在Linux上简单使用docker(如何解决在主机上连接docker中的Tomcat的问题)

1. Docker描述

百度百科是这么解释的,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。其中的重点我觉得就是Docker可以将软件编译成一个镜像,方便在不同的地方直接使用,不用进行那么多的配置;

1.1 Docker的名词解释
  1. docker主机:安装了docker程序的主机;
  2. docker客户端:通过命令行或者其它的工具使用docker;
  3. docker仓库:用来保存各种软件镜像;
  4. docker镜像:软件打包好的镜像;
  5. docker容器:独立运行的一个或一组应用,比如docker中又一个Tomcat镜像,通过命令运行之后就可以启动这个镜像,然后产生一个容器,就像是安装好了Tomcat一样;镜像启动的实例;
1.2 Docker的使用步骤
  1. 先安装好Docker;
  2. 去Docker仓库找到这个软件对应的镜像;
  3. 使用Docker运行这个镜像;
  4. 然后对容器进行启动或者停止(就和启动相应的软件一样);

2. 在虚拟机上安装docker

  1. 这里介绍的是虚拟机联网时的下载方式;使用指令yum install docker,(虚拟机是centos7);
  2. 然后就可以直接查看虚拟机的版本,docker -v,如果查到了版本就证明已经安装好了;
  3. 使用指令docker search mysql可以查看你想要下载到docker的容器的mysql软件,
    在这里插入图片描述
  4. 第3步中是搜索镜像,现在是开始安装镜像,比如docker pull mysql,就是上图中的name属性下方的名字(可以填写完整的也可以只填写最后一部分),如下图下载Tomcat的镜像;

  5. 删除镜像docker rmi 镜像的id(通过docker images查看)

3. 如何解决在宿主机上连接Tomcat

首先连接肯定是连接不上的了,

  1. 你可能防火墙没关,这个使用指令systemctl status firewalld,查看状态;如果active显示dead就表示防火墙是关闭的;否则就用指令systemctl top firewalld关闭防火墙;以上介绍可能不够详细,想要详细了解可以看看别人的博客介绍;
  2. 在关闭防火墙之后可能还是无法连接,这个时候可能是网络IP和端口问题;这个你也可以在宿主机的命令行里面ping IP地址一下虚拟机的IP地址;如果连接超时就证明你还是没能连上Linux;
  3. 在没有连上Linux的时候只能查看一下linux的IP,ifconfig可以查看Linux的IP;
  4. 然后就可以根据这个IP试一试,果然IP自己换了,该死的校网;然后就可以通过这个查询到的IP尝试访问一下;这里是有前提的,比如首先,你已经开启了一个容器,并且容器也对应了端口(如下图一)指令使用docker --name 自定义名字 -d 虚拟机端口号:docker中的端口号 该docker中的Tomcat名字具体是:docker --name mytomcat -d 8081:8080 tomcat:latest,其中latest类似于版本号,另外的端口号可以自己设置;8081表示虚拟机的端口号映射过去就到了docker里面的端口号,除此之外,docker本身也有自己的IP地址;访问的时候使用IP地址加上端口号就可以了,IP是虚拟机的IP,端口号由于已经映射好了,所以就可以直接访问到docker里面的tomcat了;
  5. 当然如果你想要直接在宿主机上通过localhost:8080访问,也只是需要如下操作,我使用的是VMware操作虚拟机,先找到编辑->打开虚拟网络编辑器,进行NAT设置,如下图;



`这样按照上面的做法完成后就相当于是将主机和虚拟机的IP和端口号分别进行了绑定,你在浏览器使用主机的IP也会跳转到虚拟机的IP上面;端口号也是一样的跳转;比如上面的localhost:8080对应虚拟机的192.168.121.128:8081当然localhost默认IP地址:127.0.0.1;也可以换成本机的IP地址;
以上就是所有可能出现问题的地方以及如何解决的方法;

最后一点就是你如果已经连接上了,我的意思是出现了404错误,这个其实属于连接上了docker里面的Tomcat,只是tomcat里面的webapps里面可能没有东西,这个时候可以先进入tomcat的目录进行修改,具体操作如下:

  1. 使用指令:docker -it 你自定义的容器名字 /bin/bash,这里面的自定义的容器名字,是你docker run的时候创建的名字;
  2. 进入目录后,可以ls -a,查看所有的目录;
  3. 查看后你会发现,所有的目录都在,其中有一个webapps,和一个webapps.dist目录,这个是因为webapps里面的东西都被放到了webapps.dist里面;只需要使用mv指令,将数据放到webapps里就可以了;如下操作:
#强制删除webapps目录
rm -rf webapps
#对文件进行重命名
mv webapps.dist webapps

完成如上的操作后,基本上这个问题就解决了;

4. 使用docker时的常用指令

常用指令指令描述
systemctl start docker启动docker服务,当然可以设置为开机自启;
docker run --name 自定义容器名字 -d -p 虚拟机端口号:映射到docker中端口号 软件镜像版本这是用来创建一个容器;-d指令表示后台启动
docker start 容器名通过容器名字,来启动某个容器;
docker images查看所有的docker里面下载的镜像;
docker ps查看启动后的容器
docker rmi imagesID通过imageID删除镜像,imageID通过指令docker images可以查看到;
docker stop 容器名或容器ID停止正在运行的容器
docker rm 容器名或容器ID通过容器名字删除容器
docker exec 容器名 /bin/bash比如在tomcat容器里面,可以到Tomcat容器的目录中;
docker logs 容器ID查看该容器的日志,ID可以通过docker ps -a查看

很多的具体容器指令其实可以在那个docker hub里面查看,一般比较详细,如何使用,如下图:

在红色框框里面输入需要的镜像,比如MySQL,Tomcat,redis等,就可以查到相关镜像的内容,然后下面就是镜像的一些具体操作方式;

注意:在创建容器时,端口的映射是必须的,你要是不对虚拟机端口与容器所需要的端口进行映射,那么你怎么使用该容器中的软件呢?

6. 尝试下可否使用Navicat连接容器中的MySQL

  1. 同样的先创建一个mysql容器:docker run --name mysql01 -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:latest,这个是根据官方的那个docker hub写的,然后要标注好映射的端口号,里面的latest是Tag;
  2. 然后启动这个容器mysql:docker start mysql01
  3. 这时去Navicat里面进行连接,连接名字随便设置,主机那里要写虚拟机的端口号,用户名那里设置的是root用户和密码,端口号也可以是3306,不需要变,当然如果存在多个mysql的时候就可能需要改变端口号;



如上就完成了一个宿主机对虚拟机中docker里mysql的连接;我也尝试了连接多个mysql发现没有问题,只需要改变虚拟机本身的端口就可以了,至于docker中的端口只要始终用那一个就可以了;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神秘的天

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值