CoreOS 实战 在 UOS上体会CoreOS 运作全记录
发布时间:2022-06-04 11:33:15 所属栏目:云计算 来源:互联网
导读:近期 UnitedStack 公有云在国内率先提供了对 CoreOS 的支持,广大玩家可以很轻松地在 UOS 上体验、研究 CoreOS 了。以下是一点经验分享,抛砖引玉,希望能给大家带来些许帮助。 CoreOS 和 docker 简介 关注云计算的同学一定注意到了 docker ,而关注 docker
体验CoreOS 试验一:跑个docker 试试 1 从docker hub(docker官方提供的映像存储服务)拉取一个基础Linux系统映像: 2 启动一个docker容器,运行交互式shell,分配一个伪终端,附带stdin和stdout: 复制 docker run -i -t base /bin/bash 此时就attach到了刚启动的docker 容器的终端。运行一些命令试试: 用docker kill 命令可以停止容器。停掉的容器并没有完全删除,还可以重新起来,而且前面做的改动会被保留: 试验二:运行WordPress WordPress需要 mysql 数据库,所以先 pull mysql: 复制 docker pull mysql 然后 pull wordpress 映像: 复制 docker pull wordpress 运行 mysql: 复制 docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=test_test -d mysql 运行 wordpress: 复制 docker run --name wordpress_1 --link mysql_1:mysql -p 80:80 -d wordpress 参数解释: --name mysql_1 给docker容器起个名字。 -e MYSQL_ROOT_PASSWORD=test_test 指定mysql的root密码。 -p 80:80 把主机(CoreOS)的80端口映射到docker容器内部的80端口,这样就可以通过“主机ip:80”访问到容器里80端口的服务。 --link mysql_1:mysql 这个参数比较神奇,看起来很简单,但要解释清楚还是有点复杂的。简言之,这个参数把两个docker容器打通了,使它们内部的应用可以很容易地互访。 OK,现在可以访问WordPress了,直接在浏览器地址栏输入前面绑定的公网ip: 稍微深入一点 额,wordpress就这么起来了,大家是不是感觉有点太。。。轻巧了。。。 的确,经过docker封装的应用,用起来很方便,但也把大量细节隐藏了。作为一个惯于寻根究底、不肯放过任何细节的资深&优秀OPer,难以容忍真相被层层包裹在深幕之后。 好吧,我们再往深处探寻一下。 Q1:这两个服务这么不声不响就起来了,也没输出啥信息么? A1:可以通过docker logs 命令查看每个容器的运行日志: Q2:平时用惯了ssh,假如想登录到某个docker容器内部,该怎么做呢? A2:用nsenter 可以“渗透”进入到运行中的docker容器。 首先,找到容器的 进程的PID 复制 PID=`docker inspect --format "{{ .State.Pid }}" mysql_1 ` 然后渗入(需要root权限) 复制 sudo nsenter --target $PID --mount --uts --ipc --net --pid 如上所示,我们进入了 mysql_1 这个容器。确实太纯净了,只有mysql,连 top、ps 都没有。。。那只好连上mysql看看: OK,再进入wordpress看看: 其实,这种方式并不是ssh登录,不需要容器内部运行sshd服务。而是用主机的bash进入容器的name space,“附着”到容器上。所以才叫做 ns(name space) enter。 之所以能这么做,是因为每个docker容器中的进程,实际上都是主机(CoreOS)的本地进程,可以通过ps 看到: 有点神奇哈!到这里大家应该能感觉到,上面反复提到的name space,就是神奇的docker魔法的真正谜底。当然还需要aufs、cgroups等技术的支撑,以及开发者们的不懈努力,才最终呈现给大家完整的docker平台。 (编辑:泉州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐