30分钟快速上手Docker,看这篇就对了!(下)

简介: 30分钟快速上手Docker,看这篇就对了!(下)

七、实战部署Tomcat


1、找镜像


(1)去远程仓库找镜像 https://hub.docker.com/


(2)


image.png


(3)一般带官方logo的,且名字就是官方名字的(比如tomcat),且start最高的,那就是正品。其他的可能都是个人的,个人的不靠谱。



image.png


image.png


2、安装tomcat


2.1、拉取镜像


docker pull tomcat


完整命令是:docker pull 镜像名<:tags> 从远程仓库拉取镜像。如果没写:tags则代表是latest版本。如下图


image.png


比如也可以拉取带tags的镜像


docker pull tomcat:8.5.55-jdk8-openjdk


这个tag是从如下地方获取的


image.png


2.2、查看镜像



docker images


2.3、启动容器


镜像有了该启动容器玩玩了。


docker run tomcat


完整命令是:docker run 镜像名<:tags> 这里没指定tag就代表是latest, docker images可以查看镜像tags等信息。


2.4、问题


我们已经装逼三连:docker pulldocker imagesdocker run,将tomcat正常启动了,默认端口8080,问题来了,我怎么访问呢?它是在docker里的,不是我宿主机的8080端口,这就需要做一个端口映射。宿主机和docker启动的tomcat的端口映射。


2.5、端口映射


docker run -p 8000:8080 tomcat


也就是启动参数里多加个-p参数,-p参数用于端口映射,前面是宿主机端口,后面是容器端口。


2.6、测试


浏览器输入:http://localhost:8800


404?那是因为新版本tomcat将webapps下面的内容都删了,所以找不到了原来的index.jsp文件了。这又有问题了,我怎么进入我容器里的tomcat目录?比如看个log,找到webapps给他添加文件等操作。


2.7、进入容器里的tomcat


# 先用docker ps命令查看启动的容器
docker ps


image.png

# 进入容器的tomcat
docker exec -it ac1c3d62b75d /bin/bash


格式:docker exec [-it] 容器id 命令

exec:在对应容器中执行命令

-it:采用交互方式执行命令


执行ls -l查看目录


image.png


可以看下webapps,里面空空如也。所以404,但是外层有一个webapps.dist文件夹,这个文件夹是原有tomcat的主页面,我们可以删除webapps,然后mv命令将webapps.dist改为webapps,等自动部署完在访问网页就正常了。


mv后tomcat部署稍微慢点,等1-2min,在访问就行。

2.8、怎么后台启动


现在问题:ctrl+c就结束进程了。


# -d 参数即可
docker run -p 8000:8080 -d tomcat


2.9、总结


以上步骤其实就干了这么几件事:


  • docker pull 镜像


  • docker run 镜像


-p 端口映射

-d 后台启动


  • docker exec -it 镜像id /bin/bash


八、常用命令总结


命令 解释
docker pull 镜像名<:tags> 从远程仓库拉取镜像到本地仓库
docker images 查看本地仓库所有镜像
docker run 镜像名<:tags> 基于镜像创建容器并启动,可以添加-d port1:port2参数,port1:宿主机端口,port2:容器端口, -d参数代表后台运行
docker ps 查看当前所有启动的容器
docker ps -a 查看本地所有容器,包含未启动的,删除容器的时候可用来查询容器id
docker start/stop/restart 容器id 启动/停止/重启容器
docker rm <-f> 容器id 删除<-f:强制删除>容器,运行中的容器不能删除,-f可以强制
docker rmi <-f> 镜像名称 <:tags> 删除<强制删除>镜像,镜像有容器在启动,不能被删除,-f可以强制
docker exec [-it] 容器id 命令 进入容器主目录,exec:在对应容器中执行命令,-it:采用交互方式执行命令


九、容器内部结构


1、内部结构


你jdk都没安装,怎么就能跑tomcat?tomcat容器内部包含了如下:


  • 一个超级迷你的linux系统
  • jdk
  • tomcat


2、验证


先进入容器


docker exec -it ac1c3d62b75d /bin/bash


  • linux系统


执行cat /proc/version,可以发现带了个红帽系统

image.png

  • jdk

java -version


  • tomcat

这个还用验证?


十、容器原理


1、图解


image.png


2、总结


created -> running -> paused -> deleted



3、验证


docker create tomcat
# 查看容器状态,会发现是created
docker ps -a


image.png


docker start 8c4a21f47b8f
# 查看容器状态,会发现是up, up就对应running,代表运行中
docker ps



image.png



# docker stop命令会让容器进入exit状态,这个不等于paused,paused没有演示的必要。
docker stop 8c4a21f47b8f


# rm删除容器。也就对应deleted状态
docker rm 8c4a21f47bf


十一、docker总结


发现优点了没?


  • 一个宿主机上或者虚拟机上启动N个docker,每个docker是一个tomcat,之前集群是多个虚拟机,或者宿主机,现在是一个虚拟机上开N个docker容器,然后映射不同的端口,牛逼。当然你会说负载均衡,挂了一个第二个还能支持,这种需要多台虚拟机的。但是也大大节省了资源消耗。虽然你一台机器也能改端口来完成,但是docker节省资源,而且资源隔离,N个容器之间彼此独立。


  • 资源隔离,多个容器之间彼此不干扰。


  • 环境统一,因为只要镜像的tag一样,那么启动的容器的环境都一致。牛逼!


END


相关文章
|
Java Maven Docker
30分钟快速上手Docker,看这篇就对了!(中)
30分钟快速上手Docker,看这篇就对了!(中)
30分钟快速上手Docker,看这篇就对了!(中)
|
存储 运维 Java
30分钟快速上手Docker,看这篇就对了!(上)
30分钟快速上手Docker,看这篇就对了!(上)
30分钟快速上手Docker,看这篇就对了!(上)
|
15天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
56 2
|
13天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
17天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
5天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
28 5
|
7天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
6天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
17 1
|
12天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
12天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
30 1
下一篇
无影云桌面