Docker笔记 ——Docker基本概念与部署Tomcat

Docker体系结构

Docker Engine包含了3个部分

在这里插入图片描述

  1. 最核心的是Docker Server,即Docker Daemon
  2. 在外侧,有一个基于REST API的通信层
  3. 最外层,是Docker Client。它可以接受命令,并通过REST API向Docker Server发送请求和指令,Docker Server处理完成后,将结果通过REST API返回给Docker Client。是基于REST API进行通信,所以采用的是Http协议

REST API可以看作一个小的Tomcat,而内部的Docker Server可以看作是一个服务。

这样基于CS的架构,好处是:

  1. Docker服务器和客户端,可以不用安装在同一台电脑上。运维可以通过一台安装了Docker Client的电脑,来同时管理多台安装了Docker Server的服务器

镜像和容器

  1. 镜像

    镜像就是一个文件,是只读的,静态的,它提供了运行程序所需要的完整软硬件资源,是应用程序的集装箱

  2. 容器

    容器是镜像的实例,是动态的,由Docker负责创建,容器之间互相隔离

  3. 例子

    比如windows操作系统的安装光盘就是一个镜像(它是静态的一些文件),而安装了windows系统的电脑,它就可以称为一个运行着windows系统的实例,即windows镜像的容器

Docker执行流程

在这里插入图片描述

一个docker容器内部,就是一个迷你的linux系统

Docker部署Tomcat

Docker常用命令

# tags可以指定镜像的特定版本
docker pull 镜像名<:tags>
# 查看本地已经下载好的镜像
docker images
# 以某个镜像文件,创建容器,并启动
# 若docker run的镜像还没被pull到本地,则会自动先执行docker pull
docker run 镜像名<:tags>

# 以交互的方式进入到容器内部
docker exec -it 容器id /bin/bash
# 查看正在运行中的容器
docker ps
# 查看所有的容器
docker ps -a
# 删除容器
docker rm <-f> 容器id
# 删除镜像
docker rmi <-f> 镜像名<:tags>
# 拉取latest的tomcat镜像
docker pull tomcat

若想指定镜像的tags,可以上hub.docker.com,搜索镜像名字,比如tomcat

在这里插入图片描述

docker run tomcat

启动完成后,并不能通过8080端口访问到tomcat服务。这是因为还没有配置宿主机和Docker容器之间的端口映射

在这里插入图片描述

在这里插入图片描述

Docker提供了端口映射,将宿主机的端口和容器的端口进行绑定。

外部调用者只关注宿主机暴露的端口即可,对于内部具体转发到哪一个容器,它无从感知。这样,只要保证宿主机的映射端口不变,容器内我可以跑tomcat,也可以跑jetty,迁移非常方便。

那么如何做端口映射呢

# 先Ctrl + C 停掉 tomcat这个容器
# 重新运行
docker run -p 8000:8080 tomcat
# 这样就把宿主机的8000端口,绑定到了容器中的8080端口

# 结果发现访问报404,说明tomcat起来了,也对外暴露了,但是找不到资源
docker exec -it tomcat容器id /bin/bash
# 进入容器后,发现webapps下没有任何文件,但是有一个webapps.dist
# webapps.dist下有ROOT文件夹等资源
# 于是,先删除webapps文件夹,再把webapps.dist重命名为webapps
rm webapps
mv webapps.dist webapps
# 再次访问,成功

在这里插入图片描述

若出现下面的提示,则tomcat启动后,也访问不了,需要修改一下ipv4的网络配置

在这里插入图片描述

# 需要修改一下配置
vi /etc/sysctl.conf
# 进入该文件,添加这段配置
net.ipv4.ip_forward=1
# 重启network服务和docker服务
systemctl restart network
systemctl restart docker
# 再次启动docker容器即可
# 若启动成功但是访问不到,可能是centos 端口没有放行
# 用如下方式进行端口放行
firewall-cmd --zone=public --add-port=8000/tcp --permanent

用netstat命令查看一下,可以看到宿主机的8000端口处于LISTENING状态

在这里插入图片描述

可以看到,是通过docker proxy来完成端口映射的

通过-d参数可以让容器以后台进程运行

# 让docker在后台运行
# 注意把镜像名称放在最后
docker run -p 8000:8080 -d tomcat

# 如何把docker容器停止,并移除容器
docker stop tomcat
docker rm tomcat容器的id

# 删除某个镜像
docker rmi tomcat

猜你喜欢

转载自blog.csdn.net/vcj1009784814/article/details/106270150