Docker Hello 法式员

Docker 许可你在容器内运转利用法式, 利用 docker run 号令来在容器内运转一个利用法式。

输入Hello 法式员

jishudaxue@jishudaxue:~$ docker run ubuntu:15.10 /bin/echo "Hello 法式员"
Hello 法式员

各个参数剖析:

  • docker: Docker 的二进制履行文件。

  • run: 与后面的 docker 组合来运转一个容器。

  • ubuntu:15.10 指定要运转的镜像,Docker 起首从本田主机上查找镜像是不是存在,若是不存在,Docker 就会从镜像堆栈 Docker Hub 下载大众镜像。

  • /bin/echo "Hello 法式员": 在启动的容器里履行的号令

以上号令完全的意义能够诠释为:Docker 以 ubuntu15.10 镜像建立一个新容器,而后在容器里履行 bin/echo "Hello 法式员",而后输入成果。


运转交互式的容器

咱们经由过程 docker 的两个参数 -i -t,让 docker 运转的容器完成"对话"的才能:

jishudaxue@jishudaxue:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#

各个参数剖析:

  • -t: 在新容器内指定一个伪终端或终端。

  • -i: 许可你对容器内的规范输入 (STDIN) 遏制交互。

注重第二行 root@0123ce188bd8:/#,此时咱们已进入一个 ubuntu15.10 体系的容器

咱们测验考试在容器中运转号令 cat /proc/versionls别离检查以后体系的版本信息和以后目次下的文件列表

root@0123ce188bd8:/#  cat /proc/version
Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019
root@0123ce188bd8:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@0123ce188bd8:/# 

咱们能够经由过程运转 exit 号令或利用 CTRL+D 来加入容器。

root@0123ce188bd8:/#  exit
exit
root@jishudaxue:~# 

注重第三行中 root@jishudaxue:~# 标明咱们已加入了当期的容器,前往到以后的主机中。


启动容器(背景形式)

利用以下号令建立一个以历程体例运转的容器

jishudaxue@jishudaxue:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo Hello 法式员; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在输入中,咱们不看到希冀的 "Hello 法式员",而是一串长字符

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

这个长字符串叫做容器 ID,对每一个容器来讲都是独一的,咱们能够经由过程容器 ID 来检查对应的容器产生了甚么。

起首,咱们须要确认容器有在运转,能够经由过程 docker ps 来检查:

jishudaxue@jishudaxue:~$ docker ps
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10           "/bin/sh -c 'while t…"    ...

输入概况先容:

CONTAINER ID: 容器 ID。

IMAGE: 利用的镜像。

COMMAND: 启动容器时运转的号令。

CREATED: 容器的建立时候。

STATUS: 容器状况。

状况有7种:

  • created(已建立)
  • restarting(重启中)
  • running(运转中)
  • removing(迁徙中)
  • paused(停息)
  • exited(遏制)
  • dead(灭亡)

PORTS: 容器的端口信息和利用的毗连范例(tcp\udp)。

NAMES: 主动分派的容器称号。

在宿主主机内利用 docker logs 号令,检查容器内的规范输入:

jishudaxue@jishudaxue:~$ docker logs 2b1b7a428627

jishudaxue@jishudaxue:~$ docker logs amazing_cori


遏制容器

咱们利用 docker stop 号令来遏制容器:

经由过程 docker ps 检查,容器已遏制任务:

jishudaxue@jishudaxue:~$ docker ps

能够看到容器已不在了。

也能够用上面的号令来遏制:

jishudaxue@jishudaxue:~$ docker stop amazing_cori