容器的启动和操作

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 在本实验介绍如何创建用并操作一个可以有实际功能的ubuntu容器。

容器的启动和操作


1. 创建相关实验资源

开始实验之前,您需要先创建ECS实例资源。

  • 在体验实验室,单击创建资源。
  • (可选)在实验室⻚⾯左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、⽤户信息等)。

说明:资源创建过程需要1~3分钟。


2. 容器的分步骤启动流程

镜像拉取到本地之后并不能直接运行,如果要启动容器,我们需要首先根据镜像创建容器。接下来我们将学习如何创建容器并启动ubuntu容器。

  1. 创建ubuntu容器

我们可以使用docker create命令,利用下载好的ubuntu镜像创建容器。注意:因为我们要创建一个可以持久运行的ubuntu容器,因此需要添加-it参数。

docker create -it ubuntu

容器创建成功之后,可以使用docker ps命令查看现有的容器,注意:如果docker ps默认只会显示正在运行的容器。如果想查看所有状态的容器,需要添加-a参数。

docker ps -a

  1. 创建指定名称的容器

在上一步的执行docker ps -a的返回结果中。CONTAINER ID表示系统为容器创建的ID,IMAGE为容器的镜像名称。STATUS表示容器当前的状态。NAMES为容器的名称。使用默认的docker create命令所创建的容器并没有指定名称,因此docker会为容器生成一个随机的名字。如果用户想创建指定名称的容器,则可以使用--name参数。注意如果用户制定了容器名,则要注意容器不要重名,否则会创建失败。

docker create -it --name ubuntu-1 ubuntu
docker ps -a

  1. 启动ubuntu容器

当容器创建好之后,我们就可以通过docker start命令来启动容器,容器启动成功后通过docker ps命令可以查看到容器状态的变化。在这里我们要注意:同一个镜像创建的多个容器之间是不相关的。

docker start ubuntu-1
docker ps -a


3. 容器的快速启动方式

在上一个小节中我们介绍了docker容器创建的标准流程。而在实际操作过程中,使用标准步骤创建启动容器会比较繁琐,因此docker提供了更加简便的命令docker run。使用该命令时,docker会自动完成下载镜像,创建容器,启动容器的工作。

  1. 创建容器指定名称的容器

通过以下的一条命令,我们就可以完成下载busybox的容器镜像,创建名为busybox-1的容器,为了让容器可以在创建之后长期运行我们要使用-it参数,为了让容器在启动之后再后台运行,我们需要使用-d参数。在容器启动之后我们使用docker ps命令查询正在运行的容器。

docker run -itd --name ubuntu-2 ubuntu
docker ps -a

  1. 操作已经创建的容器

使用-d参数创建容器之后,容器在后台运行,前台的命令行仍然指向宿主机。为了能狗通过命令行操作容器,我们可以使用docker exec命令在ubuntu-2容器上启动bash控制台程序,从而对容器进行操作。

docker exec -it ubuntu-2 bin/bash

命令执行之后提示行提示符发生了改变。这说明当前用户所操作的已经是容器中的操作系统。

  1. 创建一次性容器

上面我们为大家介绍的常见的容器创建方法,如果用户在使用docker run创建容器的时候,如果不使用-d参数。则启动容器成功之后,会自动进入容器操作系统控制台。但是此种方法进入容器操作系统之后,如果使用exit退出,容器会被关闭。因此此种方法只适用通过容器中执行一些临时性的操作时使用。

接下来我们创建一次性容器,并且在一次性容器退出之后使用docker ps -a查看容器,当我们使用docker ps时,只会列出正在运行的容器,而使用了-a参数之后,会列出包括了正在运行的和已经退出了的各种状态的容器。

docker run -it --name temp ubuntu
exit
docker ps -a


4. 为容器安装命令行工具

  1. 启动容器并测试常用命令

首先用docker run创建一个新的ubuntu容器并启动

docker run -it --name ubuntu-3 ubuntu

接下来再通过lsb_release查看操作系统的状态。会显示命令无法找到,原因是通过容器安装的ubuntu属于极简版本,没有安装非必要的命令。为了能在容器虚拟机中执行常用的操作

lsb_release

  1. 在容器中安装命令

对于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

说明:在安装依赖的过程中,会出现时区设置界面。此时我们可以输入670选择亚洲,上海区

在容器中体验安装命令后,使用exit退出容器继续下面操作。

  1. 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编辑器时:

  1. 需要先按i键进入编辑模式。
  2. 编辑完成之后按esc退出编辑模式。
  3. 然后按大写的ZZ保存并退出vi。
ifconfig
vi a.txt

体验完busybox镜像的使用后,我们执行exit退出继续下面操作。


5. 查看容器系统信息

上一小节我们带大家学习了如何启动一个容器,当容器启动之后会作为轻量级的虚拟机在本地进行运行。本小节我们将学习如何在控制台操作作为虚拟机的容器。

  1. 查看宿主机信息

为了对比容器和宿主机,我们先用lsb_release -a命令查看宿主操作系统

lsb_release -a

接下来我们再用ifconfig命令查看宿主机网络信息。

ifconfig

  1. 查看容器信息

当上述命令安装好之后,我们就可以查看容器操作系统的状态和网络状态了。查询后发现和宿主机的信息已经不同。说明我们的控制台已经在容器操作系统中了。

lsb_release -a

我们接下来在查看容器的IP地址,(注意和宿主机网络信息的对比)

ifconfig

点击文档上方云产品资源,即可查看当前宿主机网络信息。

实验链接:https://developer.aliyun.com/adc/scenario/64f8e1fe9df54d4295f46eccf32cca44


相关文章
|
4月前
|
存储 C++ 容器
c++vector容器-赋直操作讲解
c++vector容器-赋直操作讲解
373 0
|
3月前
|
存储 算法 编译器
8.STL中Vector容器的常见操作(附习题)
8.STL中Vector容器的常见操作(附习题)
|
2月前
|
缓存 Serverless 容器
函数计算操作报错合集之在创建容器时遇到报错,如何处理
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
3月前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
71 10
|
2月前
|
API 开发工具 数据安全/隐私保护
阿里云云效操作报错合集之流水线镜像已经生成,但容器没有出现,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
2月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用合集之流水线创建时,不想选择节点和容器,该如何操作
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
算法 C++ 容器
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
121 0
|
4月前
|
存储 索引 Python
Python数据容器的切片操作详解
Python数据容器的切片操作详解
35 1
|
3月前
|
Docker 容器
Docker镜像、容器操作
Docker镜像、容器操作
|
4月前
|
监控 Java Serverless
Serverless 应用引擎操作报错问题之有个容器一直重启如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。