获取镜像
默认情况下,使用docker pull命令,会从官方的Docker Hub库中将镜像拉取到本地。
首先介绍这条命令的格式:
docker pull [OPTIONS] <仓库名>:<标签>
其中,
docker pull:Docker拉取镜像的命令关键词;
[OPTIONS]:命令选项;
仓库名:仓库名的格式一般为<用户名>/<软件名>。对于Docker Hub,如果不指定用户名,则默认为library,即官方镜像;
标签:标签是区分镜像不同版本的一个重要参数,<仓库名>:<标签>会唯一确定一个镜像。默认为latest。
例如,我们要从Docker Hub官方仓库拉取一个Ubuntu 14.04的官方镜像,其语句如下:
docker pull ubuntu:14.04
启动一个容器
在拉取到一个镜像之后,也就为容器准备了运行环境。下面我们将介绍如何使用镜像启动一个容器。
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
第一种方式:新建并启动。
docker run命令会基于指定的镜像创建一个容器并且启动它。docker run的基本语法如下:
docker run [OPTIONS] 镜像名 [COMMAND] [ARG]
其中,
docker run: Docker创建并启动容器的命令关键词;
OPTIIONS: 命令选项,最常用的包括-d后台运行容器并返回容器ID,-i以交互模式运行容器,-t为容器分配一个伪输入终端,–name 指定启动容器的名称。更多选项请参考Docker帮助文档;
镜像名: 以<仓库名>:<标签>的方式来指定;
COMMAND: 设置启动命令,该命令在容器启动后执行;
ARG: 其他一些参数。
docker run实例一
创建并启动一个容器,容器中具有ubuntu的运行环境,输出hello docker。
docker run ubuntu:14.04 echo 'hello docker'
docker run实例二
创建并启动一个容器,容器中具有ubuntu的运行环境,容器名为firstContainer,为容器分配一个终端,与用户进行交互。
docker run -it --name firstContainer ubuntu /bin/bash
这里如果报错,那么-it去掉
第二种方式:启动一个已经终止的容器
虽然Docker容器是非常轻量的,这意味着一般情况下,我们在启动完容器并完成操作之后都会将容器删除掉。但是有些时候我们会进入之前创建的容器,而docker run每次都会创建一个新容器,显然不符合我们的需求。这种时候,可以使用docker start命令,使用容器名或者容器id启动一个已经终止的容器。
docker start [OPTIONS] 容器 [容器2...]
其中:
docker start: Docker启动容器的命令关键词;
OPTIIONS: 命令选项;
容器: 需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。
假设一个名为firstContainer的容器处于终止状态,现在需要将它启动,可以这么做:执行docker start firstContainer,命令执行后,尝试启动firstContainer容器,并执行该容器的启动命令。
但是如果想启动第一个实例创建的容器,既不知道容器的名字(因为我没有指定)而且也不知道它的id。该怎么办呢?
查看容器信息
Docker中有这样一条命令docker ps,可以查看容器的信息,包括容器ID,基础镜像,启动命令,创建时间,当前状态,端口号,容器名字。
如果不加任何参数,只执行docker ps,将会显示所有运行中的容器。例如执行docker ps,如下图所示,在当前的Docker环境中,只有一个正在运行的容器,它的容器Id是fe263c9359dd,基于ubuntu:latest镜像,启动命令为“/bin/bash”,创建时间为2分钟之前,当前状态为“Up 2 minutes”,也就是已经运行了2分钟了,容器名为:firstContainer。
使用docker stop停止一个容器
docker stop可以用来终止一个正在运行的容器。它的命令格式如下:
docker stop [OPTIONS] Container [Container ...]
其中:
docker stop: Docker停止容器的命令关键词;
OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;
Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。
#!/bin/bash
#注意如果想在右侧使用命令行模拟操作,请先输入
#service docker start
#否则将不能执行docker命令
#以ubuntu镜像为基础,创建并在后台启动了一个名为firstContainer的容器(-d看不懂没关系,下一关会介绍的)
#拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
docker run -itd --name firstContainer ubuntu /bin/bash
#将firstContainer容器停止!
#********** Begin *********#
docker stop firstContainer
#********** End **********#
使容器在后台运行
因为本关要使用docker run -d命令,所以在本关的开始,将花费少量篇幅介绍这条命令。
有些时候,需要让容器在后台运行而不是直接把“启动命令”的结果输出在当前宿主机下。此时,可以通过添加-d参数来实现。
举个例子,假如不使用-d参数执行下面这条命令:
ker run ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
那么会一直在控制台输出hello world
下面是进入容器的实例
要求进入正在运行的的容器的内部。具体要求如下:
进入一个名为container2的容器内部,并在容器内部创建一个1.txt文件。
#注意如果想在右侧使用命令行模拟操作,请先输入
#service docker start
#否则将不能执行docker命令
#基于ubuntu镜像创建并在后台启动一个名为container2的容器
#拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
docker run -itd --name container2 ubuntu /bin/bash
#由于测试环境不允许从终端输入,所以请使用docker exec完成任务
#********** Begin *********#
docker exec container2 touch 1.txt
#********** End **********#