Docker安装Nginx和Tomcat 和Docker常用命令

docker安装nginx

#1、搜索镜像 search 建议大家去docker
#2、下载镜像 pull
docker pull nginx #如果不带版本号的话,那么直接下载最新的Nginx镜像

在这里插入图片描述

如果不指定版本号的话,那么会默认下载latest也就是最近、最新的nginx镜像

#docker images 查看本地镜像 
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    605c77e624dd   11 days ago    141MB
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
centos        latest    5d0da3dc9764   3 months ago   231MB

启动nginx服务、

#docker run -d --name nginx11 -p 3388:80 nginx
# run就是运行的意思 
#-d就是后台启动容器并返回容器id
#--name 给这个容器起一个名字 叫做nginx11 
# -p 指定外部端口给容器里80 (也可以理解把80端口映射为3388端口) 最后一个nginx就是容器的名字
[root@localhost ~]# docker run -d --name nginx11 -p 3388:80 nginx
9f435eb63bed278a0bf6e0c0c5500834ac416342c6b2e42d0e304f9dfbb11cb9
#使用docker ps 查看一下启动中的镜像
docker ps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6iP2S7Ug-1641860324056)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110171951452.png)]

可以看到ports下面显示 0.0.0.0:3388->80/tcp, :::3388->80/tcp

就说明端口映射成功 并且nginx启动成功、

那么我们来输入虚拟机的IP加上3388端口号。

http://192.168.0.219:3388/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSRwvtd9-1641860324057)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110172934143.png)]

可以看到,和我们正常安装的nginx没有什么区别,无非就是端口号换了一下

这里注意一下,如果时阿里云ecs的话 记得把安全组开一下,都是泪。。。

#这里我们进入nginx的内部试一下 docker exec -it nginx11 /bin/bash
#-it 等于 -i -t 的意思 其实是两个命令
# -i 交互式启动
# -t 给与一个伪端 (其实我就直接理解为后台交互式启动 你们随意)
# nginx11就是容器的名字 这里也可以用容器的id代替 
#/bin/bash 不要问 问就是害怕你进错了 (狗头保命)
[root@localhost ~]# docker exec -it nginx11 /bin/bash
root@9f435eb63bed:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@9f435eb63bed:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@9f435eb63bed:/# cd /etc/nginx/
root@9f435eb63bed:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@9f435eb63bed:/etc/nginx#
#如果要修改配置文件的话 那么就直接改conf就可以了。
#这里docker容器里面是没有vi 或者vim的 
#apt-get update 先运行这个命令
#apt-get install vim 然后安装vim    (apt-get 感觉和centos的yum差不多)

docker安装tomcat

docker run -it --rm tomcat:9.0
#--rm 这里代表的意思是用完即删除 这里删除的是容器,但是镜像还在
# tomcat:9.0指定tomcat9.0的版本 不加就直接使用最新的tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2CpYjz6x-1641860324057)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110181834605.png)]

这个时候已经启动了tomcat,ctrl+c停掉这个服务。查看下镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFP7ZXmJ-1641860324058)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110181933138.png)]

看得到,我们这里使用tomcat9.0的镜像的,但是我们再用docker ps -a看一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j1I2Cb88-1641860324059)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110182034719.png)]

可以看到,啥也没有,就是连记录都没得,所以这里–rm删除的只是容器不是镜像。

#那么我们现在使用命令重新启动一下
docker run -d -p 4444:8080 --name tomcat03 tomcat
[root@localhost ~]# docker run -d -p 9999:8080 --name tomcat03 tomcat
86e1b1a0e26ac0b07e0653580fe7562b58fb03a5286a0fb5fb0539715e87cca4
docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat03 (2bfedcb0df62fa13af388339859018320178196111ef89206bb29ac739e43f85):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9999 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
#哦豁,启动的时候报错了,这里报错我查了下 ,重启下docker就好

docker容器的底层原理:
在启动docker的时候会自动在iptables中注册一个链,通过防火墙的链也可以找到其注册的信息,主要注册这些链,是docker中的容器为了暴露端口而使用的

具体原因是你删除了iptables中的链
删除链接的方式有很多种

重启firewalld防火墙即可对其清除,firewalld是centos7以上,iptables是centos6以下都会有,而firewalld的底层是涉及在iptables上的,在启动firewalld的时候会自动删除iptables链的相关链接
直接重启docker就好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-boPQK5IQ-1641860324061)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110190826098.png)]

重启过后就可以正常运行了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxnhvTHu-1641860324061)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110191004430.png)]

但是这里我们直接访问的话是报404,原因是因为tomcat里面的webapps是空的 。

我们进入容器看一下

#docker exec -it tomcat03 /bin/bash
[root@localhost ~]# docker exec -it tomcat03 /bin/bash
root@14bd56032674:/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
root@14bd56032674:/usr/local/tomcat# cd webapps
root@14bd56032674:/usr/local/tomcat/webapps# cd ..
root@14bd56032674:/usr/local/tomcat# cd webapps.dist/
root@14bd56032674:/usr/local/tomcat/webapps.dist# ls
ROOT  docs  examples  host-manager  manager
root@14bd56032674:/usr/local/tomcat/webapps.dist#

我们可以看到,webapps是空的,在webapps里面是有真正的文件。那么我们把webapps文件复制过去

root@14bd56032674:/usr/local/tomcat/webapps.dist# cd ..
root@14bd56032674:/usr/local/tomcat# cp webapps.dist/* webapps
cp: -r not specified; omitting directory 'webapps.dist/ROOT'
cp: -r not specified; omitting directory 'webapps.dist/docs'
cp: -r not specified; omitting directory 'webapps.dist/examples'
cp: -r not specified; omitting directory 'webapps.dist/host-manager'
cp: -r not specified; omitting directory 'webapps.dist/manager'
root@14bd56032674:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@14bd56032674:/usr/local/tomcat# cd webapps
root@14bd56032674:/usr/local/tomcat/webapps# ;s
bash: syntax error near unexpected token `;'
root@14bd56032674:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@14bd56032674:/usr/local/tomcat/webapps#

这里拷贝的时候提示要加-r 加一下就好

这个时候 我们再次访问一下9999端口看一下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8p43Q3lw-1641860324062)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220110192012720.png)]

正常访问没得问题。

最后奉上点docker常用命令

docker 的常用命令

docker pull -- 从镜像中央库 下载镜像到本地docker docekr pull image:tags
docker images -- 查看所有的已下载的镜像
docker image ls -- 与上面的功能相同
docker save -- 将镜像打包保存到磁盘中 docker save image:tags -o target.tar
docker load target.tar -- 将打包的镜像从磁盘中读取到docker
docker search image -- 从中央仓库搜索该关键字存在镜像 docker search redis,但是不推荐使用,不太容易看清系统内核等信息
docker inspect image:tags -- 查看镜像以及标签的详细信息,里面包含了环境中会存在哪些会安装什么东西
	docker inspect -f {{".Size"}} redis:6.0.9  -f 可以直接筛选自己可以想看到的信息
docker rmi image:tags -- 删除指定镜像
	docker image rm image:tags -- 同上一样也是删除镜像
docker history image:tags -- 查看镜像的层次创建信息
docker tag image:tags target:tags -- 修改镜像的名称信息,会创建一个新的镜像。注意:会存在2个,不是真正意义的改名称
	这一块需要注意,经过测试如果tag 复制一份别名的镜像如果存在name + tag 相同的情况时,会直接将之前的给覆盖不会报错。
docker run -it --rm image:tags -- 在容器启动镜像并且进入容器 但是外部没有办法访问
docker run -it --rm -p hostPort:dockerPort iamge:tags -- 同上,但是对外部开启了主机的端口映射,宿主主机只需要访问hostPort就可以
	访问到容器中的服务,docker run -it --rm -p 8080:6379 redis:6.0.9 就可以通过8080 连接到 docker容器中的服务进行使用
	--name 给予创建的容器一个名字、不允许重复
	-p 绑定docker容器和主机的端口映射,不能冲突
	-i 交互式启动
	-t 给予一个伪端
	--rm 当断开容器容器自动删除
	-d 后台执行启动 不能与rm搭配使用
docker logs -- 查看程序终端启动的控制台打印信息
	-f 滚动打印
docker ps -- 查看运行中的全部容器
	-a 查询包含不运行的容器
docekr rm container -- 删除容器,不允许删除正在运行的。支持按照名称和容器id删除
	-f 强制删除容器
docker start container -- 启动已经创建的容器,服务就会启动
docker stop container -- 停止容器的运行,服务也就会停止
docker restart container -- 重新启动容器
docker create -it --name name -p hostPort:dockerPort image:tag -- 通过镜像创建容器,但是不启动
docker exec -- 进入容器的终端进行操作
docker kill -- stop无法停止容器,使用kill 杀死容器

感谢狂神大佬公开的视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值