原文地址:
https://docs.docker.com/userguide/dockerizing/
Docker允许我们在容器内执行一些应用(比如说apache),如果想在容器内启动一个应用,只需要执行一个简单的命令:
docker run
例如:
docker run ubuntu:14.04 /bin/echo ‘hello world’
输出如下:hello world
好吧,你已经成功的启动了一次你的第一个容器(container)
然后,我们看一下刚刚都发生了什么
首先,我们确定了我们要执行的命令是 docker run (因为docker还有其他命令,你不会天真的认为只有一个run吧)
接下来,我们确定了一个镜像(image)ubuntu:14.04 ,就是说,我们的容器是基于ubuntu:14.04 启动的,我们称之为操作系统镜像
当我们指定了一个景象之后,Docker会优先查找本机是否有该景象,如果没有,Docker 会从Docker Hub 去下载对应的镜像
再然后,我们指定了我们要在容器中执行的命令/bin/echo ‘hello world’
容器被成功加载以后,执行/bin/echo ‘hello world’命令,然后我们就看到了’hello world‘
可能你要问执行完成命令后,我们刚刚创建的容器怎么样了?其实,这个容器只是在命令执行过程中存活,在你命令结束的一瞬间,容器也被停止了
(有人会说,我擦这有屁用,我们想让容器一直执行,好吧,继续翻译)
我们换一个命令
docker run -t -i ubuntu:14.04 /bin/bash
执行完成之后,我们发现我们得到了一个提示符
root@25b7822fb564:/#
这个命令和上一个命令唯一的不同就是我们增加了两个参数,-t ,-i,当然,我们还指定了一个新的命令/bin/bash,-t ,-i 的作用是提供给我们一个交互式的方式来启动一个容器
这个时候我们可以尝试一些其他的命令
pwd
ls
这个我们就可以看到我们现在处在/目录下,然后也可以看到根目录下的所有文件,如果我们想退出,我们可以输入 exit 或者直接Ctrl +D
好了,虽然我们现在可以和容器进行交互了,但是貌似没什么作用
好吧,那我们执行如下命令:
docker run -d ubuntu:14.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
然后我们得到如下结果:
[root@fedora ~]# docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
f01cf49bea74bd9985e12e01cf768dd3716847a0d298db055274738a6b3bd6e8
[root@fedora ~]#
这个时候你可能会怀疑,输出跑的到哪里去了?我们不应该能看到 满屏幕的hello world吗?其实,我们仔细看一下会发现我们使用了一个参数-d ,-d的左右就是让我们的容器后台运行
我们指定了镜像:ubuntu:14.04
我们指定了命令:/bin/sh -c “while true; do echo hello world; sleep 1; done” 这是一个无线输出Hello world的循环
但是我们没有得到Hello world,只是得到了一个字符串f01cf49bea74bd9985e12e01cf768dd3716847a0d298db055274738a6b3bd6e8
其实这个字符串是我们的容器的id,用了区分容器和容器,我们可以通过这个容器Id来看一下我们的hello world 到底发生了什么
首先,我们通过一个命令来看一下(因为在后台执行么,我们咋知道跑了几个容器)
docker ps
[root@fedora ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f01cf49bea74 ubuntu:14.04 "/bin/sh -c 'while t 5 minutes ago Up 5 minutes boring_kowalevski
[root@fedora ~]#
docker ps会输出一下信息如上图,镜像,命令,创建时间,名称,Id
这个时候我们会得到一个短Id,其实作用是一样的,都是为了区分
我们可以通过如下命令来查看日志
docker logs boring_kowalevski
这个时候我们就可以看到好多Hello world了
好了,这个时候我们需要做的下一步可能就是停止这个容器了
docker stop boring_kowalevski
停止之后我们再使用docker ps查看一下
好了,没有正在运行的容器了
欢迎转载,转载请注明出处:http://www.503error.com/
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021