docker 常用命令 作业
安装nginx
docker pull nginx
# 下载完成后运行
docker run -d --name nginx1 -p 8080:80 nginx # 后台运行,容器命名为nginx1,将容器的80映射到主机的8080端口
此时我们访问:localhost:8080
就能看到Welcome to nginx!页面
安装Tomcat
docker镜像里面的tomcat官方文档有这么一段命令:
docker run -it --rm tomcat:9.0
run可以直接自动下载对应的镜像,所以后面可以像pull
那样接tag;
-it
是交互,--rm
表示交互结束后,比如exit
退出后,容器就会自动删除,但是镜像会被保留
自己动手
docker pull tomcat # 拉取最新镜像
# 拉取完毕运行
docker run -d -p 8081:8080 --name tomcat1 tomcat:latest # 后台运行,将8080映射到8081,命名tomcat1,使用latest最新镜像(如果存在多个版本的情况下使用)
此时我们访问:localhost:8081
;可以看到是404页面
原因是因为阿里的镜像,他是最小化封装的,保证最小可运行的环境,所以系统相对应的会缺失一些命令和文件配置。
我们进入到tomcat1容器的webapps
目录下查看一下文件
PS C:\Users\13219> docker exec -it tomcat1 /bin/bash
root@101ee032df75:/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
进入到容器后通过ls
发现有一个webapps
目录,这个就是tomcat的web目录,我们进入该目录。
root@101ee032df75:/usr/local/tomcat# cd webapps
root@101ee032df75:/usr/local/tomcat/webapps# ls # 通过ls发现这个用于存放web资源的目录是空的
root@101ee032df75:/usr/local/tomcat/webapps#
我们再进入到另一个目录webapps.dist
root@101ee032df75:/usr/local/tomcat/webapps# cd ../ # 返回上一级目录
root@101ee032df75:/usr/local/tomcat# cd webapps.dist # 进入
root@101ee032df75:/usr/local/tomcat/webapps.dist# ls # 查看文件列表
ROOT docs examples host-manager manager # 存在文件
也就是说官方把默认的web资源放在了webapps.dist
目录,我们只需要把这个目录下的文件复制到webapps目录下就能访问了。
root@101ee032df75:/usr/local/tomcat# cp -r webapps.dist/* webapps
实际上我们是在/usr/local/tomcat
系统目录下,将webapps.dist/*
下的所有文件复制到webapps
中就行了,再次刷新默认的web页面就出来了。
另一种复制方式,从webapps.dist
目录里直接复制到webapps
中
root@101ee032df75:/usr/local/tomcat# cd webapps.dist
root@101ee032df75:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@101ee032df75:/usr/local/tomcat/webapps.dist# cp -r * ../webapps
root@101ee032df75:/usr/local/tomcat/webapps.dist# cd ..
root@101ee032df75:/usr/local/tomcat# cd webapps
root@101ee032df75:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
部署elasticsearch+kibana
elasticsearch是一个免费开源搜索和分析引擎,但是本身是否浩内存,1g2g的内存完全没法正常使用,开启就会卡死。这也是后面需要处理的一个事情
在官方镜像仓库搜索后第一个官方镜像里有这么一段调用命令
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
其中--net
是处理网络,目前还没学,这段可以删掉,然后暴露了两个端口:9200、9300
,后面的-e
表示设置环境变量参数,大概意思是集群的配置,默认是一个单个节点,elasticsearch:tag
表示要启动elasticsearch,但是tag需要自己设置tag标签。
精简一下:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
版本号是教程提供的,照着整就完事了。
在配置低的vps上,我们会遇到以下问题:
- 暴露的端口比较多
- 十分耗内存
- es的数据一般需要放置到安全目录!挂载
- 网络配置?
这里我们了解一个命令:
docker stats [options] [容器id] # 查看cpu、内存等占用情况,可以看到es占用了差不多2g的内存
# 如果不给options和容器id默认是查看所有
docker stats
当我们运行后,可以访问:http://localhost:9200/
来判断es是否启动成功。
调整内存配置
通过-e
来配置内存大小,具体配置百度即可,大概是这么一段命令
docker run -d --name elasticsearch1 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200m -Xmx400m" elasticsearch:7.6.2
注意name记得换一个,不能重名,重新运行生成的容器,内存就不会占用过大了。
可视化
portainer (先用这个)
目前2022年1月份portainer/portainer镜像停止维护,转战到portainer/portainer-ce
了,我们使用最新的。
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:2.9.3
--restart=always
暂时不管他的作用,-v
表示挂载卷,这个后面再讲,主要是运行可视化面板体验一下
可能还需要在运行前运行这个命令
docker volume create portainer_data
运行容器后通过:https://localhost:9443/
访问,注意一定得是https
。
访问成功后,页面一开始是让创建账号,创建成功后进入。
进入后可以选择是控制本地还是远程,一个是Local一个是Add Environments,我们控制本地,所以Local就行了,如果不小心点掉了网页,可以通过https://localhost:9443/#!/wizard
这个地址重新选择。
当然这个也不是很重要,也可以通过其他手段处理啥。
进入控制面板后自己摸索下就行了,很简单的,就是一个web版的docker管理后台,可以管理容器、镜像、卷、网络巴拉巴拉一堆,当然为了技术,还是少用一点,不然容易变傻(命令太多,不用就忘了)。
Rancher(CI/CD再用)
有机会再研究
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据