容器技术技术入门与 Docker 环境部署

目录

一:Docker概述

1、 Docker的优势:

(1)环境一致性

(2)隔离性

(3)资源高效

(4)便捷性和可扩展性

2、Docker容器与传统虚拟机的区别

3、Docker的应用场景

4、Docker核心

(1)镜像(Image)

(2)容器(Container)

(3)仓库(Repository)

二:Docker安装

1:本安装方式使用阿里的软件仓库

(1)关闭系统防火墙

(2)下载Docker的repo文件

(3)替换仓库地址

(4)更新索引文件并安装Docker

(5)添加国内镜像站

(6)开启Docker服务

(7)优化内核参数

三:Docker镜像操作

1、Docker 镜像操作列表

2、Docker镜像操作案例

(1)获取镜像

(2)查看镜像

(3)查看镜像的详细信息

(4)修改镜像标签

(5)删除镜像

1.用镜像名删除

2.用ID 删除

(6)存出镜像和载入镜像

1.导出

2.删除

3.导入

四、Docker容器操作

1、Docker 容器操作列表

2、Docker 容器操作案例 

(1)容器的创建与启动

1.创建容器

2.查看所有的容器

3.容器的运行

4.利用容器执行命令(命令执行完毕后容器会退出)

5.在启动容器时持续在后台运行

(2)容器的终止

(3)进入容器

(4)容器导出

(5)容器导入生成镜像

(6)容器删除


一:Docker概述

Docker是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包成一个轻量级、可移植的容器,然后这个容器可以在任何支持Docker的机器上运行,无论是物理机、虚拟机、云平台还是数据中心。

1、 Docker的优势:

(1)环境一致性

Docker容器在任何支持Docker的环境中运行时表现一致,解决了“在我的机器上运行正常,但在其他机器上就不行”的问题。

(2)隔离性

容器之间相互隔离,一个容器的故障或异常不会影响到其他容器的运行,提高了应用的稳定性和安全性。

(3)资源高效

与传统虚拟机相比,Docker容器不需要额外的操作系统,因此资源消耗更少,启动更快。

(4)便捷性和可扩展性

容器的启动速度非常快,通常只需要几秒钟,可快速创建和销毁容器,方便进行应用的快速部署和弹性扩展。

2、Docker容器与传统虚拟机的区别

特性

Docker容器

虚拟机

启动速度

秒级

分钟级

计算能力损耗

几乎无

损耗50%左右

性能

接近原生

弱于

系统支持量

上千个

几十个

隔离性

资源限制

完全隔离

3、Docker的应用场景

(1)开发环境管理

(2)持续集成和持续部署(CI/CD)

(3)微服务架构

(4)云计算

4、Docker核心

(1)镜像(Image)

类似于虚拟机的快照,但是所占资源远远小于快照,可以理解为一个面向Docker容器引擎的只读模板。可以用户自己创建和更新现有的镜像,也可以从网上下载已创建好的镜像。

(2)容器(Container)

Docker的容器时从镜像创建的运行实例,可以被启动、停止、删除。所创建的每一个容器都是相互隔离、互不可见、以保证安全性的平台。

(3)仓库(Repository)

Docker仓库是用来集中保存镜像的地方,创建自己的镜像后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。其他机器使用时可以从仓库获取。

二:Docker安装

CentOS 系统安装Docker有两种放式:

(1)使用 CURL 获得 Docker 的安装脚本

(2)使用 YUM 仓库安装。

注意:目前Docker只能支持64位系统

1:本安装方式使用阿里的软件仓库

(1)关闭系统防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/=enforcing/=disabled/' /etc/selinux/config

(2)下载Docker的repo文件

​curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)替换仓库地址

sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo

(4)更新索引文件并安装Docker

dnf clean all
dnf makecache
dnf -y install docker-ce

(5)添加国内镜像站

​vim /etc/docker/daemon.json
{
"exec-opts": ["netive.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com"]
}

(工信部网络政策调整,docker.io、gcr.io等国际镜像站不能访问)

(6)开启Docker服务

systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version

(7)优化内核参数

vim /etc/sysctl.conf
net.ipv4.ip_forward=1	#12
net.bridge.bridge-nf-call-iptables=1
net.bridge.brifge-nf-call-ip6tables=1sysctl -p

三:Docker镜像操作

1、Docker 镜像操作列表

命令

语法

参数/选项

说明

示例

拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

-a:拉取所有标签的镜像

--disable-content-trust:禁用镜像签名验证

从镜像仓库拉取镜像到本地

docker pull nginx:1.24.0

列出镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

-a:显示所有镜像(包括中间层)

-q:仅显示镜像ID

--digests:显示摘要信息

列出本地所有镜像的仓库名、标签、ID、创建时间及大小

docker images -a

查看镜像详情

docker inspect [OPTIONS] IMAGE

-f:自定义输出格式

--size(仅容器)

查看镜像的底层详细信息(JSON格式)

docker inspect c15

修改镜像标签

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

为镜像添加新标签(不创建新镜像)

docker tag nginx:1.24.0 nginx:v1

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

-f:强制删除

--no-prune:保留父镜像层

删除本地镜像

docker rmi nginx:v1

docker rmi c15

导出镜像

docker save -o FILE IMAGE[:TAG]

将镜像保存为tar文件

docker save -o nginx.tar nginx:1.24.0

导入镜像

docker load < FILE

从tar文件加载镜像

docker load < nginx.tar

2、Docker镜像操作案例

运行 Docker 容器前需要本地存在对应的镜像。如果不存在本地镜像,Docker 就会尝试从默认镜像仓库下载。镜像仓库是由 Docker 官方维护的一个公共仓库,可以满足用户的绝大部分需求。用户也可以通过配置来使用自定义的镜像仓库。

(1)获取镜像

docker pull nginx:1.24.0

(2)查看镜像

docker images

(3)查看镜像的详细信息

docker inspect 6c0218

(4)修改镜像标签

docker tag nginx:1.24.0 nginx:v1
docker images

(5)删除镜像

删除镜像有两种方式

1.用镜像名删除
docker rmi nginx:v1
2.用ID 删除
docker rmi 6c0218

(6)存出镜像和载入镜像

1.导出
docker save -o nginx nginx:1.24.0
ls
2.删除
docker rmi nginx:1.24.0
3.导入
docker load<nginx
docker images

四、Docker容器操作

1、Docker 容器操作列表

命令

语法

参数/选项

说明

示例

创建容器

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

-it:交互式终端

-p:端口映射

--name:容器命名

创建容器但不启动

docker create -it --name my_centos centos:7

启动容器

docker start [OPTIONS] CONTAINER

-a:附加到容器输出

-i:保持输入交互

启动已创建的容器

docker start my_centos

创建并运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-d:后台运行

-it:交互式终端

-p:端口映射

-v:挂载数据卷

直接创建并启动容器

docker run -d -p 8080:80 nginx

docker run -it centos:7 /bin/bash

列出容器

docker ps [OPTIONS]

-a:显示所有容器

-q:仅显示ID

-s:显示容器大小

查看容器状态和基本信息

docker ps -a

停止容器

docker stop [OPTIONS] CONTAINER

-t:设置等待时间(默认10秒)

优雅停止容器

docker stop -t 20 my_nginx

进入容器

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-it:交互式终端

-u:指定用户

在运行中的容器内执行命令

docker exec -it my_centos /bin/bash

导出容器

docker export CONTAINER > FILE

将容器文件系统导出为tar文件

docker export my_centos > centos.tar

导入容器为镜像

docker import FILE [REPOSITORY[:TAG]]

从tar文件生成镜像

docker import centos.tar centos:test

删除容器

docker rm [OPTIONS] CONTAINER

-f:强制删除运行中的容器

-v:同时删除数据卷

删除已停止的容器

docker rm -f my_centos

2、Docker 容器操作案例 

容器是 Docker 的另一个核心概念。简单说,容器是镜像的一个运行实例,是独立运行的一个或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、she11 环境等。镜像是只读模板,而容器会给这个只读模板添加一个额外的可写层。

(1)容器的创建与启动

1.创建容器
docker create -it centos:7
2.查看所有的容器
docker ps -a 
3.容器的运行
docker start 5a
docker ps 
4.利用容器执行命令(命令执行完毕后容器会退出)
docker run -d centos:7 /usr/bin/bash -c "ls /root"
5.在启动容器时持续在后台运行
docker run -d centos:7 /usr/bin/bash -c "while true;do echo nihao;done"

docker run -dit centos:7 /bin/bash

(2)容器的终止

docker stop b18

(3)进入容器

[root@localhost ~]# docker exec -it 1ca2 /bin/bash
[root@1ca2a9e95262 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@1ca2a9e95262 /]# exit
exit
[root@localhost ~]# 

(4)容器导出

docker export 1ca2 >centos77

(5)容器导入生成镜像

docker import centos77 centos77:aaa
docker images

(6)容器删除

docker rm 1ca2

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

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

相关文章

Oracle获取执行计划之DBMS_XPLAN 技术详解1

在 Oracle 数据库的管理与优化工作中&#xff0c;深入了解 SQL 语句的执行计划是至关重要的一环。DBMS_XPLAN 包作为 Oracle 提供的强大工具&#xff0c;能够帮助数据库管理员&#xff08;DBAs&#xff09;和开发人员清晰地查看和分析 SQL 语句的执行计划&#xff0c;从而实现对…

【Python】VScode配置Python教程

文章目录 【Python】VScode配置Python教程下载Python安装插件解决乱码彻底运行vscode安装python库 【Python】VScode配置Python教程 前言&#xff1a; 当「Python 编程潜力」遇上「VSCode 开发神器」&#xff0c;会点燃怎样的效率革命&#xff1f;试想这样的场景&#xff1a;你…

PowerBI HtmlContent生成表格

假设有销量表: 1.PowerBI 导入 Html Content对象&#xff0c;并拖入报表 2.新建度量值: 度量值 VAR colCount DISTINCTCOUNT(销量[产品]) VAR ColumnHeaders "<tr><th styleborder:1px solid black; padding:5px; text-align:center; colspan"&col…

【人工智能与机器人研究】基于运动数据时空特征提取的人类运动片段分割方法

导读 动作示教方法是非专家用户对人形机器人进行控制的可靠形式&#xff0c;而对人类动作数据的运动分割与理解是其前提。利用现有方法对所捕获人类运动原始数据进行关键帧提取与运动分割时&#xff0c;由于数据特征不明确&#xff0c;导致难以准确定位运动起始帧、结束帧及分…

ARM内核之CMSIS

1.什么是CMSIS&#xff1f; CMSIS&#xff08;Cortex Microcontroller Software Interface Standard&#xff0c;Cortex微控制器软件接口标准&#xff09;提供Cortex-M内核与软件之间的接口&#xff0c;即用户可以通过这些统一的接口&#xff08;函数API&#xff09;去访问底…

嵌入式软件面经(二)Q: Modbus协议CRC校验的方式是什么?它有哪些优势?

Modbus协议使用的CRC&#xff08;循环冗余校验&#xff09;是一种用于确保数据通信完整性和准确性的差错检测方法。在Modbus RTU通信中&#xff0c;CRC校验过程清晰明确&#xff0c;且被广泛应用于工业通信场景。 一、Modbus协议的CRC校验流程 &#xff08;一&#xff09;CRC计…

glib-object 中G_DEFINE_TYPE 宏都作了什么?

author: hjjdebug date: 2025年 06月 25日 星期三 15:35:26 CST descrip: glib-object 中G_DEFINE_TYPE 宏都作了什么? 文章目录 1. 测试代码2 给出它的展开式.3.说说它都生成了什么?3.1. my_foo_get_type() 函数3.2. static GType my_foo_get_type_once(void)3.3. my_foo_cl…

Alembic迁移系统初始化实战教程

下面是一份结构清晰、步骤明确的 基于 Alembic Pydantic SQLAlchemy 的数据库迁移系统初始化教程&#xff0c;非常适合初次搭建项目或团队规范流程参考。 &#x1f680; Alembic SQLAlchemy Pydantic 项目数据库迁移初始化教程 本教程将指导你如何从零初始化 Alembic 迁移…

灰度发布怎么保证数据库一致的

注&#xff1a; 以下内容来源于deepseek答案&#xff0c;生产环境以实际情况为主&#xff01; 在灰度发布中保证数据库一致的最优解需要同时满足安全性、低复杂度和高可操作性。结合多年实战经验&#xff0c;以下是最推荐的黄金方案&#xff08;适用于90%以上场景&#xff09;&…

不用vue,只用html,即可简单实现electron项目

为你提供一个 最简单的 Electron 项目模板&#xff0c;包含完整的代码、配置和打包说明。即使你是小白&#xff0c;也能快速上手。 1. 项目结构 /your-project├── main.js # Electron 主进程文件├── preload.js # 安全通信脚本&#xff08;可选&#xf…

C++11原子操作:从入门到精通

文章目录 一、什么是原子操作&#xff1f;二、为什么需要原子操作&#xff1f;三、C11中的<atomic>头文件四、基本使用1. 声明原子变量2. 基本原子操作 五、内存顺序&#xff08;Memory Order&#xff09;示例&#xff1a;使用内存顺序实现自旋锁 六、原子类型模板七、实…

深入解析Flink Local模式启动流程源码:揭开作业初始化的神秘面纱

在Flink的数据处理体系中&#xff0c;Local模式凭借无需依赖分布式集群资源的特性&#xff0c;成为开发测试阶段快速验证作业逻辑的利器。其启动流程的源码里&#xff0c;藏着从作业提交到任务执行的完整脉络。接下来&#xff0c;我们将深入关键代码段&#xff0c;逐行剖析Flin…

二刷 苍穹外卖 day06

HttpClient 用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包 作用&#xff1a; 发送HTTP请求 接受响应数据 应用场景&#xff1a; 当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时 其实&#xff0c;应用程序本身并未实现这些功能&#xff…

React第六十三节Router中BrowserRouter的用途及注意事项

前言 BrowserRouter 是 React Router 库的核心组件&#xff0c;用于实现单页面应用&#xff08;SPA&#xff09;的客户端路由。它利用 HTML5 History API 管理 URL&#xff0c;实现页面无刷新跳转。下面详细解释其用途、使用方法和代码示例&#xff1a; 一、BrowserRouter 核…

《Self-Adapting Language Models》(SEAL)代码阅读笔记

代码&#xff1a;https://github.com/Continual-Intelligence 脚本命令用法&#xff1a;knowledge-incorporation/README.md 生成self-edit数据 脚本&#xff1a;sbatch knowledge-incorporation/scripts/make_squad_data.sh vllm serve启动Qwen2.5-7B模型的服务。 执行self-e…

GelSight Mini视触觉传感器开发资源升级:触觉3D点云+ROS2助力机器人科研与医疗等应用

近日&#xff0c;GelSight宣布对其GelSight Mini视触觉传感器的GitHub支持页面进行重大更新&#xff0c;围绕3D点云重建、ROS2 集成及开发者支持体系推出三大核心升级&#xff0c;助力机器人触觉感知、工业检测及科研场景落地。 GelSight Mini视触觉传感器重磅发布&#xff01;…

6、做中学 | 三年级下期 Golang值类型相互转换

本次为操作文章&#xff0c;大部分都在讨论类型之间如何转换&#xff0c;使用的是内置方法进行调用执行&#xff0c;详细使用请移步至&#xff1a; go的API使用文档地址 https://studygolang.com/pkgdoc 一、数值类型相互转换 go中数值转换需要显示转换&#xff0c;不能隐式自…

019 高校心理教育辅导系统技术解析:构建心理健康守护平台

高校心理教育辅导系统技术解析&#xff1a;构建心理健康守护平台 在关注大学生心理健康成为教育重点的当下&#xff0c;高校心理教育辅导系统借助数字化技术整合多种功能模块&#xff0c;面向管理员、学生、教师三类角色&#xff0c;实现心理教育辅导工作的高效化与精准化。本…

【ArcGIS】土地资源单项评价

【ArcGIS】土地资源单项评价 一、土地资源单项评价1、评价思路 二、操作步骤1、处理环境设置2、地形坡度评价3、高程评价4、坡度高程叠加评价5、地形起伏度6、土地资源综合评价 一、土地资源单项评价 1、评价思路 &#xff08;1&#xff09;利用全域DEM计算地形坡度&#xff…

Prioritized Generative Replay

ICLR 2025 Oral code 具有样本效率的 online reinforcement learning (RL) 通常使用 replay buffer 存储经验&#xff0c;以便在更新价值函数时重复使用。然而&#xff0c;uniform replay 效率低下&#xff0c;因为某些类型的 transition 可能与学习更相关。 虽然对更有用的样本…