Docker(三) 容器管理

1 容器管理概述

        Docker 的容器管理可以通过 Docker CLI 命令行工具来完成。Docker 提供了丰富的命令,用于管理容器的创建、启动、停止、删除、暂停、恢复等操作。

        以下是一些常用的 Docker 容器命令:

        1、docker run:用于创建并启动一个容器。使用 docker run 命令时,可以指定容器名称、镜像名称、启动命令、挂载数据卷、网络配置等,以满足不同使用需求。

        2、docker start/stop/restart:用于启动/停止/重启一个已经创建的容器。

        3、docker rm:用于删除一个或多个容器。可以使用 docker rm -f 命令强制删除正在运行的容器。

        4、docker pause/ unpause:用于暂停/恢复一个容器。

        5、docker stats:用于查看正在运行的容器的资源使用情况。

        6、docker inspect:用于查看容器信息。

        7、docker exec:用于在正在运行的容器中执行命令。

        8、docker cp:用于从宿主机拷贝文件到容器中,或者从容器中拷贝文件到宿主机。

2 创建容器

        docker run 命令是 Docker 最重要的命令之一,用于创建并启动一个新的 Docker 容器。

        docker run 命令首先在指定的镜像上创建一个可写的容器层,然后使用指定的命令启动它。也就是说,docker run 相当于 API /containers/create 然后 /containers/(id)/start。

        下面是 docker run 命令的主要语法:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

        其中:

  • IMAGE:指定要使用的 Docker 镜像的名称或 ID
  • TAG:指定要使用的镜像的标签,默认为 latest
  • DIGEST:指定要使用的镜像的数字摘要
  • COMMAND:覆盖容器默认的启动命令
  • ARG:覆盖容器默认的启动命令的参数

        OPTIONS 包含多种参数和选项,可用于指定容器运行时的各种属性和配置,常用的参数和选项有:

  • -d, --detach:在后台运行容器
  • -it:在容器内部启动一个交互式终端
  • -p, --publish:将容器的端口发布到主机的端口
  • -v, --volume:将主机的目录或文件挂载到容器的目录
  • --name:指定容器的名称
  • -h, --hostname:可指定容器的主机名
  • -e, --env:该选项可将环境变量传递给容器,例如配置数据库密码等

3 创建和删除容器示例

        启动一个tomcat容器,在后台运行,并查看本机中正在运行的容器:

docker run -d tomcat

        停止容器:

docker stop ff89 # 容器名称/ID

        此时docker ps无法查询到容器信息。可以使用docker ps -a查看包含已停止容器在内的全部容器信息。

        可以使用docker rm命令删除一个已停止的容器:

4 进入容器的方法

        容器是一个相对隔离的运行管径,就像住宅中的一个房间,进入容器就是进入这个容器的运行环境。

        Docker提供了多种进入容器的方法:

        1、docker exec 命令:可以在运行中的容器中启动一个新进程。这种方式对于多个用户协作进行调试非常方便,也不需要停止容器,推荐使用这种方式。

        2、docker attach 命令:可以连接到后台运行的容器的标准输入、输出、错误流。attach命令可能导致docker容器意外关闭,不推荐使用。

        3、docker run 命令:可以在创建一个新的容器时启动交互终端,但是退出交互终端默认会关闭容器,需要使用特殊的命令退出才行。

5 网络端口映射

        Docker的网络端口映射是将宿主机的一个端口映射到Docker容器的一个端口,此时宿主机的这个端口就可以访问容器中运行的应用程序了。

        Docker的端口映射有两种方式:随机端口映射和固定端口映射。

        1、随机端口映射:在启动容器时可以使用-P命令配置随机端口映射,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口。

docker run -d -P tomcat # 使用-P命令需要镜像支持

        2、固定端口映射:可以在启动容器时指定宿主机端口映射到容器的端口。

docker run -d -p 8080:80 tomcat

        其中 -p 参数代表端口映射,冒号前面的数字表示宿主机端口号,冒号后面的数字表示容器端口号。

        Docker 的端口映射可以方便地在宿主机上访问容器内的应用程序,是 Docker 中非常实用的网络功能之一。

6 进入容器和网络端口映射示例

        本示例启动一个tomcat容器,并实现外部对该tomcat服务器的访问。

        首先,启动一个tomcat容器,将容器的8080端口绑定到宿主机的8080端口。

docker run --name some-tomcat -d -p 8080:8080 tomcat

        Tomcat镜像默认将欢迎页面等资源放在内部的webapps.dist文件夹中,无法被用户直接访问,需要手动进行修改。

        进入some-tomcat容器。

docker exec -it some-tomcat /bin/bash

        在容器中,将webapps.dist文件夹下的全部内容复制到webapps文件夹下。

cp -r webapps.dist/* webapps/

        然后,退出容器。

exit

        接下来,需要开放主机的8080端口,在本机使用浏览器访问主机的8080端口,查看能否看到Tomcat服务器的首页。

7 数据卷的管理

        Docker容器卷是一种用于在Docker容器和主机之间共享数据的机制。它们可以将主机文件系统的目录或文件夹挂载到容器的特定路径中,以便容器可以访问这些文件和目录。

        Docker容器卷可以通过以下方式进行管理:

        1、创建卷:可以使用docker volume create命令创建一个卷,并指定名称和其他选项。例如:docker volume create my-volume可以创建名为my-volume的空卷。

        2、挂载卷:可以使用-v选项将主机文件夹或卷挂载到容器中。例如:docker run -v /host/folder:/container/folder my-image可以将主机上的/host/folder目录挂载到容器中的/container/folder路径。

        3、查看卷:可以使用docker volume ls命令列出所有当前可用的卷,也可以使用docker volume inspect命令获取有关特定卷的详细信息。

        4、删除卷:可以使用docker volume rm命令删除特定的卷。例如:docker volume rm my-volume可以删除名为my-volume的卷。请注意,您不能删除当前正在使用的卷,必须首先从所有容器中卸载卷。

        5、自动删除卷:如果需要,您可以创建自动删除的卷。这些卷将在其中没有容器使用它们的情况下自动删除。要创建这些卷,您可以使用docker run命令的--rm选项或在docker create命令中指定--rm选项。

8 数据卷示例

        本示例演示两种较为常见的使用卷的方法:

        1、启动容器时创建挂载卷

        2、先创建卷后挂载

        接下来演示启动容器时创建挂载卷。

        首先,关闭并删除之前创建的Tomcat容器。

        然后,使用如下命令创建Tomcat容器,并将宿主机的/opt/html文件夹挂载到Tomcat容器的/usr/local/tomcat/webapps/ROOT文件夹。

docker run --name some-tomcat -d -p 8080:8080 -v /opt/html:/usr/local/tomcat/webapps/ROOT  tomcat

        接下来,在宿主机的/opt/html文件夹下新建mypage.html。

echo 'Hello Docker!' > /opt/html/mypage.html

        使用curl命令访问宿主机的8080端口,查看能否访问到mypage.html中的内容。

        接下来演示先创建卷后挂载。

        首先,关闭并删除之前创建的Tomcat容器。

        然后,创建卷:

docker volume create demo-vo # demo-vo是卷的名称

        查看卷列表:

docker volume ls

        查看卷详细信息:

docker volume inspect demo-vo

        可以看到实际的存储位置:

        使用卷创建容器:

docker run -d -p 8080:8080 -v demo-vo:/usr/local/tomcat/webapps/ROOT tomcat

        创建测试mypage.html:

echo 'Hello' > /var/lib/docker/volumes/demo-vo/_data/mypage.html

        测试:

curl localhost:8080/mypage.html

9 将容器保存为镜像

        在 Docker 中,将容器保存为镜像是非常有用的功能。这允许用户将现有的容器转换为可重用的镜像,进行分发、共享和部署。

        Docker commit命令用于将一个正在运行的容器保存为一个新的镜像。它会记录容器中的当前状态并创建一个增量镜像层,新的镜像将包含原容器中的所有修改。Docker commit 命令的语法如下:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

        OPTIONS: 可选参数。常见参数如下:

  • -a, --author: 镜像作者
  • -c, --change: 指定容器创建时的修改项
  • -m, --message: 提交镜像时的提交消息
  • -p, --pause: 在提交时暂停容器运行

        CONTAINER: 必需,容器的名称或 ID。

        REPOSITORY: 镜像仓库名称。

        TAG: 镜像版本号。

10 容器保存为镜像示例

        本示例演示创建一个安装了JDK8的rockylinux镜像。

        首先,拉取rockylinux镜像:

docker pull rockylinux:9.0

        然后,基于镜像启动容器:

docker run -it rockylinux:9.0 /bin/bash

        在容器中使用yum命令安装JDK8:

yum install -y java-17-openjdk-devel

        exit离开容器。

        使用commit命令创建本地镜像:

docker commit 6906 rockylinux-java17 # 其中3a38是容器的简写id

        查看本地镜像:

docker images

        使用新镜像创建容器,并在容器中执行java -version命令:

docker run rockylinux-java17 java -version

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拖线无人机技术:像风筝一样飞行,无人能干扰

拖线无人机技术是一种独特且高效的无人机应用技术,其设计理念源于风筝。这种无人机不仅能够在空中稳定飞行,而且具备极强的抗干扰能力,使其在各种复杂环境下都能保持通信畅通和任务执行的高效。 拖线无人机技术的核心在于其拖线系统。与传统的…

springboot实现多开发环境匹配置

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

从 0 开始实现一个博客系统 (SSM 项目)

相关技术 Spring Spring Boot Spring MVC MyBatis Html Css JS pom 文件我就不放出来了, 之前用的 jdk8 做的, MySQL 用的 5.7, 都有点老了, 你们自己看着配版本就好 实现功能 用户注册 - 密码加盐加密 (md5 加密)前后端用户信息存储 - 令牌技术用户登录 - (使用 拦截…

打造高质感的电子画册,这篇文章告诉你

​在数字化时代&#xff0c;电子画册作为一种全新的视觉传达方式&#xff0c;正逐渐成为各行各业展示形象、传播信息的重要工具。相较于传统的纸质画册&#xff0c;电子画册具有更高的质感、更好的互动性以及更低的制作成本&#xff0c;使得它愈发受到众多企业的青睐。那样怎么…

多电压档hold扫尾

MMMC下STA收敛更为困难&#xff0c;setup通过DMSA可以很好的得到收敛&#xff1b;但是常规的时序修复工具很难通过工具得到最终clean的时序状态&#xff0c;本文介绍一种多模多角下hold的收敛方法。 该方法主要通过遍历hold路径上多电压setup的余量&#xff0c;支持从前往后和从…

uniapp 使用vuex 在app上能获取到state,小程序获取不到

1. 在根目录下新建store目录, 在store目录下创建index.js定义状态值import Vue from vue; import Vuex from Vuex; import Vuex from vuex; Vue.use(Vuex);const store new Vuex.Store({ state: { login: false, token: , avatarUrl: , userName: }, mutations: { lo…

HiWoo Box工业网关

在科技飞速发展的今天&#xff0c;工业领域正迎来智能化变革。在这场变革中&#xff0c;工业网关作为连接工业设备与远程控制中心的桥梁&#xff0c;发挥着至关重要的作用。HiWoo Box网关凭借其卓越的性能和广泛的应用场景&#xff0c;为工业领域带来了全新的智慧化解决方案。 …

IP地址SSL证书应用场景以及如何申请?

一&#xff1a;IP地址SSL证书主要应用于以下几种场景&#xff1a; 1.API接口保护&#xff1a;许多云服务和企业内部系统使用IP地址直接作为服务的访问点&#xff0c;特别是在API接口的调用中。IP地址SSL证书可以为这些API接口提供必要的安全加密&#xff0c;确保数据在传输过程…

44、Flink 的 Interval Join 详解

Interval Join Interval join 组合元素的条件为&#xff1a;两个流&#xff08;暂时称为 A 和 B&#xff09;中 key 相同且 B 中元素的 timestamp 处于 A 中元素 timestamp 的一定范围内&#xff0c;即 b.timestamp ∈ [a.timestamp lowerBound; a.timestamp upperBound] 或…

代码随想录算法训练营day21|530.二叉搜索树的最小绝对值差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

二叉搜索树的最小绝对值差 递归法 首先需考虑这是一个二叉搜索树&#xff0c;在中序遍历后的结果为从小到大的一个序列&#xff0c;寻找二叉搜索树的最小绝对值差&#xff0c;只需比较一个节点与之后的差值即可。在遍历的过程中&#xff0c;我们需要一个节点保存前节点…

[IMX6ULL驱动开发]-Linux对中断的处理(二)

上一篇文章中&#xff0c;引入了Linux对于中断的一些简略流程以及中断抽象为具体实际形象。此文章主要是继续加深对Linux对中断的处理流程以及一些相应的数据结构。 目录 Linux对中断的扩展&#xff1a;硬件中断、软件中断 多中断处理 中断上下部处理流程 发生中断A&#…

Liunx学习随笔

Linux学习随笔 Linux学习随笔一.前期准备1.安装Vmware Workstation软件2.下载linux镜像3.安装操作系统4.配置静态ip5.下载安装远程连接工具 二.语法2.1 linux哲学思想(原则)2.2 小命令 夕阳无限好&#xff0c;只是近黄昏&#xff0c;时隔一年&#xff0c;重新提笔 没有比脚更远…

vue3+arco design通过动态表单方式实现自定义筛选

目录 1.说明 2.示例 3.运行截图 ​编辑 4.总结 1.说明 (1) 本文主要实现通过动态表单的方式实现自定义筛选的功能&#xff0c;用户可以自己添加筛选的项目&#xff0c;筛选条件及筛选内容。 (2) 每个项目的筛选包含筛选项目&#xff0c;筛选条件&#xff0c;筛选方式及筛选…

【算法】位运算算法——只出现一次的数字Ⅱ

题解&#xff1a;只出现一次的数字Ⅱ(位运算算法) 目录 1.题目2.题解&#xff1a;3.代码示例4.总结 1.题目 题目链接&#xff1a;LINK 要求&#xff1a;时间复杂度&#xff1a;O(N)&#xff0c;空间复杂度&#xff1a;O(1) 2.题解&#xff1a; 3.代码示例 class Solution {…

20212313 2023-2024-2 《移动平台开发与实践》第6次作业

20212313 2023-2024-2 《移动平台开发与实践》第6次作业 1.实验内容 设计并开发一个语音识别应用系统。 通过使用RecognizerIntent实现语音识别功能&#xff0c;开发一个Android语音识别系统。 2.实验过程 2.1下载语音识别的SDK 这里我们选择的是科大讯飞的语音识别&#…

2024年4月—马克思主义基本原理概论真题及答案解析(上海自考)

目录 1.选择题 2.简答题 3.论述题 1.选择题 2.简答题

aws glue配置读取本地kafka数据源

创建连接时填写本地私有ip地址&#xff0c;选择网络配置 配置任务选择kafka作为数据源 但是执行任务时日志显示连接失败 文档提到只能用加密通信 如果您希望与 Kafka 数据源建立安全连接&#xff0c;请选择 Require SSL connection (需要 SSL 连接)&#xff0c;并在 Kafka priv…

text-embedding 嵌入模型

为什么使用embedding 计算机只能处理数字&#xff0c;但我们希望它能够理解文字、图片或其他形式的数据。这就是embedding的作用。它将这些复杂的数据转换成数字表示&#xff0c;就像给它们贴上了标签一样。这些数字表示不仅保留了原始数据的重要信息&#xff0c;还能在计算机…

【OpenGL手册14】实例化

目录 一、说明 二、实例化 三、实例化数组 四、小行星带 五、完整代码 六、结论 一、说明 实例化渲染&#xff0c;是用少数数据做模板&#xff0c;实现海量物体渲染的手段方法。用实例化渲染&#xff0c;需要对每个实例产生一定描述数据。如何实现&#xff1f;请看本文下…

Vue3实战笔记(36)—粒子特效完成炫酷的404

文章目录 前言404特效总结 前言 昨天介绍了一个粒子特效小例子&#xff0c;不够直观&#xff0c;下面直接实战在自己的项目中实现一个好玩滴。 404特效 更改之前创建好的404.vue: <template><div class"container"><vue-particles id"tspartic…