【云原生|Docker系列第4篇】Docker的容器的入门实践

news2024/11/28 8:46:54

在这里插入图片描述

欢迎来到云原生系列的第4篇博客!在前面的两篇博客中,我们已经学习了Docker镜像的基本概念和入门实践。本篇博客将带您深入了解Docker容器,探索如何使用Docker容器来构建、运行和管理应用程序。无论您是新手还是有一定经验的开发者,通过本篇博客的实践指导,您将能够更加熟悉和掌握Docker容器的使用。

目录

  • 1. Docker容器的基本概念回顾
    • 1.1 Docker容器的特点
  • 2. Docker容器的创建与启动
  • 3. 守护态运行
  • 4. 终止容器
  • 5. 进入容器
    • 5.1 attach 命令
    • 5.2 exec 命令
    • 5.2.1 -i -t 参数
  • 6. 查看容器列表
  • 7. 导出和导入
    • 7.1 导出容器
    • 7.2 导入容器快照
  • 7.3 删除容器
  • 总结

1. Docker容器的基本概念回顾

在开始探索Docker容器的实践之前,让我们简要回顾一下Docker容器的基本概念。Docker容器是基于Docker镜像创建的实例,它是一个独立、隔离的运行环境。每个容器都包含了运行应用程序所需的一切,包括文件系统、系统工具、库以及配置等。容器化技术的出现使得应用程序的开发、测试和部署更加灵活、高效。

1.1 Docker容器的特点

  • 隔离性:Docker容器提供了强大的隔离性,每个容器都是相互隔离的运行环境,互不影响。
  • 轻量级:相比传统的虚拟机,Docker容器更轻量级,启动和停止速度更快。
  • 可移植性:Docker容器可以在不同的主机和环境中运行,无需关注底层操作系统的差异。
  • 易于管理:容器可以通过命令行或者Docker客户端进行管理,如启动、停止、重启和删除等。

2. Docker容器的创建与启动

所需要的命令主要为 docker run。
例如,下面的命令输出一个 “Hello World”,之后终止容器。

$ docker run ubuntu:18.04 /bin/echo 'Hello world'
# Hello world

在这里插入图片描述

3. 守护态运行

更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
下面举两个例子来说明一下。
如果不使用 -d 参数运行容器。

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

在这里插入图片描述

容器会把输出的结果 (STDOUT) 打印到宿主机上面
如果使用了 -d 参数运行容器。

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

此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

docker container logs [container ID or NAMES]

在这里插入图片描述

4. 终止容器

可以使用docker container stop 来终止一个运行中的容器。
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。
例如对于上一章节中只启动了一个终端的容器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。
例:

docker container stop 2d893c6294df604c3fd8f0e25e6975c0328fa6c65dcd763dab162e11dc281cfd

终止状态的容器可以用 docker container ls -a 命令看到。例如

$ docker container ls -a
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS                          PORTS               NAMES
ba267838cc1b        ubuntu:18.04             "/bin/bash"            30 minutes ago      Exited (0) About a minute ago                       trusting_newton

在这里插入图片描述
此外,docker container restart 命令会将一个运行态的容器终止,然后再重新启动它。

5. 进入容器

某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。

5.1 attach 命令

$ docker run -dit ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
243c32535da7        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           nostalgic_hypatia

$ docker attach 243c
root@243c32535da7:/#

5.2 exec 命令

5.2.1 -i -t 参数

docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

$ docker exec -it 69d1 bash
root@69d137adef7a:/#

也可以刚运行容器时直接进来

docker run -it ubuntu:latest /bin/bash

在这里插入图片描述

6. 查看容器列表

要查看正在运行的容器列表,可以使用docker ps命令。该命令将显示容器的ID、镜像名称、创建时间、运行状态等信息。

docker ps

在这里插入图片描述
如果需要查看包括已停止的容器在内的所有容器,可以使用docker ps -a命令。
也可以在Docker客户端上查看:
在这里插入图片描述

7. 导出和导入

7.1 导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a813g370e        ubuntu:17.04        "/bin/bash"         21 hours ago        Exited (0) 11 hours ago                       test
$ docker export 7691a813g370e > ubuntu.tar

这样将导出容器快照到本地文件。

7.2 导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,例如

$ cat ubuntu.tar | docker import - dev/ubuntu:v2.0
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
dev/ubuntu         v2.0                9d37a608a97        About a hour ago   143.3 MB

7.3 删除容器

要删除一个已停止的容器,可以使用docker rm命令,并指定容器的ID或者名称。

docker rm <容器ID或名称>

总结

通过本篇博客的实践指导,我们深入了解了Docker容器的创建、运行、交互、管理和数据管理。Docker容器提供了一种轻量级、隔离的运行环境,使得应用程序的开发和部署更加灵活和高效。无论是开发人员还是运维人员,通过掌握Docker容器的使用,我们可以更好地构建、运行和管理应用程序。

希望本篇博客对您理解和使用Docker容器起到了很好的指导作用。在接下来的博客中,我们将进一步探索Docker的更多功能和应用场景,帮助您更好地利用云原生技术构建和部署应用程序。继续关注我们的云原生|Docker系列,带您进入云原生的精彩世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/769433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP循环

PHP while 循环 PHP SwitchPHP For 循环 PHP while 循环在指定条件为 true 时执行代码块。 PHP 循环 在您编写代码时&#xff0c;经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务&#xff0c;而不是在脚本中添加若干几乎相等的代码行。 在 PHP 中&#xff…

linux安装mysql以及使用navicat连接mysql

目录 一、下载mysql 二、安装mysql 三、使用Navicat连接MySQL 四、常见问题 1、启动服务时报错 Failed to start mysql.service: Unit not found. 的解决方法。 2、登录过程出现&#xff1a;access denied for user’root’‘localhost’(using password:Yes) 的解决方…

Moonbeam生态说|探索Web3链游生态Seascape

「Moonbeam生态说」是Moonbeam中文爱好者社区组织的社区AMA活动。该活动为媒体和已部署Moonriver或Moonbeam的项目方提供了在主流Moonbeam非官方中文社区内介绍自己的项目信息&#xff0c;包括&#xff1a;项目介绍、团队介绍、技术优势和行业发展等&#xff0c;帮助社区内的Mo…

Spring Boot进阶(57):Spring中什么时候不要用@Autowired注入 | 超级详细,建议收藏

1. 前言&#x1f525; 注解Autowired&#xff0c;相信对于我们Java开发者而言并不陌生吧&#xff0c;在SpringBoot或SpringCloud框架中使用那是非常的广泛。但是当我们使用IDEA编辑器开发代码的时候&#xff0c;经常会发现Autowired 注解下面提示小黄线警告&#xff0c;我们把小…

Unity 任意数据在Scene窗口Debug

任意数据在Scene窗口Debug &#x1f354;效果&#x1f96a;食用方法 &#x1f354;效果 如下所示可以很方便的把需要Debug的数据绘制到Scene中&#xff08;普通的Editor脚本只能够对MonoBehaviour进行Debug&#xff09; &#x1f96a;食用方法 &#x1f4a1;. 新建脚本继承Z…

127.0.0.1/linux常用dos命令

ls 命令 LS 命令用于查看目录的内容。默认情况下&#xff0c;此命令将显示当前工作目录的内容。如果要查看其他目录的内容&#xff0c;请键入 ls&#xff0c;然后键入目录的路径。例如&#xff0c;输入 LS / 家 / 用户名 / 文档查看的内容的文件。 ls命令是文件列表命令&#…

Cisco学习笔记(CCNA)——IP Subnetting

IP Subnetting 目录 IP地址 数制的计算 IP地址的分类 特殊IPv4地址 IP地址的组成 子网掩码 IPv4网络中的地址类型 划分子网 ​编辑CIDR IP地址 网络层概念 主机唯一的标识&#xff0c;保证主机间正常通信 一种网络编码&#xff0c;用来确定网络中一个节点 IP地址…

运维:Centos7安装解压版mysql5.7

目录 1、卸载Centos7默认自带的mariadb数据库&#xff0c;避免冲突 2、下载解压版mysql并安装 3、配置mysql 4、mysql客户端访问 MySQL 是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它具有许多优点和一些缺点。以下是 MySQL 的主要优缺点&am…

【C语言+sqlite3 API接口】实现水果超市

实验内容&#xff1a; 假如我家开了个水果超市&#xff0c;有以下水果&#xff0c;想实现自动化管理&#xff0c;扫描二维码就能知道当前的水果状态&#xff0c;进货几天了&#xff0c; 好久需要再次进货&#xff0c;那些水果畅销&#xff0c;那些水果不畅销&#xff0c;那些水…

Python 算法基础篇:深度优先搜索( DFS )和广度优先搜索( BFS )

Python 算法基础篇&#xff1a;深度优先搜索&#xff08; DFS &#xff09;和广度优先搜索&#xff08; BFS &#xff09; 引言 1. 深度优先搜索&#xff08; DFS &#xff09;算法概述2. 深度优先搜索&#xff08; DFS &#xff09;算法实现实例1&#xff1a;图的 DFS 遍历实例…

理性对道德的作用是很小的

从某种程度上说&#xff0c;理性对道德的作用是很重要的。理性能够帮助我们思考和评估道德问题&#xff0c;并提供合理的解决方案。它使我们能够运用逻辑和推理能力来分析情况&#xff0c;权衡利益和后果&#xff0c;并做出更明智的决策。 理性有助于我们超越个人感受或冲动&am…

如何在医疗器械行业运用IPD?

医疗器械是指单独或者组合使用于人体的仪器、设备、器具、材料或其他物品&#xff0c;包括所需要的软件。按安全性可分为低风险器械、中风险器械和高风险器械。其中低风险器械大都属于低值耗材&#xff0c;其中包括绷带、纱布、海绵、消毒液等&#xff1b;中度风险器械类包括体…

结构型模式 - 适配器模式

概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机在当地不能直接充电。所以就需要一个插座转换器&#xff0c;转换器第1面插入当地的插座&#xff0c;第2面供…

linux之Ubuntu系列(五)用户管理 终端命令 su 切换用户

# 切换用户 zenxx:su - sup # 录入sup 密码 supxx:$ 切换root用户

增强匿名性:了解 HTTP 代理的作用

当你在浏览网页时&#xff0c;你的个人信息和上网痕迹都是暴露在公共网络之中的&#xff0c;任何人都可以轻松地获取到这些信息。而这种信息泄露不仅会威胁你的个人隐私&#xff0c;还会对你的网络安全带来潜在的风险。为了解决这个问题&#xff0c;HTTP代理应运而生。 而 IPR…

v-model指令获取常见表单项的内容 input,textarea,radio,checkbox,select

v-model指令获取常见表单项的内容 1. v-model 作用和语法2. v-model 获取常见表单项 1. v-model 作用和语法 作用: 给 表单元素 使用, 双向数据绑定 → 可以快速 获取 或 设置 表单元素内容 ① 数据变化 → 视图自动更新 ② 视图变化 → 数据自动更新语法: v-model ‘变量’ …

Day13 01-Linux介绍与安装教程

文章目录 第一章 Linux简介【了解】1.1 Linux的介绍1.2 Linux的两大阵营1.3 CentOS社区版介绍 第二章 Linux的安装【重要】2.1 VMWare&Parallels Desktop的安装2.1.1 VMWare的简介2.1.2 VMWare安装的注意事项2.1.3 Parallels Desktop的简介 2.2 VMWare安装Linux2.2.1 准备事…

UG\NX二次开发 获取工作部件的所有表达式,以及值

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取工作部件的所有表达式,以及值。 效果: 代码: #include "me.hpp" #include <iostream> #include <sstream> #include <string> //double转string保留所有小…

Vue找到package.json中没有用到依赖并删除

引言 一切都是由于强迫症&#xff0c;我想把一个Vue项目中没有用到的依赖删除掉。 解决方法 depcheck Depcheck is a tool for analyzing the dependencies in a project to see: how each dependency is used, which dependencies are useless, and which dependencies are…

高德地图实现水流效果

一、源代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>水系图</title><style>…