记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Docker 实验环境:Play With Docker

Docker 实验环境:Play With Docker

免费学习 Docker 的最佳方法:Play-with-docker(PWD)
k8s实验室(私人搭建):https://labs.play-with-k8s.com/
PWD 像是一个 Docker 游乐场,用户在几秒钟内就可以运行 Docker 命令。 还可以在浏览器中安装免费的 Alpine Linux 虚拟机,然后在虚拟机里面构建和运行 Docker 容器,甚至可以使用 Docker 集群模式创建集群。 有了 Docker-in-Docker(DinD)引擎,甚至可以体验到多个虚拟机/个人电脑的效果。 除了 Docker 游乐场外,PWD 还包括一个培训站点 training.play-with-docker.com,该站点提供大量的难度各异的 Docker 实验和测验。PWD: Docker在线沙盒模式(堪比微软sandbox)
1、 PWD Docker Machine 驱动和 SSH
随着 PWD 成功的成长,社区开始问他们是否可以使用 PWD 来运行自己的 Docker 研讨会和培训。 因此,对项目进行的第一次改进之一就是创建 PWD Docker Machine 驱动,从而用户可以通过自己喜爱的终端轻松创建管理 PWD 主机,包括使用 SSH 相关命令的选项。 
2、 支持文件在线编辑
最开始设计时,支持本地文件上传,随着发展成熟,此功能已移除,取而代之的是在线编辑功能,方便测试时直接修改Dockerfile 等文件。
3、 模板会话
除了文件编辑,PWD 还有一个功能,可以使用预定义的模板在几秒钟内启动 5 个节点的群集。
4、 一键使用 Docker 展示你的应用程序
PWD 附带的另一个很酷的功能是它的内嵌按钮,你可以在你的站点中使用它来设置 PWD 环境,并快速部署一个构建好的堆栈,另外还有一个 chrome 扩展 ,可以将 “Try in PWD” 按钮添加 DockerHub 最流行的镜像中。 
自己搭建 Play With Docker 服务
Play With Docker为您提供在云中拥有免费Alpine Linux虚拟机的体验。 您可以在其中构建和运行 Docker 容器,甚至可以创建具有 Docker 功能(如 Swarm 模式)的集群。DIND或Docker-in-Docker用于提供多个VM / PC的效果。
要求:
Docker版本:18.06.0+        Go(稳定版)
搭建教程:参考
XML/HTML代码
  1. # Clone this repo locally
  2. git clone https://github.com/play-with-docker/play-with-docker
  3. cd play-with-docker
  4.  
  5. # Verify the Docker daemon is running
  6. docker run hello-world
  7.  
  8. # Load the IPVS kernel module. Because swarms are created in dind,
  9. # the daemon won't load it automatically
  10. sudo modprobe xt_ipvs
  11.  
  12. # Ensure the Docker daemon is running in swarm mode
  13. docker swarm init
  14.  
  15. # Get the latest franela/dind image
  16. docker pull franela/dind
  17.  
  18. # Optional (with go1.14): pre-fetch module requirements into vendor
  19. # so that no network requests are required within the containers.
  20. # The module cache is retained in the pwd and l2 containers so the
  21. # download is a one-off if you omit this step.
  22. go mod vendor
  23.  
  24. # Start PWD as a container
  25. docker-compose up
现在导航到 http://localhost 并单击绿色的“开始”按钮 创建新会话,然后按“添加新实例”以启动新的终端实例。
每个会话有 5 个 Docker 操场的硬编码限制。4 小时后,会话将被删除。
注意:如果不是本机搭建,比如局域网或者vps搭建,就无法打开,因为默认解析是localhost,如需访问,需要修改配置文件。
设置文件在 play-with-docker/config/config.go 之中,需要修改以下配置:
XML/HTML代码
  1. flag.StringVar(&PlaygroundDomain, "playground-domain", "localhost", "Domain to use for the playground")  
可以看到 PWD这里可以设定要解析的网址就是 localhost,所以只要改变 pwd.example.com,就可以用这个网址址连上 PWD。
做完上面的设置,可以顺利启动 Docker 容器,但是想要连上特点 Port 会失败,因为他是用子网站的方式去连接 http://ip<hyphen-ip>-<session_jd>-<port>.direct.pwd.example.com,所以会遇到无法解析 DNS 的情況,可以在 DNS 的設定中把 pwd.example.com 和 *.pwd.example.com 都加入 A Record,才可以正常使用。
nginx反代设置(仅作参考):
XML/HTML代码
  1. map $http_upgrade $connection_upgrade {  
  2.     default upgrade;  
  3.     ''      close;  
  4. }  
  5.   
  6. server {  
  7.     listen       80;  
  8.     server_name  pwd.example.com *.pwd.example.com;  
  9.   
  10.     location / {  
  11.         proxy_pass http://192.168.1.1:80;  
  12.         proxy_set_header Upgrade $http_upgrade;  
  13.         proxy_set_header Connection $connection_upgrade;  
  14.         proxy_set_header Host $host;  
  15.         proxy_cache_bypass $http_upgrade;  
  16.     }  
  17.   
  18.     error_page   500 502 503 504  /50x.html;  
  19.     location = /50x.html {  
  20.         root   /usr/share/nginx/html;  
  21.     }  
  22. }  
假设 PWD Server 跑在 192.168.1.1:80 上。
自测以上在alpine系统+docker环境完全没问题,在Debian系统会出现错误,这个跟系统环境有关,需要自己测试。
alpine安装过程如下:
XML/HTML代码
  1. docker安装(自己做的傻瓜安装包):
  2. curl http://iii80.com/sh/docker.sh -o docker.sh && chmod +x docker.sh && bash docker.sh
  3. Play With Docker 环境安装:
  4. apk add go
  5. Play With Docker 安装:
  6. #拉取代码
  7. git clone https://github.com/play-with-docker/play-with-docker
  8. cd play-with-docker
  9. # 测试docker是否运行正常
  10. docker run hello-world
  11. # 加载ipvs模块
  12. sudo modprobe xt_ipvs
  13. # 初始化一个群集(Swarm)
  14. docker swarm init
  15. # 拉取 franela/dind 镜像(测试环境基础)
  16. docker pull franela/dind
  17. # 下载 go 语言组件
  18. go mod vendor
  19. # 启动 PWD 容器
  20. docker-compose up
记得在 docker-compose up 命令执行前修改 play-with-docker/config/config.go 中的 localhost 为自己的域名, 比如 lab.iii80.com ,然后在 dns 解析中,将 lab.iii80.com 和 *.lab.iii80.com 两个都解析到本地服务器ip,局域网就写局域网的ip ,vps 就写公网ip,就可以随便实验了。
以下是几个简单的实例:
XML/HTML代码
  1. docker run -d -p 8181:80 --restart=always baiyuetribe/oneindex   #演示oneindex搭建
  2. docker run -d -p 3001:3001 -v /opt/rrdata:/opt/work/store --name rrys baiyuetribe/rrshare   #人人影视
  3. docker run -t -p 10010:80 -v /opt/rrdata:/h5ai --name h5ai ilemonrain/h5ai:full  #在线播放视频
  4. 下面命令可运行宝塔面板,本站做的mini版,可运行在4G小空间的服务器上,一分钟搭建,即可借用宝塔面板搭建任意web程序了。
  5. docker run -tid --name baota -p 80:80 -p 8888:8888 --restart always baiyuetribe/baota_mini
  6. 麻雀虽小,五脏俱全,借用上面的命令就可以在线搭建网站了,非常方便。
更多好玩的自行开发。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):