Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
输出Hello world
docker run ubuntu:15.10 /bin/echo "Hello World"
可以看到这里如果没有对应的ubuntu:15.10会自己进行pull
执行参数解释
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。
我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
root@fb9f4539680e:/#
各个参数解析
注意第二行 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