Play-with-Docker --在线使用/学习Docker
Play With Docker
是一个运行在浏览器中的 Docker Playground,只需要服务端部署好 pwd 服务,客户端无需安装任何环境,使用浏览器就可以在线体验 Docker。类似的还有近期上线的 instantbox
在线体验 Linux 发行版。
按照官方 readme 或 wiki 部署起来,会有不少坑,接下来就开始填坑。
1.安装 Docker 以及 docker-compose ,相信你已经完成了。
apt-get update && apt-get install apt-transport-https ca-certificates curl
### Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
### Add Docker apt repository.
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
## Install Docker CE.
apt-get update && apt-get install docker-ce
2.开启 swarm 需要指定 ip
docker swarm init --advertise-addr ${you-ip}
3.安装 golang、dep、项目依赖:
apt-get install golang go-dep
export GOPATH=/root/go
mkdir -p $GOPATH/src/github.com/play-with-docker/
cd !$
git clone https://github.com/play-with-docker/play-with-docker.git
cd play-with-docker
# 安装项目依赖
dep ensure -v
4.拉取 dind 镜像,也即是工作台运行实例的模板镜像
docker pull franela/dind
5.修改监听地址和域名,如果部署在 VPS 上需要把 localhost 修改为域名或 IP
vi api.go
在 api.go 文件的 config.ParseFlags()
下面添加 config.PlaygroundDomain = "YOU-IP or DOMAIN"
func main() {
config.ParseFlags()
config.PlaygroundDomain = "YOU-IP or DOMAIN"
另外附上 shell 脚本中获取本机公网 ip 的方法
ips=`ifconfig | grep inet | grep -v inet6 | grep -v 127 | grep -v 172 | sed 's/^[ \t]*//g' | cut -d ' ' -f2`
IPADDR=$ips
5.最后一步 docker-compose up
走起!😋
几个坑:
1.服务器 RAM 低于 1GB 经常会提示 fatal error: runtime: out of memory
,代码没问题,是你的服务器内存太少了,开启 SWAP
可解决。如果自己编译 go build
的话也会遇到同样的错误,debug 了好几遍发现是物理内存不足的问题。
dd if=/dev/zero of=/swapfile bs=4MB count=512
mkswap /swapfile
chmod 600 /swapfile
swapon /swapfile
2.有些环境下会提示找不到 $GOPATH
,而 docker-compose.yml
里使用了 $GOPATH
指定目录,可以换成绝对路径。