优秀的 web console PasS 服务商 codepicnic https://codepicnic.com 有了开源的克隆版. 搜索了一些codetainer搭建的相关文档, 都引用了 github 的官方介绍, 但是官方说明比较简单, 安装过程中的一些报错严重影响了用户对codetainer的体验, 本篇文章介绍 codetainer 的部署与使用
环境依赖
安装 docker 环境
1 | tee /etc/yum.repos.d/docker.repo <<-'EOF' |
1 | yum install docker-engine |
安装 golang 环境
根据自己的平台选择对应的安装包, 这里我使用的环境为 CentOS7.2 所以选择了如下安装包下载
go1.7.4.linux-amd64.tar.gz Archive Linux 64-bit 80MB 47fda42e46b4c3ec93fa5d4d4cc6a748aa3f9411a2a2b7e08e3a6d80d753ec8b
1 | cd /usr/local/src |
1 | echo "export GOROOT=/usr/local/go" >> /etc/profile |
安装 go-bindata
go get -u github.com/jteeuwen/go-bindata/...
安装了 go-bindata
后如果还是报: go-bindata command not found
的话, 就进行如下操作
ln -s $GOPATH/bin/go-bindata $GOROOT/bin
可以用 cp
也可以用 ln
, 当然也可以把这个路径添加到 PATH
中, 总之只要环境变量 PATH
能找到就行
安装 godep
go get github.com/tools/godep
安装 codetainer
1 | go get github.com/codetainerapp/codetainer |
make 成功后会生成这个文件 $GOPATH/src/github.com/codetainerapp/codetainer/bin/codetainer
docker 配置
1 | vim /usr/lib/systemd/system/docker.service |
codetainer 配置
codetainer 的默认配置文件只有在 codetainer命令第一次执行之后才会自动创建, 自动创建的配置文件在 $HOME/.codetainer/config.toml
默认只有两行, 如果上面你没有修改过 docker API 监听的端口, 那这一步骤你是不需要关心的
1 | DockerServer = "localhost" |
官方给出的配置说明如下:
1 | # Docker API server and port |
启动 codetainer
以下是官方案例, 这里我不做修改, 只说明一下
1 | $ cd $GOPATH/src/github.com/codetainerapp/codetainer/bin/ |
codetainer 服务启动后默认会卡在前台, 提示你已经监听了 127.0.0.1:3000 这个地址
不用管这个监听了本地3000端口地址的提示, 你可以执行如下命令查看监听的端口
1 | netstat -antupl |
这里可以看到 codetainer 的服务监听了所有 IP 的3000端口
登录你的 web console
我试了下, 直接打开 http://IP:3000
是有问题的, 如果需要登录到 console, 需要知道你刚刚使用 codetainer 启动的镜像 id, 可以通过以下方式查看
1 | cd $GOPATH/src/github.com/codetainerapp/codetainer/bin/ |
通过 ./codetainer list
可以查看当前 codetainer 托管的镜像 id (这里我说的镜像
id 指的是在 codetainer 里管理的 id, 而不是 docker 管理 container 的 id )
1 | docker images |
自行感受他们的区别吧~
找到 ./codetainer list
回显出来的 id 之后就可以访问我们的 web console 啦
访问这个地址: http://
到这里实现了在一台宿主机中启动一个容器来提供 terminal
下面我来介绍下如何在一台宿主机上启动多个 container 来提供过个 terminal
多 terminal
不难发现, web console 的服务是 codetainer 来提供的, 他提供了前端页面, 提供与 docker API 的交互, 所以, 只要我们使用 ./codetainer create
命令启动多个容器, 就可以在 ./codetainer list
上看到多个”主机”, 查到他们的 id, 就可以在 url 中通过更换 id 的值来访问不通的 terminal
1 | ➜ bin git:(master) ✗ ./codetainer list |
可以看到我们在使用 ubuntu:14.04
镜像创建第二个容器的时候, 回显自动给出了访问的地址, 因为我现在的 server 已经启动, 在 server 没有启动的时候, 只能通过手动查找 id 的方式来访问
以上我依然使用了 ubuntu:14.04
镜像, 你可以在 pull 下来新的镜像注册到 codetainer服务中. 例如:
1 | docker pull centos:latest |
参考文档
docker 官方安装文档: https://docs.docker.com/engine/installation/linux/centos/
codetainer 项目 github 地址: https://github.com/codetainerapp/codetainer
go-bindata 项目 github 地址: https://github.com/jteeuwen/go-bindata
godep 项目 github 地址: https://github.com/tools/godep
golang 官方下载地址: https://golang.org/dl/
golang 官方安装文档: https://golang.org/doc/install
go-bindata 报错解决: http://blog.csdn.net/lampqiu/article/details/48649881