作业:Docker安装Nginx
#1、搜索镜像#2、下载镜像 pull#3、运行测试[root@localhost home]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginx33847f680f63: Already existsdbb907d5159d: Pull complete8a268f30c42a: Pull completeb10cf527a02d: Pull completec90b090c213b: Pull complete1f41b2f2bf94: Pull completeDigest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest#-d 后台运行#--name 给容器命名#-p 暴露端口 宿主机端口:容器内部端口[root@localhost home]# docker run -d --name nginx01 -p 3344:80 nginx3960a4e43a0252633d1b61f16902bd3926b43111e390b0d812a4daa0544656ac[root@localhost home]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3960a4e43a02 nginx "/docker-entrypoint.…" 15 seconds ago Up 14 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01[root@localhost home]# curl localhost:3344<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>#进入Nginx容器[root@localhost home]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3960a4e43a02 nginx "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01[root@localhost home]# docker exec -it nginx01 /bin/bashroot@3960a4e43a02:/# whereis nginxnginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginxroot@3960a4e43a02:/# cd /etc/nginx/root@3960a4e43a02:/etc/nginx# lsconf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_paramsroot@3960a4e43a02:/etc/nginx#


思考问题:我们每次改动Nginx配置文件,都需要进入容器内部,很麻烦,我要是可以在容器外部提供一个映射路径,达到在容器外部修改文件,容器内部就可以自动修改?? -v 数据卷技术!
作业:部署Tomcat
#官方的使用 run -it --rm tomcat:9.0docker run -it --rm tomcat:9.0#我们之前的启动都是后天启动,停止了容器之后,容器还是可以查到,docker run -it --rm 一般用来测试,用完就删除#下载启动docker pull tomcat#启动运行docker run -d -p 3355:8080 --name tomcat01 tomcat#用完就删除的方式测试[root@localhost home]# docker run -it --rm tomcat:9.0Unable to find image 'tomcat:9.0' locally9.0: Pulling from library/tomcat627b765e08d1: Pull completec040670e5e55: Pull complete073a180f4992: Pull completebf76209566d0: Pull completef10db7ba7580: Pull complete5b2f970878fa: Pull completeed434bfebf18: Pull completef6c437110aa9: Pull completea772951f83db: Pull complete752225c3768e: Pull completeDigest: sha256:6e40250d8fac4eca05c2067cb81f79427e4ddbaf4e78d5ecd21c35e8c5f2bfcfStatus: Downloaded newer image for tomcat:9.0Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/openjdk-11Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarUsing CATALINA_OPTS:#启动运行[root@localhost home]# docker run -d -p 3355:8080 --name tomcat01 tomcat:9.048e19c70ce022167ea3c69bdbe61195a622f858f63985af01335ddfe1dbc0de4[root@localhost home]# docker exec -it tomcat01 /bin/bashroot@48e19c70ce02:/usr/local/tomcat# llbash: ll: command not found#发现问题:1、Linux命令少了 2、webapps中没有部署应用。 由于镜像的原因这里的命令是缺少的,默认镜像要保证最小可运行环境的安装,所以有些东西是被剔除掉了root@48e19c70ce02:/usr/local/tomcat# lsBUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.distCONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps workroot@48e19c70ce02:/usr/local/tomcat# cd webappsroot@48e19c70ce02:/usr/local/tomcat/webapps# ls#这个webapps下面是没有部署任何应用的root@48e19c70ce02:/usr/local/tomcat/webapps# cd ..root@48e19c70ce02:/usr/local/tomcat# cd webapps.dist/root@48e19c70ce02:/usr/local/tomcat/webapps.dist# lsROOT docs examples host-manager managerroot@48e19c70ce02:/usr/local/tomcat/webapps.dist# cd ..root@48e19c70ce02:/usr/local/tomcat# cp -r webapps.dist/* webapps #将webapps.dist文件下的拷贝到webapps部署应用root@48e19c70ce02:/usr/local/tomcat# cd webappsroot@48e19c70ce02:/usr/local/tomcat/webapps# lsROOT docs examples host-manager manager#这里就部署好了tomcat 映射端口号是3355

思考问题:以后如果需要用docker部署tomcat,然后需要在tomcat上部署我们自己的应用,就需要进入容器,非常的麻烦。
所以还是那个问题。可以在容器外部提供一个映射路径,webapps,我们在外部部署项目,就自动同步到内部就好了!
作业:部署es+kibana
#es 暴露的端口很多!#es 十分的耗内存#es 的数据一般需要放置到安全目录!挂载#docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag# --net somenetwork ? docker网络配置#启动elasticsearchdocker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2[root@localhost ~]# curl localhost:9200{"name" : "8da72f00f4a3","cluster_name" : "docker-cluster","cluster_uuid" : "8cTmM07VR8ezLtoZUQUw9g","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"}#此时仅仅es就占用了1.2个G的内存#使用docker stats 来查看内存 以及cpu的状态#赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改 最小内存64m 最大内存512mdocker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"-e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS68fd7232219b elasticsearch02 0.44% 392MiB / 3.685GiB 10.39% 648B / 0B 0B / 696kB 47^C[root@localhost ~]# curl localhost:9200{"name" : "68fd7232219b","cluster_name" : "docker-cluster","cluster_uuid" : "P9WkyzOdT564mq2b0_sdAQ","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 (先用这个) ```shell docker run -d -p 8088:9000 —restart=always -v /var/run/docker.sock:/var/run/docker.sock —privileged=true portainer/portainer
- Rancher (CI/CD再用)<a name="wurvH"></a>### 什么是portainer?docker图形化界面管理工具!提供一个后台面板供我们操作!```shell[root@localhost ~]# docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainerUnable to find image 'portainer/portainer:latest' locallylatest: Pulling from portainer/portainer94cfa856b2b1: Pull complete49d59ee0881a: Pull completea2300fd28637: Pull completeDigest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3fStatus: Downloaded newer image for portainer/portainer:latest6fd8a8735359499d8d0bc0990fd636a963653242fd781055a2c3ec6adb1e1ae2
访问外网测试:ip:192.168.150.131:8088
进入之后选择本地
Docker安装MySQL
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
