Docker入门(windows版),利用Docker创建一个Hello World的web项目
Docker
当大家点开这篇博客的时候,相信大家对docker多多少少也有些认识了,最近学习docker这门技术,略微有些心得,写篇文章记录一下学习过程并帮大家跳过一些坑。
docker的核心有两个,一个是容器,一个是镜像。
镜像:可以理解为是只读的文件,我个人理解为是应用程序,例如tomcat,mysql,redis等
容器:可以理解为迷你的linux系统,是由docker创建的,镜像就是运行在容器中,容器之间也是彼此隔离的,比如我可以在docker中运行几个mysql服务
理解docker的核心概念之后我们进入实战
Dokcer实战
安装Docker
安装Docker很简单,windows系统安装的是Docker Desktop 点击下载(这是从官网扒下来的链接大家放心下载,也可以直接去官网下 Docker官网)
安装过程也很简单,没有多余的配置,一直下一步就可以了,这里就不放安装过程截图了_
装好docker之后,启动docker desktop,然后在命令提示符中输入,docker version,出现
C:\Users\10419>docker version
Client:
 Cloud integration: 1.0.14
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.16.3
 Git commit:        370c289
 Built:             Fri Apr  9 22:49:36 2021
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true
Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:44:56 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
说明docker已经安装好了
利用docker安装tomcat
进入docker官网查找需要安装的镜像,这里直接安装tomcat
C:\Users\10419>docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
bd8f6a7501cc: Pull complete
44718e6d535d: Pull complete
efe9738af0cb: Pull complete
f37aabde37b8: Pull complete
b87fc504233c: Pull complete
8bf93eef8c9e: Pull complete
8d33b4df10ef: Pull complete
2d77aa1a5442: Pull complete
baa04cc4071d: Pull complete
a3a752513415: Pull complete
Digest: sha256:0509684774ac53d8b152f4a50dd92889218a8633c0feddb4b35d092e55cd215d
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
如果下载速度慢的话,可以换成国内的下载镜像
然后我们可以使用命令查看docker的镜像:docker images (images就是docker镜像的意思)
C:\Users\10419>docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat        latest    c0e850d7b9bb   2 weeks ago    667MB
hello-world   latest    d1165f221234   2 months ago   13.3kB
启动tomcat
启动tomcat只需要输入命令:docker run -p 8000:8080 tomcat
(-p 8000:8080 的意思就是tomcat在容器内启动的端口是8080,把8080这个端口映射到 windows的8000端口上)
C:\Users\10419>docker run -p 8000:8080 tomcat
Tomcat 404报错解决
启动成功之后访问localhost:8000,报错404

这里有个坑,先使用命令docker ps 查看当前运行的容器
C:\Users\10419>docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
54f85f2559cd   tomcat    "catalina.sh run"   6 minutes ago   Up 6 minutes   0.0.0.0:8000->8080/tcp, :::8000->8080/tcp   silly_morse
找到container ID,这个是容器的ID,是我们和容器交互的标识,使用命令docker exec -it <container ID> /bin/bash 就可以进入容器
root@0be1774e1e5e:/usr/local/tomcat#
使用命令 ls查看当前文件夹目录
C:\Users\10419>docker exec -it 54f85f2559cd /bin/bash
root@54f85f2559cd:/usr/local/tomcat# ls
BUILDING.txt     LICENSE  README.md      RUNNING.txt  conf  logs            temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   native-jni-lib  webapps  work
注意这里有两个文件夹 webapps和webapps.dist
使用命令ls -1 webapps 发现文件夹为空
root@b375a81f10ca:/usr/local/tomcat# ls -1 webapps
使用ls -1 webapps.dist发现原本webapps中的文件全在webapps.dist中
root@54f85f2559cd:/usr/local/tomcat# ls -1 webapps.dist
ROOT  docs  examples  host-manager  manager
解决办法就是把webapps.dist合并到webapps中
root@54f85f2559cd:/usr/local/tomcat# mv webapps.dist/* webapps/
root@54f85f2559cd:/usr/local/tomcat# rm -rf webapps.dist/
但是这样并不能一劳永逸,重启之后还是会报错404,tomcat还是会有webapps.dist这个文件夹
使用命令docker ps记下刚刚修改好的tomcat的容器id
C:\Users\10419>docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
54f85f2559cd   tomcat    "catalina.sh run"   3 minutes ago   Up 3 minutes   0.0.0.0:8000->8080/tcp, :::8000->8080/tcp   silly_morse
解决办法:把修改好webapp的tomcat镜像提交一个新的本地镜像
C:\Users\10419>docker commit -m="修复404" -a="fengzeng" 54f85f2559cd new-tomcat:1.0
sha256:99efe959f94c616aad213fc4c4b899cd1d16faac7511834ee5942fbd6693e8c6
(-m 是本次提交的内容, -a是提交的作者, 54f85f2559cd是修改好的tomcat的容器id, new-tomcat是新的镜像名称,:1.0是版本号)
提交完成后,查看我们的镜像仓库docker images
C:\Users\10419>docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
new-tomcat   1.0       99efe959f94c   33 seconds ago   672MB
tomcat       latest    c0e850d7b9bb   2 weeks ago      667MB
就能看到我们刚刚提交的new tomcat了。
然后我们启动它,docker run -p 8000:8080 99efe959f94c(也可以写成new-tomcat:1.0,注意一定要带上版本号,不然默认的是latest)
再次访问localhost:8000

访问成功!!!
在docker部署自己的html页面
随便建一个文件夹,在里面放两个文件,一个是需要部署到tomcat webapps上的文件,一个是Docker的自定义镜像文件

在docker-web文件夹中新建一个index.html 在里面写上<h1>hello world</h1>就ok
然后在上一级目录新建一个Dockerfile文件,不能有任何后缀
在里面写上
#使用new-tomcat:1.0部署这个文件
From new-tomcat:1.0
#等同于命令 cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
#ADD用于复制本地文件到镜像中
ADD docker-web ./docker-web
然后使用命令 docker build -t fengsir/mydocker:1.0 C:\Users\10419\Desktop\mydocker
注:-t是为添加的新镜像赋予一个名称,:1.0是版本号,C:\Users\10419\Desktop\mydocker 这是刚刚创的文件夹的目录,直接复制进来,docker会自动加载里面的Dockerfile文件。
出现以下提示代表新镜像构建成功!!!
[+] Building 0.3s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                 0.0s
 => => transferring dockerfile: 234B                                                                 0.0s
 => [internal] load .dockerignore                                                                    0.0s
 => => transferring context: 2B                                                                      0.0s
 => [internal] load metadata for docker.io/library/new-tomcat:1.0                                    0.0s
 => [1/3] FROM docker.io/library/new-tomcat:1.0                                                      0.1s
 => [internal] load build context                                                                    0.0s
 => => transferring context: 72B                                                                     0.0s
 => [2/3] WORKDIR /usr/local/tomcat/webapps                                                          0.0s
 => [3/3] ADD docker-web ./docker-web                                                                0.0s
 => exporting to image                                                                               0.1s
 => => exporting layers                                                                              0.0s
 => => writing image sha256:700c6b5c8df50f797b8978476376f63d7f9df11fd636b1d8342e28457bd1894c         0.0s
 => => naming to docker.io/fengsir/mydocker-web:1.0                                                  0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
接着使用命令docker images查看当前镜像
C:\Users\10419>docker images
REPOSITORY             TAG       IMAGE ID       CREATED          SIZE
fengsir/mydocker-web   1.0       700c6b5c8df5   16 seconds ago   672MB
new-tomcat             1.0       99efe959f94c   7 minutes ago    672MB
tomcat                 latest    c0e850d7b9bb   2 weeks ago      667MB
运行新创建的镜像docker run fengsir/mydocker-web:1.0
注:一定要带上版本号,或者替换成IMAGE ID docker run 700c6b5c8df5
启动成功,访问localhost:8000/docker-web

总结
docker 常用命令
| 命令 | 用法 | 注 | 
|---|---|---|
| 查看镜像 | docker images | |
| 查看运行中的容器 | docker ps | |
| 停止容器运行 | docker stop (CONTAINER ID) | |
| 重启容器 | docker restar CONTAINER ID | 用于容器stop后 | 
| 进入容器 | docker exec -it (CONTAINER ID) /bin/bash | |
| 运行镜像 | docker run (CONTAINER ID | |
| 删除容器 | docker rm CONTAINER ID | 删除镜像需要先删除容器 | 
| 删除镜像 | docker rmi (IMAGE ID) | 
还学到一个新的linux命令
mv webapps.dist/* webapps 把webapps.dist目录下所有文件移动到webapps目录中
嘿嘿,暂时就这么一点心得,后续再见啦
谢谢你这么好看还给我点赞
Docker入门(windows版),利用Docker创建一个Hello World的web项目的更多相关文章
- 创建一个简单的 Springboot web项目
		1.点击Project 2.点击 Next 3.项目名 4.web 项目 4.确认 5.pom.xml <?xml version="1.0" encoding=" ... 
- Docker入门详解——安装docker并利用docker搭建lnmp
		首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ... 
- Docker入门之 - 如何安装Docker CE
		原文:Docker入门之 - 如何安装Docker CE 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012055638/article/det ... 
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
		操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ... 
- docker:(2)通过Dockerfile构建镜像并发布web项目
		上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html 虽然通过修改获取到的镜像可以达到使用目的,但是多操作几次就会发 ... 
- 使用eclipse创建一个简单的Java Web应用程序
		关于Java JDK/JRE.Tomcat的配置等等都没什么好说的,主要记录一下使用Eclipse创建web工程时的一些点以及说一说自己用IDEA的创建失败的过程(IDEA没运行成功...暂时不想弄了 ... 
- SharePoint创建一个简单的Visio Web部件图
		SharePoint创建一个简单的Visio Web部件图 Visio有很多强大的Mash-up混聚功能,使它能够轻松集成到SharePoint 2010中. 1. 打开Visio 2010,创建新的 ... 
- webstorm创建nodejs + express + jade 的web 项目
		webstorm创建nodejs + express + jade 的web 项目 前简单了解过nodejs,觉得用nodejs来做个网站也太麻烦了,要自己拼html的字符串返回,这能做网站嘛? 最近 ... 
- 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战
		mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ... 
随机推荐
- Kubernetes系列(三) Deployment
			作者: LemonNan 原文地址: https://juejin.im/post/6865672466939150349/ Kubernetes 系列 Kubernetes系列(一) Pod Kub ... 
- 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘
			Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ... 
- 使用虚拟机在CentOS上安装部署数据库使用
			镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 本节描述使用数据库的基本操作.通过此节您可以完成创建数据库.创建表及向表中插入数据和查询表中数据等操作. 2.1 前提条件 ●openGauss正 ... 
- OO第一单元
			OO第一单元总结 目录 OO第一单元总结 前言 第一次作业 HW1基本思路 UML类图 代码规模 复杂度分析 方法复杂度 分析 类复杂度 分析 优化策略 第二次作业 HW2基本思路 UML类图 代码规 ... 
- 知识点简单总结——minmax容斥
			知识点简单总结--minmax容斥 minmax容斥 好像也有个叫法叫最值反演? 就是这样的一个柿子: \[max(S) = \sum\limits_{ T \subseteq S } min(T) ... 
- C#拾遗补阙【01】:字符串
			一.string是特殊的引用类型  众所周知,string是引用类型.为什么string是引用类型,最简单的方法,f12转到string的定义.显而易见,string的本质是类,字符串存储在堆中,而 ... 
- git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性
			背景 最近我们组几个同事都投入到了一个新项目,互相之间的功能耦合比较紧密,因此,是打算从master上新拉一个分支,可以理解为我们几个人的开发分支,以develop代替. 一开始,我们是打算像svn那 ... 
- Linux(centos7)安装RabbitMQ
			由于RabbitMQ是由Erlang语言开发的,所以我们需要体检安装erlang语言的环境 下载这三个安装包:https://www.aliyundrive.com/s/4AxfTepHjMD 执行安 ... 
- 把项目发布到tomcat中的方式
			1.相对路径方式1:把项目index.html放在tomcat的webapps/ROOT下,浏览器访问地址:http://www.aaa.com:8080/index.html 2.相对路径方式2:在 ... 
- CentOS6跟CentOS7的区别
			1.CentOS6在/etc/profile配置环境变量是JAVAHOME,CentOS7是{JAVA_HOME} 2. 
