Docker入门指南:Docker容器的使用(三)

🍀 前言

博客地址:

  • CSDN:https://blog.csdn.net/powerbiubiu

👋 简介

在本章节中,将深入探讨 Docker 容器的概念,以及容器的使用。

📖 正文

1 什么是容器

1.1 Docker容器的介绍

Docker 容器是 Docker 平台上运行的轻量级、独立且可移植的软件包,用于打包应用程序及其所有依赖项、配置和运行时环境。容器化技术使得应用程序能够在一个隔离的环境中运行,而不会受到底层操作系统和硬件的影响。容器是从 Docker 镜像创建的实例,类似于对象是从类创建的实例。每个容器都是相互隔离的、独立运行的进程,具有自己的文件系统、进程空间和网络接口。容器之间相互隔离,不会相互干扰,因此可以在同一主机上同时运行多个容器,每个容器都可以承载一个独立的应用程序。

1.2 Docker容器的特点
  • 可移植性:容器可以在任何支持 Docker 的平台上运行,无论是开发环境、测试环境还是生产环境。容器在不同的环境中具有相同的行为,因此可以轻松地将应用程序从一个环境迁移到另一个环境。
  • 隔离性:容器使用 Linux 内核的命名空间和控制组特性来实现进程隔离、文件系统隔离、网络隔离和资源隔离。这使得容器之间相互隔离,不会相互干扰,提高了安全性和可靠性。
  • 可管理性:容器可以通过 Docker CLI 或图形界面工具进行管理。可以方便地创建、启动、停止、重启和删除容器,以及查看和监控容器的状态和日志。
  • 可复制性:容器可以通过 Docker 镜像进行复制和分发,从而实现应用程序的快速部署和交付。镜像定义了容器所需的所有文件和配置,因此可以轻松地创建多个相同的容器实例。

2 启动容器

docker run IMAGE:TAG
参数说明:

  • IMAGE:镜像名称;
  • TAG:标签,镜像版本号。

以启动Jenkins为例
docker run -d -u root -p 8080:8080 -p 50000:50000 -v \e\my_jenkins\jenkins_home:/docker/jenkins --name myJenkins jenkins/jenkins:lts-jdk17
image.png
参数说明:

  • docker run:允许Docker容器命令;
  • -d:在后台运行容器;
  • -u root:以root用户身份运行容器,通常用于确保容器内的进程具有足够的权限执行需要的操作;
  • -p 8080:8080:将容器内部的 8080 端口映射到宿主机的 8080 端口。Jenkins 服务通常在 8080 端口上运行;
  • -p 50000:50000: 将容器内部的 50000 端口映射到宿主机的 50000 端口。这是 Jenkins 使用的用于构建和执行任务的端口。
  • -v \e\my_jenkins\jenkins_home:/docker/jenkins:将宿主机上的目录D:\my_jenkins\jenkins_home挂载到容器内的/docker/jenkins目录,这样可以确保Jenkins数据和配置持久化,即使容器被删除,数据仍然保留在宿主机上,
  • --name myJenkins:给容器指定一个名称
  • jenkins/jenkins:lts-jdk17:指定要运行的 Docker 镜像的名称和版本。在这里,使用的是 Jenkins 的 LTS 版本,内部使用的 JDK 17。

3 查看容器

  • docker ps : 查看正在运行中的容器;
  • docker ps -a : 查看所有容器,包括运行中的、已经停止运行的容器。

通过命令查看,启动的jenkins已经成功了
image.png
字段说明:

  • CONTAINER ID: 容器 ID;
  • IMAGE:创建容器时使用的镜像;
  • COMMAND:容器最后运行的命令;
  • CREATED:容器创建时间;
  • STATUS: 容器状态;
  • PORTS:端口信息;
  • NAMES:容器名:和容器 ID 一样,可以标识容器的唯一性,同一台宿主机上不允许有同名容器存在,否则会冲。

4 进入容器

docker exec -it [container ID or NAMES]
通过容器ID或者容器名称进入
比如,根据容器ID进入mysql的容器docker exec -it 0d9c8040112a /bin/bashmysql -uroot -p登录mysqlimage.png
通过使用exit退出mysql,回到mysql容器后,再通过exit退出mysql容器
image.png

5 停止容器

5.1 正常停止

docker container stop [container ID or NAMES]
简写模式,可省略关键字container
docker stop [container ID or NAMES]

5.2 强制停止

docker container kill [container ID or NAMES]
简写模式,可省略关键字 container )
docker kill [container ID or NAMES]

5.3 运行已停止的容器

docker container strat [container ID or NAMES]
简写模式,可省略关键字 container )
docker strat [container ID or NAMES]

6 重启容器

docker restart [container ID or NAMES]
不管容器是否启动,直接重启
参数:

  • -t:表示限时多少秒关闭容器,然后重启,如:docker restart 330635813b68

7 导出导入容器

7.1 导出容器

docker export
比如导出Jenkins容器,docker export 330635813b68 > jenkins.tar
image.png

7.2 导入容器

docker import
将导出的Jenkins容器,通过cat jenkins.tar | docker import - test/jenkins:v1.0进行导入image.png

8 删除容器

docker container rm [container ID or NAMES]
简写模式,可省略关键字 container
docker rm [container ID or NAMES]
如果需要删除所有已经停止的容器,可以通过
docker container prune进行删除

✏ 总结

Docker 容器是现代应用程序交付和部署的一种重要方式。它们提供了更高效、可移植和可扩展的应用程序运行环境,使得开发者能够更快速地构建、交付和运行应用程序,同时简化了应用程序的依赖管理和环境配置。

💖 欢迎我的关注公众号

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RT-Thread事件集

文章目录 前言一、RT-Thread事件集的概念二、事件集函数的使用1.创建事件集函数2.事件集发送函数3.事件集接收函数4.事件集删除函数 三、事件集使用例程总结 前言 本篇文章将给大家讲解RT-Thread中事件集的概念,了解什么是事件集及事件集的函数使用方法。 一、RT-…

uni-app跨端兼容

1.样式兼容 小程序端不支持*选择器,可以使用(view,text) 页面视口差异(tabar页、普通页) H5端默认开始scoped 例如骨架屏样式出现问题,需要将之前的样式拷贝到骨架屏中 提示:H5端是单页面应用,scoped隔离…

【AI大模型】自动生成红队攻击提示--GPTFUZZER

本篇参考论文为: Yu J, Lin X, Xing X. Gptfuzzer: Red teaming large language models with auto-generated jailbreak prompts[J]. arXiv preprint arXiv:2309.10253, 2023. https://arxiv.org/pdf/2309.10253 一 背景 虽然LLM在今天的各个领域得到了广泛的运用…

LeetCode343:整数拆分

题目描述 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 代码 动态规划 class Solution { public:int integerBreak(int n) {/*dp[i]:表示对…

用 Supabase CLI 进行本地开发环境搭建

文章目录 (零)前言(一)Supabase CLI(1.1)安装 Scoop(1.2)用 Scoop 安装 Supabase CLI (二)本地项目环境(2.1)初始化项目(2…

【笔记】EF_PNN获取及运营商名称显示(待完善)

问题背景 当设备无法成功解析EONS(PNN)的值(即SIM卡EF文件内容),则会用次优先级的NITZ去refresh了SPN。(问题代码如下,是通过Phone对象拿到plmn为空) 运营商名称一般显示优先级:Eons > NITZ > XML OPL id 0 对应的是PNN第一条 功能逻辑 (定制)当卡中的spn为空…

【XSRP软件无线电】基于软件无线电平台的QPSK频带通信系统设计

目录: 目录: 一、绪论 1.1 设计背景 1.2 设计目的 二、系统总体方案 2.1 专题调研题目 2.2 调研背景 2.3 设计任务解读 2.4 设计原理 2.4.1 原理框图 2.4.2 功能验证 三、软件设计 3.1 程序解读 3.2 程序设计 3.3 仿真结果: 四、程序代码分析…

【spark RDD】spark 之 Kryo高性能序列化框架

文章目录 一. RDD序列化的原因二. Kryo序列化框架三. spark 配置 kryo 序列化1. 设定kryo序列化2. 注册序列化类(非必须,但是强烈建议做)3. 配置 spark.kryoserializer.buffer 一. RDD序列化的原因 Spark初始化工作是在Driver端进行的&#…

JAVA智慧工地管理系统源码,智慧工地扬如何实现对工地扬尘的实时监测

智慧工地扬尘监测系统概述 智慧工地扬尘监测系统是一种利用现代信息技术,如光电传感技术和无线传输技术,对工地扬尘污染进行实时监测和管理的高效工具。该系统的目的是为了保护环境,减少因建筑施工产生的扬尘对周边地区的影响,同…

2024生日快乐祝福HTNL源码修复版

源码介绍 2024生日快乐祝福HTNL源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面, 源码截图 源码下载 2024生日快乐祝福HTNL源码

C语言(指针)3

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

【pandas】库中的apply(lambda function ,arix)

pandas.apply() 遍历DataFrame的元素(一行或者一列数据) 行遍历:axis 1 列遍历:axis 0 基础信息 pandas的apply()方法是用来调用一个lambda函数,让函数对数据对象具有批处理的特性。 pandas支持apply()调用…