作业:Docker安装Nginx

  1. #1、搜索镜像
  2. #2、下载镜像 pull
  3. #3、运行测试
  4. [root@localhost home]# docker pull nginx
  5. Using default tag: latest
  6. latest: Pulling from library/nginx
  7. 33847f680f63: Already exists
  8. dbb907d5159d: Pull complete
  9. 8a268f30c42a: Pull complete
  10. b10cf527a02d: Pull complete
  11. c90b090c213b: Pull complete
  12. 1f41b2f2bf94: Pull complete
  13. Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
  14. Status: Downloaded newer image for nginx:latest
  15. docker.io/library/nginx:latest
  16. #-d 后台运行
  17. #--name 给容器命名
  18. #-p 暴露端口 宿主机端口:容器内部端口
  19. [root@localhost home]# docker run -d --name nginx01 -p 3344:80 nginx
  20. 3960a4e43a0252633d1b61f16902bd3926b43111e390b0d812a4daa0544656ac
  21. [root@localhost home]# docker ps
  22. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  23. 3960a4e43a02 nginx "/docker-entrypoint.…" 15 seconds ago Up 14 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
  24. [root@localhost home]# curl localhost:3344
  25. <!DOCTYPE html>
  26. <html>
  27. <head>
  28. <title>Welcome to nginx!</title>
  29. <style>
  30. body {
  31. width: 35em;
  32. margin: 0 auto;
  33. font-family: Tahoma, Verdana, Arial, sans-serif;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <h1>Welcome to nginx!</h1>
  39. <p>If you see this page, the nginx web server is successfully installed and
  40. working. Further configuration is required.</p>
  41. <p>For online documentation and support please refer to
  42. <a href="http://nginx.org/">nginx.org</a>.<br/>
  43. Commercial support is available at
  44. <a href="http://nginx.com/">nginx.com</a>.</p>
  45. <p><em>Thank you for using nginx.</em></p>
  46. </body>
  47. </html>
  48. #进入Nginx容器
  49. [root@localhost home]# docker ps
  50. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  51. 3960a4e43a02 nginx "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
  52. [root@localhost home]# docker exec -it nginx01 /bin/bash
  53. root@3960a4e43a02:/# whereis nginx
  54. nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
  55. root@3960a4e43a02:/# cd /etc/nginx/
  56. root@3960a4e43a02:/etc/nginx# ls
  57. conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
  58. root@3960a4e43a02:/etc/nginx#

image.png
image.png
思考问题:我们每次改动Nginx配置文件,都需要进入容器内部,很麻烦,我要是可以在容器外部提供一个映射路径,达到在容器外部修改文件,容器内部就可以自动修改?? -v 数据卷技术!

作业:部署Tomcat

  1. #官方的使用 run -it --rm tomcat:9.0
  2. docker run -it --rm tomcat:9.0
  3. #我们之前的启动都是后天启动,停止了容器之后,容器还是可以查到,docker run -it --rm 一般用来测试,用完就删除
  4. #下载启动
  5. docker pull tomcat
  6. #启动运行
  7. docker run -d -p 3355:8080 --name tomcat01 tomcat
  8. #用完就删除的方式测试
  9. [root@localhost home]# docker run -it --rm tomcat:9.0
  10. Unable to find image 'tomcat:9.0' locally
  11. 9.0: Pulling from library/tomcat
  12. 627b765e08d1: Pull complete
  13. c040670e5e55: Pull complete
  14. 073a180f4992: Pull complete
  15. bf76209566d0: Pull complete
  16. f10db7ba7580: Pull complete
  17. 5b2f970878fa: Pull complete
  18. ed434bfebf18: Pull complete
  19. f6c437110aa9: Pull complete
  20. a772951f83db: Pull complete
  21. 752225c3768e: Pull complete
  22. Digest: sha256:6e40250d8fac4eca05c2067cb81f79427e4ddbaf4e78d5ecd21c35e8c5f2bfcf
  23. Status: Downloaded newer image for tomcat:9.0
  24. Using CATALINA_BASE: /usr/local/tomcat
  25. Using CATALINA_HOME: /usr/local/tomcat
  26. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  27. Using JRE_HOME: /usr/local/openjdk-11
  28. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  29. Using CATALINA_OPTS:
  30. #启动运行
  31. [root@localhost home]# docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0
  32. 48e19c70ce022167ea3c69bdbe61195a622f858f63985af01335ddfe1dbc0de4
  33. [root@localhost home]# docker exec -it tomcat01 /bin/bash
  34. root@48e19c70ce02:/usr/local/tomcat# ll
  35. bash: ll: command not found
  36. #发现问题:1、Linux命令少了 2、webapps中没有部署应用。 由于镜像的原因这里的命令是缺少的,默认镜像要保证最小可运行环境的安装,所以有些东西是被剔除掉了
  37. root@48e19c70ce02:/usr/local/tomcat# ls
  38. BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
  39. CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
  40. root@48e19c70ce02:/usr/local/tomcat# cd webapps
  41. root@48e19c70ce02:/usr/local/tomcat/webapps# ls
  42. #这个webapps下面是没有部署任何应用的
  43. root@48e19c70ce02:/usr/local/tomcat/webapps# cd ..
  44. root@48e19c70ce02:/usr/local/tomcat# cd webapps.dist/
  45. root@48e19c70ce02:/usr/local/tomcat/webapps.dist# ls
  46. ROOT docs examples host-manager manager
  47. root@48e19c70ce02:/usr/local/tomcat/webapps.dist# cd ..
  48. root@48e19c70ce02:/usr/local/tomcat# cp -r webapps.dist/* webapps #将webapps.dist文件下的拷贝到webapps部署应用
  49. root@48e19c70ce02:/usr/local/tomcat# cd webapps
  50. root@48e19c70ce02:/usr/local/tomcat/webapps# ls
  51. ROOT docs examples host-manager manager
  52. #这里就部署好了tomcat 映射端口号是3355

image.png
思考问题:以后如果需要用docker部署tomcat,然后需要在tomcat上部署我们自己的应用,就需要进入容器,非常的麻烦。
所以还是那个问题。可以在容器外部提供一个映射路径,webapps,我们在外部部署项目,就自动同步到内部就好了!

作业:部署es+kibana

  1. #es 暴露的端口很多!
  2. #es 十分的耗内存
  3. #es 的数据一般需要放置到安全目录!挂载
  4. #docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
  5. # --net somenetwork ? docker网络配置
  6. #启动elasticsearch
  7. docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
  8. [root@localhost ~]# curl localhost:9200
  9. {
  10. "name" : "8da72f00f4a3",
  11. "cluster_name" : "docker-cluster",
  12. "cluster_uuid" : "8cTmM07VR8ezLtoZUQUw9g",
  13. "version" : {
  14. "number" : "7.6.2",
  15. "build_flavor" : "default",
  16. "build_type" : "docker",
  17. "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
  18. "build_date" : "2020-03-26T06:34:37.794943Z",
  19. "build_snapshot" : false,
  20. "lucene_version" : "8.4.0",
  21. "minimum_wire_compatibility_version" : "6.8.0",
  22. "minimum_index_compatibility_version" : "6.0.0-beta1"
  23. },
  24. "tagline" : "You Know, for Search"
  25. }
  26. #此时仅仅es就占用了1.2个G的内存
  27. #使用docker stats 来查看内存 以及cpu的状态
  28. #赶紧关闭,增加内存的限制,修改配置文件 -e 环境配置修改 最小内存64m 最大内存512m
  29. docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
  30. -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
  31. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  32. 68fd7232219b elasticsearch02 0.44% 392MiB / 3.685GiB 10.39% 648B / 0B 0B / 696kB 47
  33. ^C
  34. [root@localhost ~]# curl localhost:9200
  35. {
  36. "name" : "68fd7232219b",
  37. "cluster_name" : "docker-cluster",
  38. "cluster_uuid" : "P9WkyzOdT564mq2b0_sdAQ",
  39. "version" : {
  40. "number" : "7.6.2",
  41. "build_flavor" : "default",
  42. "build_type" : "docker",
  43. "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
  44. "build_date" : "2020-03-26T06:34:37.794943Z",
  45. "build_snapshot" : false,
  46. "lucene_version" : "8.4.0",
  47. "minimum_wire_compatibility_version" : "6.8.0",
  48. "minimum_index_compatibility_version" : "6.0.0-beta1"
  49. },
  50. "tagline" : "You Know, for Search"
  51. }

image.png
image.png

作业:使用kibana连接es 思考网络如何才能连过去!
image.png

可视化

  • portainer (先用这个) ```shell docker run -d -p 8088:9000 —restart=always -v /var/run/docker.sock:/var/run/docker.sock —privileged=true portainer/portainer
  1. - Rancher CI/CD再用)
  2. <a name="wurvH"></a>
  3. ### 什么是portainer?
  4. docker图形化界面管理工具!提供一个后台面板供我们操作!
  5. ```shell
  6. [root@localhost ~]# docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
  7. Unable to find image 'portainer/portainer:latest' locally
  8. latest: Pulling from portainer/portainer
  9. 94cfa856b2b1: Pull complete
  10. 49d59ee0881a: Pull complete
  11. a2300fd28637: Pull complete
  12. Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f
  13. Status: Downloaded newer image for portainer/portainer:latest
  14. 6fd8a8735359499d8d0bc0990fd636a963653242fd781055a2c3ec6adb1e1ae2

访问外网测试:ip:192.168.150.131:8088
image.png
进入之后选择本地
image.png

Docker安装MySQL

  1. docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql