Docker基础之五: 使用Docker容器
使用Docker容器
(对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。)
这一节我们将从运行一个简单的Hello world入手,来讲解如何使用容器。
1 运行Hello World
root@shev:~# docker run ubuntu:14.04 echo hello-world hello-world root@shev:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0cef7fa7468d ubuntu:14.04 "echo hello-world" 3 seconds ago Exited (0) 2 seconds ago condescending_visvesvaraya
剖析:
- 本条命令启动ubuntu:14.04版本的镜像,并在其中运行打印hello world的命令;
- 由于我们的命令是一个简单的语句,并不会持续很长时间,当命令执行完毕时,容器就退出了
- 因此,我们通过docker ps –a可以看到容器的状态是停止状态
2 运行一个可交互的容器
之前的例子里面,容器在运行完指令后就自动退出了,那么我们可不可以运行一个可交互的容器呢?
root@shev:~# docker run -it ubuntu /bin/bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu Digest: sha256:f91f9bab1fe6d0db0bfecc751d127a29d36e85483b1c68e69a246cf1df9b4251 Status: Downloaded newer image for ubuntu:latest
root@558531c2b215:/# ll total 72 drwxr-xr-x 32 root root 4096 Dec 2 09:16 ./ drwxr-xr-x 32 root root 4096 Dec 2 09:16 ../ -rwxr-xr-x 1 root root 0 Dec 2 09:16 .dockerenv* -rwxr-xr-x 1 root root 0 Dec 2 09:16 .dockerinit* drwxr-xr-x 2 root root 4096 Oct 28 04:34 bin/ drwxr-xr-x 2 root root 4096 Apr 10 2014 boot/ drwxr-xr-x 5 root root 380 Dec 2 09:16 dev/ drwxr-xr-x 64 root root 4096 Dec 2 09:16 etc/ drwxr-xr-x 2 root root 4096 Apr 10 2014 home/ drwxr-xr-x 12 root root 4096 Oct 28 04:34 lib/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 lib64/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 media/ drwxr-xr-x 2 root root 4096 Apr 10 2014 mnt/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 opt/ dr-xr-xr-x 160 root root 0 Dec 2 09:16 proc/ drwx------ 2 root root 4096 Oct 28 04:34 root/ drwxr-xr-x 7 root root 4096 Oct 28 04:34 run/ drwxr-xr-x 2 root root 4096 Nov 10 00:35 sbin/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 srv/ dr-xr-xr-x 13 root root 0 Dec 2 09:16 sys/ drwxrwxrwt 2 root root 4096 Oct 28 04:34 tmp/ drwxr-xr-x 11 root root 4096 Nov 10 00:35 usr/ drwxr-xr-x 12 root root 4096 Nov 10 00:35 var/
root@558531c2b215:/# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:648 (648.0 B) TX bytes:648 (648.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
剖析:
- 本例中,我们在ubuntu:latest镜像中,执行/bin/bash,由于bash本身是一个包含了交互的终端,因此我们可以长时间的运行容器;
- 但是,我们必须指定-it,同shell的stdiin和stdout绑定起来
- 进入容器后,我们实际进入了一个shell终端,里面不仅可以访问文件将,还有一个虚拟网卡和IP。这是不是跟一个linux主机是一样的呢?
3 在容器中运行一个后台守护进程
所谓后台守护进程,就是运行在后台,并不会阻塞当前的进程。
在后台运行一个脚本,每隔1秒打印一句hello world:
root@shev:~# docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" ba50b5023bb15b50608d855671d40c09690f5b1a956a40e3544acde791e04aa3
查看后台的运行日志:
root@shev:~# docker logs ba50 hello world hello world hello world hello world hello world hello world hello world
查看当前正在运行的容器列表:
root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba50b5023bb1 ubuntu:14.04 "/bin/sh -c 'while tr" 2 minutes ago Up 2 minutes ecstatic_bell e221abf45a0b ghostcloud.cn:5000/gcali:1.2 "/usr/local/ghostclou" 49 minutes ago Up 49 minutes gcsagent
停止指定的容器:
root@shev:~# docker stop ba50 ba50
再次查看正在运行的容器:
root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e221abf45a0b ghostcloud.cn:5000/gcali:1.2 "/usr/local/ghostclou" 50 minutes ago Up 50 minutes gcsagent
剖析:
- 本例中,我们通过-d属性,让容器运行在后台,我们并不进入容器内部
- 执行完毕后,返回了一个id,该id是容器的id。上面显示的是容器的完整id,但是我们实际操作的时候,一般可以只输入前面几位即可,docker会自动进行匹配
- 我们通过docker logs 来查看容器运行的情况,也就是我们循环打印的日志
- 由于该容器是长时间运行的,所以我们可以通过docker ps,查看该容器
- docker stop则是停止该容器,停止后,我们就看不到该容器了
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker基础之四: Docker入门
Docker入门 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 首先我们检查docker是否安装成功: root@gctest:~# docker info Containers: 3 Images: 18 Server Version: 1.9.0 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 24 Dirperm1 Supported: false Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.13.0-32-generic Operating System: Ubuntu precise (12.04.5 LTS) CPUs: 1 Total Memory: 979.2 MiB Name: gctest ID: 5RZM:ZIIU:OVNC:AS2Y:P6YZ:ZQBU:PUF2:...
- 下一篇
Docker基础之六: Docker基础命令
容器相关的命令 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 在上例中,我们用3种方式运行了容器,在上节中我们学习了: docker ps : 查看容器列表 docker logs:查看容器的日志 docker stop:停止容器 在本节中,我们将通过事例来熟悉一些其他的docker命令,并学习docker client。 1 Docker Client Docker Client和Docker Daemon实际使用的是同一个二进制程序,通过docker --help命令可以直接查看docker的所有命令及选项: 查看docker可执行程序的路径: root@shev:~# which docker /usr/bin/docker docker命令的帮助信息: root@shev:~# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装