通过上两节的学习http://blog.csdn.net/minimicall/article/details/40119177 和http://blog.csdn.net/minimicall/article/details/40108305 相信大家已经把docker环境已经搭建完毕,这一节,简单学习docker怎么用。
Hello world
计算机的每一个新事物似乎都是从hello world开始。
[email protected]:~# docker run ubuntu:14.04 /bin/echo 'hello world' hello world [email protected]:~# docker run ubuntu /bin/echo 'hello world' hello world
我们之前执行过docker pull ubuntu, 所以我们从远端服务器拉取了不少ubuntu镜像,这些镜像已经存在在本地,不会再去远端服务器拉取,如果你运行的是本地没有的,docker会自动的去远端库查询和拉取。例如 :
[email protected]:~# docker run centos /bin/echo 'hello world' Unable to find image 'centos' locally Pulling repository centos
上述ubuntu是一个镜像,作为一个容器,然后我们进一步运行容器内的APP,即/bin/echo程序。而当执行完echo指令之后,容器内的程序停止了,容器本身也就停止了。记住这个hello world 涉及到点概念,docker ,image, container ,application 。你懂了么?
An Interactive Container
一个可以交互的容器。我们输入如下命令:
[email protected]:~# docker run -i -t ubuntu:14.04 /bin/bash [email protected]:/#
多了两个参数,一个是 -t ,表示给我们的容器tty,终端。一个是-i 表示可以interactive,可以交互。细心看结果,上面一行还在我们的阿里云机子上iZ28ikebrg6z下一行已经进入到docker ubuntu:14.04镜像映射出的容器里面了,95d2e5442f9中。
你可以在这个bash里面执行一些操作。
[email protected]:/# pwd / [email protected]:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
如果你想退出这个bash,那么可以运行:
[email protected]:/# exit exit [email protected]:~#
这样即退出了bash,当然容器也就退出了。
A Daemonized Hello world
守候进程化,即后台化。
执行如下命令:
[email protected]:~# docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" d8eca97420317ae9f2fcd7655ab5c16c964d60f7bd644a8726ce473b075852d8
-d 选项就是告诉docker,这个容器需要后台化。但是,为什么输出是一串看不懂的字符串,而不是每秒输出一次hello world呢?
这一长串东西叫做容器的ID,我们可以通过它使用容器。
[email protected]:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d8eca9742031 ubuntu:14.04 "/bin/sh -c 'while t 3 minutes ago Up 3 minutes mad_jones
看到了吧,我们刚刚那个容器被列出来了。最后一列是名字,什么意思,docker都是一层层的增加的,具体后面细说,你执行一条命令,对你使用的镜像是没有影响的,但是你执行了毕竟是有数据或者其他的东西发生了变化,这个时候,docker给你自动取个名字(你可以指定名字),然后通过这个名字,就像一个新的镜像一样,后面你可以保存它。
打印日志:
[email protected]:~# docker logs mad_jones hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world
停止任务:
[email protected]:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d8eca9742031 ubuntu:14.04 "/bin/sh -c 'while t 43 minutes ago Up 43 minutes mad_jones [email protected]:~# docker stop mad_jones mad_jones [email protected]:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [email protected]:~#
好了,hello world就到次结束。后续推出更加高级的教程。