获取一个镜像
Docker是通过加载镜像来运行的,镜像可以自己制作,也可以 从Docker Hub上获取,Docker Hub是Docker官方的Registry(镜像管理系统),https://hub.docker.com/ 可以自己到官网查看。从官网获取镜像比较慢,我们也可以自己搭建Registry,这个我们后面会讲到。我们先看一下如何从Docker Hub上获取一个镜像。
ubuntu@ubuntu:~$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a3ed95caeb02: Pull complete
196355c4b639: Pull complete
Digest: sha256:381f21e4c7b3724c6f420b2bcfa6e13e47ed155192869a2a04fa10f944c78476
Status: Downloaded newer image for centos:latest
下载速度要看大家的网速了,毕竟是从国外下载,需要耐心等待一会。国内还没有合适的Registry,阿里搭了一个,但主要是宣传自己产品的,其它镜像也是链接自Docker Hub。
如何查看我们刚下载的镜像
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest d0e7f81ca65c 6 days ago 196.6 MB
我们看到这个镜像来自 centos 仓库, 标签是 latest ,镜像ID是 d0e7f81ca65c,创建于6天前,大小是196.6MB。
关于镜像我们会在后面做详细介绍,这里只要能下载成功即可。
运行第一个镜像
按照国际惯例我们使用Docker输出“Hello World!”:
ubuntu@ubuntu:~$ docker run centos echo "Hello World"
Hello World
我们看到容器运行完就自动退出了,如果我们想看一下容器里面是什么样怎么办呢?
ubuntu@ubuntu:~$ docker run -i -t centos /bin/bash
[root@a3d7b15ae4be /]# echo "Hello World"
Hello World
[root@a3d7b15ae4be /]# whoami
root
[root@a3d7b15ae4be /]# exit
exit
ubuntu@ubuntu:~$
我们会发现在容器内运行命令跟ssh到一台主机上非常类似,但Docker的启动速度是非常快的,官方声称是不到1秒,确实这是Docker的一大优势。
要退出当前容器使用exit命令即可。
查看容器状态
docker ps 查看正在运行的容器
ubuntu@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8cab60c8b548 centos "/bin/bash" 5 seconds ago Up 4 seconds cranky_kilby
docker ps -a 查看所有运行过的容器
ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8cab60c8b548 centos "/bin/bash" 57 seconds ago Up 56 seconds cranky_kilby
20af5b40566a centos "echo Hello" About a minute ago Exited (0) About a minute ago focused_varahamihira
a3d7b15ae4be centos "/bin/bash" 3 minutes ago Exited (0) 3 minutes ago compassionate_kilby
关闭容器
ubuntu@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6f3d3bee4f9 centos "/bin/bash" 9 seconds ago Up 8 seconds test
ubuntu@ubuntu:~$ docker stop test
test
ubuntu@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fefab308bb91 centos "/bin/bash" 7 seconds ago Up 6 seconds focused_leakey
ubuntu@ubuntu:~$ docker stop fefa
fefa
如果容器在后台运行,可以使用docker stop关闭,后面的参数可以跟容器名也可以是容器ID,容器ID比较长可以只写前几位。
删除容器
容器退出后并不会自动删除,如果想要删除已经退出的容器,可以使用docker rm 命令,后面参数可以是容器名或容器ID。
ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fefab308bb91 centos "/bin/bash" About a minute ago Exited (137) About a minute ago focused_leakey
b6f3d3bee4f9 centos "/bin/bash" 3 minutes ago Exited (137) 2 minutes ago test
8cab60c8b548 centos "/bin/bash" 6 minutes ago Exited (137) 4 minutes ago cranky_kilby
20af5b40566a centos "echo Hello" 7 minutes ago Exited (0) 7 minutes ago focused_varahamihira
a3d7b15ae4be centos "/bin/bash" 9 minutes ago Exited (0) 9 minutes ago compassionate_kilby
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ docker rm fefa
fefa
ubuntu@ubuntu:~$ docker rm test
test
ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8cab60c8b548 centos "/bin/bash" 8 minutes ago Exited (137) 5 minutes ago cranky_kilby
20af5b40566a centos "echo Hello" 8 minutes ago Exited (0) 8 minutes ago focused_varahamihira
a3d7b15ae4be centos "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago compassionate_kilby
一个一个的删除还是比较麻烦,如果想删除所有退出的容器,可以使用如下命令。
ubuntu@ubuntu:~$ docker rm -v $(docker ps -aq -f status=exited)
8cab60c8b548
20af5b40566a
a3d7b15ae4be
ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ubuntu@ubuntu:~$