目录
思考:每次修改Nginx配置文件,都要进入容器内,特麻烦?在容器外部提供一个映射路径,达到容器外修改文件,容器内自动修改? -v数据卷
思考:每次部署项目,都要进入容器内,特麻烦?在容器外部提供一个映射路径,webapps
作业:使用 kibana连接es ? 思考网络如何才能连接过去
作业1、docker安装Nginx
主要是端口映射命令学习
docker run -d --name nginx01 -p 3344:80 nginx
# 1、搜索镜像 search 建议去docker上搜索,可以看到详细信息和帮助文档
[root@k2 ~]# docker search nginx
# 2、下载镜像
[root@k2 ~]# docker pull nginx
# 3、运行测试
[root@k2 ~]# docker images # 查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest de1111b9436b 36 hours ago 142MB
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
[root@k2 ~]# docker run -d --name nginx01 -p 3344:80 nginx
50666666ad4e9e6b9666666666c8ec08666666633
[root@k2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50c35333a98 nginx "/docker-entrypoint.…" 57 seconds ago Up 57 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
[root@k2 ~]# curl localhost:3344
# 查看浏览器 http://IP:3344/ 注意:这个ip是开放端口的电脑的ip
# 进入容器
[root@k3 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
506666e98 nginx "/docker-entrypoint.…" 38 minutes ago Up 38 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
[root@k3 ~]# docker exec -it nginx01 /bin/bash
root@506666e98:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@5066666e98:/# cd /etc/nginx/
root@5066666e98:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
root@5066666e98:/etc/nginx#
# 停止容器
root@503666w98:/etc/nginx# exit
exit
[root@k3 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
506666e98 nginx "/docker-entrypoint.…" 43 minutes ago Up 43 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
[root@k3 ~]# docker stop 5066666e98
506666e98
# 查看浏览器 http://IP:3344/
端口暴露概念
思考:每次修改Nginx配置文件,都要进入容器内,特麻烦?在容器外部提供一个映射路径,达到容器外修改文件,容器内自动修改? -v数据卷
作业2、docker装一个Tomcat
# 官方的使用
docker run -it --rm tomcat:9.0
# 我们之前的启动都是后台,停止了容器之后,容器还是可以查到 docker run -it --rm tomcat:9.0,一般用来测试,用完就删除
# 下载再启动
docker pull tomcat
# 启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
# 测试访问没有问题
# IP:3355 访问失败
# 进入容器
docker exec -it tomcat01 /bin/bash
ls
# 发现问题:1、Linux命令缺失 2、没有WebApps,阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除,保证最小可运行的环境
[root@k3 ~]# docker exec -it tomcat01 /bin/bash
root@c95eb14e8fd4:/usr/local/tomcat#
root@c95eb14e8fd4:/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@c95eb14e8fd4:/usr/local/tomcat# cd webapps
root@c95eb14e8fd4:/usr/local/tomcat/webapps# ls
root@c95eb14e8fd4:/usr/local/tomcat/webapps# cd ..
root@c95eb14e8fd4:/usr/local/tomcat# cd webapps.dist/
root@c95eb14e8fd4:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@c95eb14e8fd4:/usr/local/tomcat/webapps.dist# cd ..
root@c95eb14e8fd4:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@c95eb14e8fd4:/usr/local/tomcat# cd webapps
root@c95eb14e8fd4:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
思考:每次部署项目,都要进入容器内,特麻烦?在容器外部提供一个映射路径,webapps
作业3、部署es+kibana
# es 暴露的端口很多
# es 十分耗内存
# es 的数据一般需要放置到安全目录,挂载
# --net ? 网络配置
[root@k2 home]# docker network create somenetwork-net
# 启动 elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
# 启动了 Linux就卡住了,docker stats 查看CPU状态
# 查看docker stats
# 赶紧关闭,增加内存的限制
# 赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch02 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
[root@k3 ~]# curl localhost:9200
{
"name" : "73ca196f0e2b",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "Tp1Ui1grShONIGapLhiwgg",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
作业:使用 kibana连接es ? 思考网络如何才能连接过去
可视化
portainer(先用这个)
Docker图形化界面管理工具,提供一个后台面板供我们操作
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
Rancher(CI/CD调用)
访问测试:外网:8088