Doker容器(上)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Doker容器

容器是Docker 的三大核心概念之一,使应用程序运行的基础环境,下面我们就来具体讲解一下Docker容器。


一、什么是容器

所谓容器就是镜像的一个运行实例,并且带有运行时需要的可写的文件层,其中的应用程序也处于运行状态。很多人会把容器和虚拟机相混淆,虚拟机是模拟运行一整套操作系统,虚拟机模拟的东西不管应用是否使用都会存在。容器是里运行的N个应用和应用所必需的环境,也就是说应用不需要的东西,容器是不会加入的。


二、创建容器

  1. 新建容器

新建容器一般使用 create 命令,具体语法如下:

docker [container] create

例如我们要创建ubuntu 16.04的容器,docker 命令如下:

docker create ubuntu:16.04

使用 create 命令创建的容器是出于停止状态的,可以使用 start 命令来启动,start 命令将在下一小节讲解。 create 命令参数很多,包含如下3大类:

  • 与容器运行模式相关;
  • 与容器环境配置相关;
  • 与容器资源限制和安全保护相关。

因为命令参数很多,因此这里只讲解常用的几个:


  • -i:保持标准输入打开,默认值为 false;
  • -t:是否分配一个伪终端,默认值 false;
  • -d:是否在后台运行容器,默认值 false;
  • –expose=[]:指定容器暴露出来的端口或端口范围;
  • –net="":指定容器网络模式;
  • –add-host=[]:在容器内添加一个主机名到IP地址的映射关系;
  • –device=[]:映射物理机上的设备到容器内;
  • -e:指定容器内的变量环境;
  • –ip="": 指定容器的ip v4 地址;
  • –ip6="":指定容器的ip v6 地址;
  • –link:连接到其他容器;
  • –name:容器的别名;


2.启动容器

启动容器使用 start 命令,语法如下:

docker [container] start

例如启动刚才我们创建的ubuntu容器,容器ID为 b58a44432c7b

docker start b58a44432c7b

输出结果如图:

image.png

3. 新建同时启动容器
新建容器需要用到 run 命令,语法格式如下:

docker [container] run

例如我们运行一个新ubuntu16.04 容器,并将名称命名为 new_ubuntu

docker run --name new_ubuntu ubuntu /bin/echo '你好'

执行结果如下图:

image.png

执行 run 命令会在后台执行如下操作:

  • 检查本地是否存在指定镜像,不存在就从镜像仓库下载;
  • 利用镜像创建一个容器,并启动容器;
  • 分配一个文件系统给容器,并在只读镜像层外面挂载一层可读写层;
  • 从宿主机配置的网桥接口中桥接一个虚拟机接口到容器中;
  • 从网桥地址池配置一个IP地址给容器;
  • 执行用户指定的应用程序;
  • 执行完毕后容器终止。


注1:可以使用 docker container wait container命令来等待容器退出和查看退出的返回结果

注2:某些情况下,执行 run 命令是无法正常运行,导致容器直接退出,这个时候我们可以查看推出的错误代码,下面列出常见的几种错误代码:

image.png

4. 进入守护状态
在实际开发中需要容器一直运行着,这时我们可以在 run 命令后面加上 -d 参数来实现容器的后台运行,也就是进入守护状态。例如我们创建并运行ubuntu16.04容器,并将容器一直运行,可以这么做:

docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done;"

运行命令后结果如下

image.png

5. 查看容器输出
有时我们需要查看容器内部输出的信息,这时我们就可以使用 logs 命令查看,语法如下:

docker [container] logs

这个命令常用的参数如下:

  • -details:打印详细信息;
  • -f, -follow:持续输出;
  • -since:输出从指定时间点开始的日志;
  • -tail:输出最近的日志;
  • -t, -timestamps:显示信息时间戳;
  • -until:输出指定事件之前的日志。


例如查看刚才创建的ubuntu16.04的容器的日志:

6. 重启容器
当一个容器处于运行状态,如果要重启容器需要用到 restart 命令 ,语法格式如下:

docker [container] restart

例如重启刚才创建的ubuntu16.04 容器,可以这么做:

docker restart b58a44432c7b

执行结果如下:

1.png

目录
相关文章
|
存储 容器
|
Docker 容器
|
6天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
12天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
3天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
11天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
6天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
564 17
|
5天前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
389 34