Docker之实际应用 - 运行输出HelloWorld

Docker Hello World

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world

docker run ubuntu:15.10 /bin/echo "Hello World"

Docker之实际应用 - 运行输出HelloWorld_第1张图片
可以看到这里如果没有对应的ubuntu:15.10会自己进行pull
执行参数解释

  • docker: Docker 的二进制执行文件。
  • run: 与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub下载公共镜像。
  • /bin/echo “Hello world”: 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

运行交互式的容器

我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:

 docker run -i -t ubuntu:15.10 /bin/bash
 root@fb9f4539680e:/#

各个参数解析

  • -t:在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

注意第二行 root@fb9f4539680e:/#,此时我们已进入一个 ubuntu15.10 系统的容器
我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表

root@fb9f4539680e:/# cat /proc/version
Linux version 3.10.0-957.5.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Fri Feb 1 14:54:57 UTC 2019
root@fb9f4539680e:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

root@869f1490b50e:/# exit
exit
root@ecs-ffef-0006:~# 

注意第三行中 root@ecs-ffef-0006:~# 表明我们已经退出了当期的容器,返回到当前的主机中。

启动容器(后台模式)

使用以下命令创建一个以进程方式运行的容器

[root@ecs-ffef-0006 ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
03921ac43af4edc9cc2a94d16e75383a979de9dc156aeabeaaa46a93c6b9fc06

-c:是执行命令
-d:是后台运行

在输出中,我们没有看到期望的 “hello world”,而是一串长字符
03921ac43af4edc9cc2a94d16e75383a979de9dc156aeabeaaa46a93c6b9fc06

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:

[root@ecs-ffef-0006 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
03921ac43af4        ubuntu:15.10        "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            priceless_swartz

输出详情介绍
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
在容器内使用 docker logs 命令,查看容器内的标准输出:
runoob@ecs-ffef-0006:~$ docker logs 2b1b7a428627

[root@ecs-ffef-0006 ~]# docker logs 03921ac43af4
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

runoob@ecs-ffef-0006:~$ docker logs amazing_cori

runoob@ecs-ffef-0006:~$ docker logs priceless_swartz
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

停止执行的容器

我们使用 docker stop 命令来停止容器:

[root@ecs-ffef-0006 ~]# docker stop magical_swartz

在这里插入图片描述
通过 docker ps 查看,容器已经停止工作:

docker ps

在这里插入图片描述

你可能感兴趣的:(docker)