在 docker中 运行 mono /jexus server 并部署asp.net mvc站点
http://linuxdot.net/bbsfile-3988
1. 安装 docker:
// docker 1.7 新版 安装非常容易,理论上说,在主流的任意linux发行版上都可以直接安装.
wget -qO- https://get.docker.com/ | sh
2. 重启你的宿主机,可选.
reboot
3.拉取已经内建了mono 和jexus 服务器的 docker镜像, 此镜像基于 官方 ubuntu:14.04.2 版本构建,dockerfile 在 hub.docker.io 上可以看到.
docker pull azraelrabbit/monupw
4. 运行容器: 以拉取下来的镜像为基础创建并运行一个容器,镜像内已声明 22/80端口 并已启动对应的服务,22: sshd, 80: jexus
docker run --name monojexus -d -p 32022:22 -p 32080:80 -v /mydata:/data azraelrabbit/monupw
-v 是指将容器里的 Volume[/data] 的/data路径 映射到主机的 /mydata路径.
-p 将容器里的端口映射到主机的指定端口, 这个端口,必须是在dockerfile里,用 EXPOSE 指令声明过的端口.
--name 给这个容器 命名. 方便后续的管理操作,否则用id太猥琐了.[容器的id是随机的128位的字符串,简写的是16位的,不过不方便记忆和管理.]
-d 指让容器以后台服务方式运行,
注: -i Keep STDIN open even if not attached
-t Allocate a pseudo-TTY
-i -t 联合起来用就是指 以前台进程运行容器,并且获得容器的shell,当退出shell时,容器停止运行. 此时可在指令的最后加入要执行的命令行,
貌似这样会覆盖掉 dockerfile里面的CMD[]指令内部的命令行.
5. 用ssh工具连接主机的 32022 端口,即可连接到这个已启动的容器内.
6. 将你的mvc工程或asp.net工程复制到 /mydata路径下. 并在ssh shell 里用sudo 重启一下jws . 即可访问这个容器内的 站点了.
注: 本意是直接发布站点到/mydata下就能直接访问,但是一直报错,而用静态html则可以,所以必须 ssh连接上容器后,必须sudo 重启jws 才能正常访问asp.net/mvc 的站点. 这个问题待解决.
. 容器管理
查看运行中的容器: docker ps
查看所有容器: docker ps -a
停止容器: docker stop 容器名/容器id
删除容器: docker rm 容器名/容器id
. 镜像管理:
获取/更新镜像: docker pull
删除镜像: docker rmi 镜像id
先用admin:monupw用户登陆,在su root:monups可以使用