Docker之容器
简单介绍
之前Docker环境已经配置完成了,也跑了一个叫做“Hello World”的镜像,算是稀里糊涂的跑了一下,现在就来简单说下这个是什么意思。Docker在容器内运行应用程序。在一个容器内运行一个应用程序需要一个命令:docker run。
实际操作
1、之前指令使用的是:
sudo docker run hello-world
这里使用了 docker run 组合指令进行一个镜像的运行。如果本地没有此镜像就会从镜像仓库Docker Hub下载公共镜像。
结果跑出来,这个容器也就结束运行了。
2、使用新指令:
sudo docker run ubuntu:18.04 /bin/echo 'Hello world'
先指定docker的指令为run,然后指定一个镜像:ubuntu 18.04。这是我们容器中运行的来源。docker称这个为镜像。在本例中,我们使用一个Ubuntu 18.04操作系统镜像。接下来,docker在新容器内运行什么命令:
/bin/echo 'Hello world'
Docker容器当你输入指令时被激活运行,但只要"Hello word"被输出,容器就会停止。
3、查看镜像:
docker images -a
这里就是有两个刚才运行的两个镜像。
4、交互式的容器:
sudo docker run -t -i ubuntu:18.04 /bin/bash
在这里继续指定docker run命令,并运行一个新的ubuntu:18.04的镜像,因为之前已经pull了这个镜像,所以此次容器运行很快。但是也加了两个新的标示:-t和-i。-t表示在新容器内指定一个伪终端或终端,-i表示允许我们对容器内的STDIN进行交互。在容器内还指定了一个新的命令:
/bin/bash。
这将在容器内启动bash shell,所以现在当我们的容器启动时我们会看到,我们有一个命令提示符:
可以进行一些指令的运行。
使用pwd查看了路径,并使用exit退出。与我们之前的容器一样,一旦你的Bash shell退出之后,你的容器就停止了。
5、守护进程Hello world
创建一个容器,让它以守护进程的模式运行,就像docker运行应用程序那样,使用指令:
sudo docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
这里并没有“hello world”内容打印出来,运行docker但是我们指定了一个-d标识。-d标识告诉docker运行容器在后台模式运行。也指定了一个相同的镜像:ubuntu:18.04,最终指定命令行运行:
/bin/sh -c "while true; do echo hello world; sleep 1; done"
只输入一串字符串:
这个长的字符串叫做容器ID。它是容器的唯一标识,所以可以使用它。
注意:容器ID是有点长并且非常的笨拙,稍后我们会看到一个断点的ID,某些方面来说它是容器ID的简化版。
要确保容器正在运行。我们可以使用docker ps命令来查看。docker ps命令可以查询docker进程的所有容器。
april_chou@aprilchou-450R5V:/usr/share/gnome-shell/theme$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5c18f4802e1 ubuntu:18.04 "/bin/sh -c 'while..." 34 seconds ago Up 31 seconds nostalgic_hoover
这里看到了后台进程容器。docker ps命令会返回一些有用的信息,这里包括一个短的容器ID:b5c18f4802e1。
我们还可以看到我们使用的ubuntu:18.04来构建它,这个命令已经运行,它被系统自动分配了名称nostalgic_hoover。
注意:docker会在容器启动的时候自动给容器命名。
在容器内使用docker logs命令。让给系统自动分配名称的容器使用这个命令。
6、停止这个后台进程容器,使用命令停止:
docker stop nostalgic_hoover
docker stop命令会通知docker停止正在运行的容器。如果它成功了,它将返回刚刚停止的容器名称。再次通过docker ps命令来检查它是否还工作。
已经没有运行中的容器,完成。
参考: