Welcome 微信登录

首页 / 操作系统 / Linux / 使用 Docker/LXC 迅速启动一个桌面系统

Docker 是 dotCloud 目前是开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。
 
Docker 使用 Go 语言编写,用 cgroup 实现资源隔离,容器技术采用 LXC. LXC 已经足够成熟,被多个主流 PaaS 服务商采用(比如 dotCloud),国内的一些互联网公司也在用(比如腾讯)。虽然都是企图解决自动化部署方面的问题,Docker 的解决方式有别于我们常提到的 Puppet/Chef,他们虽然走的是不同的路,但也可以拿来一起用。
 
上面说了 Docker 有很多玩法,下面介绍的玩法是:在服务器上用 docker 创建桌面系统,然后在客户端上通过 ssh 远程连接桌面,可以看作是平民化的 VDI 解决方案。Docker的搭建Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htmDocker 和一个正常的虚拟机有何区别? http://www.linuxidc.com/Linux/2013-12/93740.htm在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htmDocker 将改变所有事情 http://www.linuxidc.com/Linux/2013-12/93998.htmDocker安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

安装 Docker/LXC

如果 Linux kernel 是 3.8 以前的内核,或者内核缺少 aufs 模块需要安装额外的扩展模块:$ sudo apt-get install linux-image-extra-`uname -r`安装 lxc-docker:$ sudo apt-get install software-properties-common$ sudo add-apt-repository ppa:dotcloud/lxc-docker$ sudo apt-get update$ sudo apt-get install lxc-docker

运行一个简单系统

运行 docker 就会自动下载一个 Ubuntu 镜像(第一次运行才需要下载),并在一个 container(容器)里运行一个 ubuntu 系统(类似虚拟机)和 shell:$ docker run -i -t ubuntu /bin/bash在 host 上 ps 一下发现 docker 使用 lxc-start 工具和 /var/lib/docker/containers/…/config.lxc 里的参数启动1个 lxc 容器并运行 /bin/bash 程序:$ ps aux | grep dockerroot 281030.00.0211641116 ?S10:52 0:00 lxc-start -n a581df505cb9ea07e93de28d76fc9b4e1ee48b981ce994740efdaa65d0d307a3 -f /var/lib/docker/containers/a581df505cb9ea07e93de28d76fc9b4e1ee48b981ce994740efdaa65d0d307a3/config.lxc -- /sbin/init -g 172.16.42.1 -e HOME=/ -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -e DEBIAN_FRONTEND=noninteractive -- /bin/bash /src/startup.sh

运行一个 Hello world

启动一个 ubuntu 系统然后打印 hello world,囧,一个 ubuntu 系统的存在就是为了打印一个 hello world,世界变了,反了,操作系统和应用程序的地位颠倒了~$ docker run -i -t ubuntu echo hello worldhello world

运行一个 “桌面” 系统

来看看如何启动一个 “桌面” 系统,按照 docker-desktop 项目给的方法和这里的 Dockerfile开始 build 一个简单的 “桌面系统”:$ docker build -t vpsee/docker-desktop git://github.com/rogaha/docker-desktop.gitStep 1 : FROM ubuntu:12.10 ---> b750fe79269d...Successfully built 7774f89504e5build 完后就可以用 docker images 命令看到:$ docker imagesREPOSITORY TAG IDCREATED SIZEubuntu 12.04 8dbd9e392a963 months ago131.5 MB (virtual 131.5 MB)ubuntu 12.10 b750fe79269d3 months ago24.65 kB (virtual 180.1 MB)ubuntu latest8dbd9e392a963 months ago131.5 MB (virtual 131.5 MB)ubuntu precise 8dbd9e392a963 months ago131.5 MB (virtual 131.5 MB)ubuntu quantal b750fe79269d3 months ago24.65 kB (virtual 180.1 MB)base latestb750fe79269d3 months ago24.65 kB (virtual 180.1 MB)base ubuntu-12.10b750fe79269d3 months ago24.65 kB (virtual 180.1 MB)base ubuntu-quantalb750fe79269d3 months ago24.65 kB (virtual 180.1 MB)base ubuntu-quantl b750fe79269d3 months ago24.65 kB (virtual 180.1 MB)vpsee/docker-desktop latest7774f89504e518 minutes ago12.29 kB (virtual 1.576 GB)启动这个刚 build 好的 “桌面系统” 吧,注意 a581df505cb9 是这个容器的 ID:$ docker run -d vpsee/docker-desktopa581df505cb9这个系统有自己的内部 IP 地址,外界不能直接访问,所以要想从外界 ssh 登陆的话,需要把它的 ssh 服务端口(22)和 host 上某个端口通过 docker port 命令做个映射,这样访问 host 上的 49153 端口就是访问某个 container 里面的 22 端口了:$ docker port a581df505cb9 2249153查看一下当前运行的容器:$ docker psIDIMAGE COMMANDCREATED STATUSPORTSa581df505cb9vpsee/docker-desktop:latest /bin/bash /src/start 24 minutes agoUp 24 minutes 49153->22然后我们可以在 Mac/Linux 客户端上通过 ssh 访问这个 “桌面” 了:$ ssh -YC -c blowfish docker@192.168.2.45 -p 49153 ./docker-desktopdocker@192.168.2.45"s password:注意上面的 password 是随机生成的(每次创建新系统密码都会变),那密码是什么呢?通过 docker logs 可以找到:$ docker logs a581df505cb9User: docker Password: ieFi2iu1PhieAdding user `docker" to group `sudo" ...Adding user docker to group sudoDone..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/Optionsspring-desktop-wallpaper-1920x1200-0911085.jpgdocker-desktop从 Mac 上访问远端桌面的话需要有 X 环境(下载 XQuartz 安装即可);从 Linux 上可以直接访问。登陆后界面如下:Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里本文永久更新链接地址