容器的启动和操作
1. 创建相关实验资源
开始实验之前,您需要先创建ECS实例资源。
- 在体验实验室,单击创建资源。
- (可选)在实验室⻚⾯左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、⽤户信息等)。
说明:资源创建过程需要1~3分钟。
2. 容器的分步骤启动流程
镜像拉取到本地之后并不能直接运行,如果要启动容器,我们需要首先根据镜像创建容器。接下来我们将学习如何创建容器并启动ubuntu容器。
- 创建ubuntu容器
我们可以使用docker create命令,利用下载好的ubuntu镜像创建容器。注意:因为我们要创建一个可以持久运行的ubuntu容器,因此需要添加-it参数。
docker create -it ubuntu
容器创建成功之后,可以使用docker ps命令查看现有的容器,注意:如果docker ps默认只会显示正在运行的容器。如果想查看所有状态的容器,需要添加-a参数。
docker ps -a
- 创建指定名称的容器
在上一步的执行docker ps -a的返回结果中。CONTAINER ID表示系统为容器创建的ID,IMAGE为容器的镜像名称。STATUS表示容器当前的状态。NAMES为容器的名称。使用默认的docker create命令所创建的容器并没有指定名称,因此docker会为容器生成一个随机的名字。如果用户想创建指定名称的容器,则可以使用--name参数。注意如果用户制定了容器名,则要注意容器不要重名,否则会创建失败。
docker create -it --name ubuntu-1 ubuntu docker ps -a
- 启动ubuntu容器
当容器创建好之后,我们就可以通过docker start命令来启动容器,容器启动成功后通过docker ps命令可以查看到容器状态的变化。在这里我们要注意:同一个镜像创建的多个容器之间是不相关的。
docker start ubuntu-1 docker ps -a
3. 容器的快速启动方式
在上一个小节中我们介绍了docker容器创建的标准流程。而在实际操作过程中,使用标准步骤创建启动容器会比较繁琐,因此docker提供了更加简便的命令docker run。使用该命令时,docker会自动完成下载镜像,创建容器,启动容器的工作。
- 创建容器指定名称的容器
通过以下的一条命令,我们就可以完成下载busybox的容器镜像,创建名为busybox-1的容器,为了让容器可以在创建之后长期运行我们要使用-it参数,为了让容器在启动之后再后台运行,我们需要使用-d参数。在容器启动之后我们使用docker ps命令查询正在运行的容器。
docker run -itd --name ubuntu-2 ubuntu docker ps -a
- 操作已经创建的容器
使用-d参数创建容器之后,容器在后台运行,前台的命令行仍然指向宿主机。为了能狗通过命令行操作容器,我们可以使用docker exec命令在ubuntu-2容器上启动bash控制台程序,从而对容器进行操作。
docker exec -it ubuntu-2 bin/bash
命令执行之后提示行提示符发生了改变。这说明当前用户所操作的已经是容器中的操作系统。
- 创建一次性容器
上面我们为大家介绍的常见的容器创建方法,如果用户在使用docker run创建容器的时候,如果不使用-d参数。则启动容器成功之后,会自动进入容器操作系统控制台。但是此种方法进入容器操作系统之后,如果使用exit退出,容器会被关闭。因此此种方法只适用通过容器中执行一些临时性的操作时使用。
接下来我们创建一次性容器,并且在一次性容器退出之后使用docker ps -a查看容器,当我们使用docker ps时,只会列出正在运行的容器,而使用了-a参数之后,会列出包括了正在运行的和已经退出了的各种状态的容器。
docker run -it --name temp ubuntu exit
docker ps -a
4. 为容器安装命令行工具
- 启动容器并测试常用命令
首先用docker run创建一个新的ubuntu容器并启动
docker run -it --name ubuntu-3 ubuntu
接下来再通过lsb_release查看操作系统的状态。会显示命令无法找到,原因是通过容器安装的ubuntu属于极简版本,没有安装非必要的命令。为了能在容器虚拟机中执行常用的操作
lsb_release
- 在容器中安装命令
对于ubuntu镜像的容器,我们可以使用apt-get命令来安装常用命令。接下来我们使用apt-get install来安装lsb_release, ifconfig,vim三个工具。需要注意的在使用apt-get install之前,需要首先使用apt-get udpate来更新本地资源库。另外就是此步骤受网络速度影响可能会有比大的延迟。
apt-get update apt-get install -y lsb-core net-tools vim --fix-missing
说明:在安装依赖的过程中,会出现时区设置界面。此时我们可以输入6,70选择亚洲,上海区
在容器中体验安装命令后,使用exit退出容器继续下面操作。
- busybox镜像的使用
在docker中,传统的ubuntu或者centos镜像所包含的命令数量都非常少,每次使用时都需要手动安装相关命令非常不方便,因此在实际使用docker时,我们经常使用busybox镜像来作为基础镜像。
接下来我们尝试创建busybox镜像,要注意的时,为了保证镜像体积,busybox镜像中并不包括bash命令,而是使用了替代的sh命令。因此我们创建busybox镜像的命令也需要做调整。
docker run -itd --name busybox-1 busybox docker exec -it busybox-1 sh
容器创建成功之后,我们尝试ifconfig和vi命令发现已经内置在容器之中,不过需要注意的时busybox镜像并没有包含apt-get或者yum等自动包安装工具。因此和ubuntu或者centos镜像相比,安装新工具会比较繁琐。
注意使用vi编辑器时:
- 需要先按i键进入编辑模式。
- 编辑完成之后按esc退出编辑模式。
- 然后按大写的ZZ保存并退出vi。
ifconfig vi a.txt
体验完busybox镜像的使用后,我们执行exit退出继续下面操作。
5. 查看容器系统信息
上一小节我们带大家学习了如何启动一个容器,当容器启动之后会作为轻量级的虚拟机在本地进行运行。本小节我们将学习如何在控制台操作作为虚拟机的容器。
- 查看宿主机信息
为了对比容器和宿主机,我们先用lsb_release -a命令查看宿主操作系统
lsb_release -a
接下来我们再用ifconfig命令查看宿主机网络信息。
ifconfig
- 查看容器信息
当上述命令安装好之后,我们就可以查看容器操作系统的状态和网络状态了。查询后发现和宿主机的信息已经不同。说明我们的控制台已经在容器操作系统中了。
lsb_release -a
我们接下来在查看容器的IP地址,(注意和宿主机网络信息的对比)
ifconfig
点击文档上方云产品资源,即可查看当前宿主机网络信息。
实验链接:https://developer.aliyun.com/adc/scenario/64f8e1fe9df54d4295f46eccf32cca44