背景说明
PWD由于资源的限制有时候无法正确访问,可以自己本地部署供自己和相关人员使用。
官网地址
https://github.com/play-with-docker/play-with-docker
解决方案
环境安装
环境准备
运行环境
[root@vm1 ~]# yum install go
[root@vm1 ~]# go version
go version go1.16.13 linux/amd64
[root@vm1 ~]#
依赖镜像
[root@vm1 ~]# go env -w GO111MODULE=on
[root@vm1 ~]# go env -w GOPROXY=https://goproxy.cn,direct
[root@vm1 ~]# go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn"
GOROOT="/usr/lib/golang"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.16.13"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3446745042=/tmp/go-build -gno-record-gcc-switches"
[root@vm1 ~]#
源码下载
[root@vm1 ~]# git clone https://github.com/play-with-docker/play-with-docker
Cloning into 'play-with-docker'...
如果无法通过克隆进行下载,也可以通过浏览器进行下载zip文件然后解压并改名为play-with-docker即可
环境安装
进入目录play-with-docker
[root@vm1 ~]# cd play-with-docker/
[root@vm1 play-with-docker]# ls
api.go docker Dockerfile dockerfiles go.mod handlers id k8s prometheus.yml pwd router storage
config docker-compose.yml Dockerfile.l2 event go.sum haproxy internal LICENSE provisioner README.md scheduler vendor
[root@vm1 play-with-docker]#
加载内核模块
[root@vm1 play-with-docker]# modprobe xt_ipvs
[root@vm1 play-with-docker]#
初始化swarm
[root@vm1 play-with-docker]# docker swarm init
下载镜像
[root@vm1 play-with-docker]# docker pull franela/dind
安装依赖
[root@vm1 play-with-docker]# go mod vendor
安装docker compose
[root@vm1 ~]# yum install docker-compose
[root@vm1 ~]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
[root@vm1 ~]#
服务运行
[root@vm1 play-with-docker]# docker-compose up
后台运行 docker-compose up -d
访问验证
如果当前机器安装了图形化界面直接通过浏览器访问http://localhost即可正常访问,如果没有图形化界面,则可以使用wget命令进行验证
[root@vm1 play-with-docker]# cd ../
[root@vm1 ~]# wget http://localhost
--2022-04-10 18:38:23-- http://localhost/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... failed: Connection refused.
Connecting to localhost (localhost)|127.0.0.1|:80... failed: Connection refused.
[root@vm1 ~]# ls
anaconda-ks.cfg index.html play-with-docker
[root@vm1 ~]# cat index.html
<!DOCTYPE html>
<html lang="en" ng-app="PWDLanding" ng-controller="LoginController">
<head>
<script src="https://unpkg.com/angular@1.6.6/angular.min.js"></script>
<script src="https://unpkg.com/angular-cookies@1.6.6/angular-cookies.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
此时不能通过机器的IP地址进行访问,只能通过localhost进行访问
高级配置
实例模板
由于云主机的性能资源有限,所以每次启动PWD,只提供了四个小时的在线实验时间,所以,当你的实验完成或者因为各种原因终止实验的时候,应当关闭当前终端,即点击左上角的橙色按钮“CLOSE SEESION”。此外,PWD还提供了预定义模板功能,可以用鼠标单击左侧的扳手icon,请注意,如果需要使用预定义模板功能,需要关闭当前 seesion 才可以正确启动。
模板功能提供了三个快速启动集群的选项:
- 3 Managers and 2 Workers
- 5 Managers and no Workers
- 1 Manager and 1 Workers
主机配置
修改监听地址和域名,如果部署在VPS上需要把localhost修改为域名或IP,编辑文件api.go,在api.go文件的 config.ParseFlags()下面添加config.PlaygroundDomain = “YOU-IP or DOMAIN
config.PlaygroundDomain = "192.168.184.130"
如下图所示
启动服务
[root@vm1 play-with-docker]# docker-compose up
WARNING: The Docker Engine you're using is running in swarm mode.
Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.
To deploy your application across the swarm, use `docker stack deploy`.
Starting l2 ...
Starting haproxy ...
Starting l2 ... done
Attaching to pwd, haproxy, l2
haproxy | [NOTICE] (1) : haproxy version is 2.5.0-f2e0833
内外穿透
如果配置了内网穿透
则需要编辑文件api.go,在api.go文件的 config.ParseFlags()下面添加config.PlaygroundDomain = “穿透地址”
运行并访问
[root@vm1 play-with-docker]# docker-compose up
WARNING: The Docker Engine you're using is running in swarm mode.
Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.
To deploy your application across the swarm, use `docker stack deploy`.
Starting l2 ...
Starting haproxy ...
Starting l2 ... done
Attaching to haproxy, pwd, l2
haproxy | [NOTICE] (1) : haproxy version is 2.5.0-f2e0833
haproxy | [NOTICE] (1) : path to executable is /usr/local/sbin/haproxy
haproxy | [WARNING] (1) : config : missing timeouts for frontend 'http-in'.
学习文档
开源地址:https://github.com/play-with-docker/play-with-docker.github.io
官网地址: http://training.play-with-docker.com/
安装步骤先下载文件,然后进入目录,执行
[root@vm1 ~]# unzip play-with-docker.github.io-master.zip
Archive: play-with-docker.github.io-master.zip
bbd428c78f6916bc6f70eaf4e3aa29417f69d8e6
creating: play-with-docker.github.io-master/
[root@vm1 ~]# mv play-with-docker.github.io-master play-with-docker.github.io
[root@vm1 ~]# cd play-with-docker.github.io/
[root@vm1 play-with-docker.github.io]# docker run --rm --label=jekyll --volume=$(pwd):/srv/jekyll -it -p 4000:4000 jekyll/jekyll:3.2 jekyll serve
Configuration file: /srv/jekyll/_config.yml
Source: /srv/jekyll
Destination: /srv/jekyll/_site
Incremental build: disabled. Enable with --incremental
Generating...
done in 4.987 seconds.
Auto-regeneration: enabled for '/srv/jekyll'
Configuration file: /srv/jekyll/_config.yml
Server address: http://0.0.0.0:4000/
Server running... press ctrl-c to stop.
打开浏览器访问:http://192.168.184.130:4000/
文档参考
https://blog.k8s.li/play-with-docker.html
https://github.com/bingohuang/docker-labs
https://github.com/lean-soft/play-with-docker
[