我相信经过一番折腾,小伙伴们都安装好了Docker,并且也都设置了镜像加速,好了,现在开始实践Docker吧,先来个hello world压压惊!
Docker允许你在容器内运行应用程序,使用docker run命令来在容器内运行一个应用程序,并且输出‘hello world’
//使用docker run 命令开始运行你的容器内的程序
XXXMacBook-Pro:~ XXX$ docker run ubuntu:15.10 /bin/echo "hello world"
//以下是因为没有ubuntu:15.10镜像,所以docker会在镜像仓库Docker Hub上面下载公共镜像
Unable to find image 'ubuntu:15.10' locally
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete
759aa75f3cee: Pull complete
3fa871dc8a2b: Pull complete
224c42ae46e7: Pull complete
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
//好了,下载好之后,开始运行并且输出'hello world'
hello world
各个参数解析
- docker:Docker的二进制执行文件
- run:和前面的docker组合起来运行一个容器
- ubuntu:15.10 制定要运行的镜像,首先会在本地找镜像,如果找不到,就会在公共镜像仓库中下载公共镜像
- /bin/echo “hello world”:这个表示在启动的容器里面运行的命令
运行交互式的容器
通过docker的两个参数-i、-t,让docker运行的容器实现对话能力:
XXXMacBook-Pro:~ XXX$ docker run -i -t ubuntu:15.10 /bin/bash
root@97dae4550f62:/#
参数解析
- -t:在新容器内指定一个终端或者伪终端
- -i:允许你对容器内的标准输入(STDIN)进行交互
注意第二行的“root@97dae4550f62:/# ”表示我们已经进入了一个ubuntu15.10 系统的容器
尝试在容器中运行命令“cat/proc/version”和“ls”分别查看当前系统的版本信息和当前目录下的文件列表
root@97dae4550f62:/# cat /proc/version
Linux version 4.9.184-linuxkit (root@a8c33e955a82) (gcc version 8.3.0 (Alpine 8.3.0) ) #1 SMP Tue Jul 2 22:58:16 UTC 2019
root@97dae4550f62:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
可以使用exit命令或者使用ctrl+d退出容器,当出现以下字样,表示已经退出容器了
root@runoob:~#
启动容器
使用以下命令可以创建一个以进程的方式运行的容器
XXXMacBook-Pro:~ XXX$ docker run -d ubuntu:15.10 /bin/sh -c'while true; do echo hello world; sleep 1; done'
abadb60d4961b65f08515437293080b7b04524b9729cd39ba76d187a3dcf712f
在输出中,并没有看到期望的“hello world”,而是一长串的字符,这个字符串是容器的ID,对每个容器来说都是唯一的,可以通过容器的ID来查看容器内发生了什么事情
首先确定容器是否在运行,通过docker ps来查看:
XXXMacBook-Pro:~ XXX$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
144d86713fba ubuntu:15.10 "/bin/sh -c 'while t…" 20 seconds ago Up 19 seconds
输出详情解析:
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的镜像。
- COMMAND: 启动容器时运行的命令。
- CREATED: 容器的创建时间。
- STATUS: 容器状态。
状态包括:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
- PORTS:容器的端口信息和使用的连接类型(tcp/udp)
- NAMES:自动分配的容器名称
运行docker logs可以查看容器内的标准输出:
XXXMacBook-Pro:~ XXX$ docker logs 144d86713fba
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
停止容器
使用docker stop来停止当前运行的容器:
XXXMacBook-Pro:~ XXX$ docker stop 144d86713fba
144d86713fba
//查看容器的运行状态,看到容器已经停止工作了
XXXMacBook-Pro:~ XXX$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
shbdeMacBook-Pro:~ geohey$