Docker:Linux应用容器
Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。
Docker 由下面这些组成:
- Docker 服务器守护程序(server daemon),用于管理所有的容器。
- Docker 命令行客户端,用于控制服务器守护程序。
- Docker 镜像:查找和浏览 docker 容器镜像。
$ docker build -t vpsee/docker-desktop git://github.com/rogaha/docker-desktop.git Step 1 : FROM ubuntu:12.10 ---> b750fe79269d ... Successfully built 7774f89504e5
build 完后就可以用 docker images 命令看到:
$ docker images REPOSITORY TAG ID CREATED SIZE ubuntu 12.04 8dbd9e392a96 3 months ago 131.5 MB (virtual 131.5 MB) ubuntu 12.10 b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) ubuntu latest 8dbd9e392a96 3 months ago 131.5 MB (virtual 131.5 MB) ubuntu precise 8dbd9e392a96 3 months ago 131.5 MB (virtual 131.5 MB) ubuntu quantal b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) base latest b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) base ubuntu-12.10 b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) base ubuntu-quantal b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) base ubuntu-quantl b750fe79269d 3 months ago 24.65 kB (virtual 180.1 MB) vpsee/docker-desktop latest 7774f89504e5 18 minutes ago 12.29 kB (virtual 1.576 GB)
启动这个刚 build 好的 “桌面系统” 吧,注意 a581df505cb9 是这个容器的 ID:
$ docker run -d vpsee/docker-desktop a581df505cb9
这个系统有自己的内部 IP 地址,外界不能直接访问,所以要想从外界 ssh 登陆的话,需要把它的 ssh 服务端口(22)和 host 上某个端口通过 docker port 命令做个映射,这样访问 host 上的 49153 端口就是访问某个 container 里面的 22 端口了:
$ docker port a581df505cb9 22 49153
查看一下当前运行的容器:
$ docker ps ID IMAGE COMMAND CREATED STATUS PORTS a581df505cb9 vpsee/docker-desktop:latest /bin/bash /src/start 24 minutes ago Up 24 minutes 49153->22
然后我们可以在 Mac/Linux 客户端上通过 ssh 访问这个 “桌面” 了:
$ ssh -YC -c blowfish docker@192.168.2.45 -p 49153 ./docker-desktop docker@192.168.2.45's password:
注意上面的 password 是随机生成的(每次创建新系统密码都会变),那密码是什么呢?通过 docker logs 可以找到:
$ docker logs a581df505cb9 User: docker Password: ieFi2iu1Phie Adding user `docker' to group `sudo' ... Adding user docker to group sudo Done. .bashrc .config/ .config/rox.sourceforge.net/ .config/rox.sourceforge.net/ROX-Filer/ .config/rox.sourceforge.net/ROX-Filer/pb_Default .config/rox.sourceforge.net/ROX-Filer/globicons .config/rox.sourceforge.net/ROX-Filer/panels .config/rox.sourceforge.net/ROX-Filer/menus2 .config/rox.sourceforge.net/ROX-Filer/Options spring-desktop-wallpaper-1920x1200-0911085.jpg docker-desktop
通过上面的例子也能大致明白docker的操作方式和相关的系统区别
What Are Some Cool Use Cases For Docker?
Docker is a powerful tool for many different use cases. Here are some great early use cases for Docker, as described by members of our community.
Use Case | Examples | Link |
Build your own PaaS | Dokku - Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen | http://bit.ly/191Tgsx |
Web Based Environment for Instruction | JiffyLab – web based environment for the instruction, or lightweight use of, Python and UNIX shell | http://bit.ly/12oaj2K |
Easy Application Deployment | Deploy Java Apps With Docker = Awesome | http://bit.ly/11BCvvu |
Running Drupal on Docker | http://bit.ly/15MJS6B | |
Installing Redis on Docker | http://bit.ly/16EWOKh | |
Create Secure Sandboxes | Docker makes creating secure sandboxes easier than ever | http://bit.ly/13mZGJH |
Create your own SaaS | Memcached as a Service | http://bit.ly/11nL8vh |
Continuous Integration and Deployment | Next Generation Continuous Integration & Deployment with dotCloud’s Docker and Strider | http://bit.ly/ZwTfoy |
Lightweight Desktop Virtualization | Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker Container | http://bit.ly/14RYL6x |