Docker Hello World
- Docker 允许你在容器内运行应用程序,使用 docker run 命令来在容器内运行一个应用程序,输出 hello world.
[root@docker ~]# docker run docker.io/ubuntu:latest /bin/echo "Hello World"
Hello World
- 参数解析:
- docker : Docker 的二进制执行文件。
- run : 与前面的 docker 组合来运行一个容器。
- ubuntu :latest 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令。
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
运行交互式的容器
- 我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力。
[root@docker ~]# docker run -it docker.io/mysql:latest /bin/bash
root@63933beaae18:/#
- 各个参数解析:
- -t : 在新容器内指定一个伪终端或终端。
- -i : 允许你对容器内标准输入(STDIN)进行交互。
root@63933beaae18:/# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
启动容器(后台模式)
[root@docker ~]# docker run -d docker.io/ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
8bb4e70de13ece7dfe3dd30586e78d73fbfac1d64fc0593e9656bcfe787d1d32
-
这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。首先,我们需要确认容器有在运行,可以通过 docker ps 来查看。
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8bb4e70de13e docker.io/ubuntu "/bin/sh -c 'while tr" 52 seconds ago Up 50 seconds stoic_ritchie
-
CONTAINER ID:容器ID
-
NAMES:自动分配的容器名称
[root@docker ~]# docker logs 8bb4e70de13ece7dfe3dd30586e78d73fbfac1d64fc0593e9656bcfe787d1d32
hello world
hello world
hello world
hello world
hello world
[root@docker ~]# docker logs stoic_ritchie
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
停止容器
- 使用 docker stop 命令来停止容器:
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8bb4e70de13e docker.io/ubuntu "/bin/sh -c 'while tr" 4 minutes ago Up 4 minutes stoic_ritchie
[root@docker ~]# docker stop 8b
8b
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker ~]# docker stop stoic_ritchie