docker介绍、部署与常用命令

news2025/2/23 19:57:48

一、docker 介绍

1、容器(Container):

(1) 概念:

容器是一种用于运行和部署应用程序的技术。它将应用程序及其所有依赖项(例如代码、运行时、系统工具、系统库等)打包在一个独立的、可移植的运行环境中,使应用程序可以在不同的计算机上以相同的方式运行。

(2) 传统虚拟机与容器的区别:

① 传统虚拟机(virtual machine):

传统虚拟机技术是在主操作系统上安装虚拟机管理系统 (如 VMware),创建出虚拟机,并在虚拟机上安装运行另一个种操作系统,从而安装部署各种应用。

② Linux容器(Linux Container,LXC):

Linux容器不是模拟一个完整的操作系统,而是从另一个镜像运行,将软件运行所需的所有依赖项打包到一个隔离的容器中

2、docker

(1) 概念:

Docker 是目前最为流行的容器化平台之一,Docker 利用容器技术,可以将源码、配置、环境、版本打包成为一个镜像文件(Docker Image)。这些镜像可以在任何支持 Docker 的环境中运行,做到 “一次镜像,处处运行”(Build, Ship and Run Any App, Anywhere)

(2) 优点:

① 轻量化和高效性: Docker 容器共享主机操作系统的内核,比传统的虚拟机更轻量,快速启动、停止和迁移。

② 快速部署: Docker 容器可以快速构建、部署和复制,缩短了应用程序的上线时间,加快了软件开发周期。

③ 隔离性和安全性: Docker 提供了基于命名空间和控制组的隔离机制,使得容器间相互隔离,避免了应用程序之间的冲突。

④ 生态系统丰富: Docker 生态系统庞大且持续发展,有大量的开源工具、库和容器化服务。

(3) docker 三要素:

镜像(image); 容器(container) ;仓库(repository)

● 镜像:将应用程序和配置依赖打包形成的一个可交付的运行环境,镜像文件可以看做容器的模版;

● 容器:独立运行的应用程序或服务;

● 仓库:存放镜像文件的场所,分为公有仓库和私有仓库。

(4) docker 技术实现:

① Namespace (命名空间) :Docker 使用命名空间来用于隔离系统资源,使得容器可以拥有自己的独立视图,不受其他容器的影响。

② Control Groups (Cgroups,控制组):Docker 使用 Cgroups 来控制每个容器可以使用的资源量,并根据需求动态调整资源分配,防止容器之间资源争用和耗尽。

③ AUFS (Advanced Multi-Layered Unification Filesystem) 联合文件系统:

● 多层叠加:AUFS 允许将多个只读文件系统层叠加在一起,并通过写时复制技术创建容器的可写层。这种多层结构使得容器镜像可以共享和重用共同的文件系统层,节省存储空间并提高了文件系统的效率。

● 写时复制 (Copy-on-Write):当容器需要修改文件或添加新文件时,AUFS 会在创建文件的副本,而不会直接修改原始文件。这种机制使得容器可以在共享的只读文件系统上添加或修改文件,保持底层文件系统的不变性。

(5) 为什么 docker 比 vm 虚拟机快:

① docker 容器上的程序直接使用时机物理机的硬件资源,不需要实现硬件资源虚拟化;

② docker 使用宿主机的内核,不需要和虚拟机一样重新加载一个操作系统。

二、docker 部署

1、域名解析:

2、部署 docker:

① 设置仓库:

yum install -y yum-utils device-mapper-persistent-data lvm2

② 选择清华镜像源:

yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

③ 安装 Docker Engine-Community:

yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

④ 启动docker:

systemctl start docker

⑤ 查看 docker 版本:

docker version

⑥ 使用 hello-world 镜像测试 docker:

docker run hello-world

由于本地没有 hello-world 这个镜像,所以会先下载 hello-world 镜像,并在容器内运行。

● docker run 的工作流程:

3、镜像加速器配置:

① 登录阿里云,点击 “产品” → “容器” → 选择 “容器镜像服务”;

② 点击 “管理控制台” → 选择 “镜像加速器”,找到加速器地址;

③ 将加速器地址配置到 docker 中:

vim /etc/docker/daemon.json

{

   "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]

}

systemctl daemon-reload

systemctl restart docker

三、docker 常用命令:

1、启动类:

2、镜像命令:

① docker image:查询本地镜像

② docker search 镜像名:搜寻镜像是否在仓库中;

③ docker pull 镜像名:下载镜像

④ docker system df:查看镜像 / 容器 / 数据卷所占的空间

⑤ docker rmi 镜像名 / 镜像id:删除镜像 ;docker rmi -f:强制删除

    docker rmi -f $(docker images -qa):删除全部镜像

● 虚悬镜像:仓库名、标签都是<none>的镜像

3、容器命令:

(1) 新建并启动容器:

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

常用参数:

--name:为容器指定一个名称

-d:后台运行容器并返回容器ID,也即启动守护式容器

-i:以交互模式(interactive)运行容器,通常与-t同时使用

-t:为容器重新分配一个伪输入终端(tty),也即启动交互式容器

-e:为容器添加环境变量

-P:随机端口映射

-p:指定端口映射

● 启动交互式容器(前台命令行):以交互模式启动容器,在容器内执行 /bin/bash 命令

● 启动守护式容器(后台服务器):docker 服务在后台保持运行

(2) 查看容器:

列出所有正在运行的容器:docker ps;

查看容器日志:docker logs 容器ID或容器名;

查看容器内运行的进程:docker top 容器ID或容器名;

查看容器内部细节:docker inspect 容器ID或容器名

(3) 重启、停止、删除容器:

删除已停止的容器:docker rm 容器ID或容器名;

强制删除容器:docker rm -f 容器ID或容器名

(4) 退出容器:

exit:退出后容器会停止 ;ctrl+p+q:退出后容器不停止

(5) 重新进入容器:

docker exec -it 容器ID bashShell

docker attach 容器ID

● docker exec 和 docker attach 区别:

attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止

exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止

(6) 容器备份:

① 备份容器文件:

容器内文件拷贝到宿主机:docker cp 容器ID:容器内路径 目的主机路径

宿主机文件拷贝到容器中:docker cp 主机路径 容器ID:容器内路径

② 导出和导入容器:

导出:docker export 容器ID > tar文件名

导入:cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号

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

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

相关文章

Java多态:多态多态,多么变态

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、重写1、重写的规则2、重写与重载的区别 二、多态1、多态的概念2、多态的实现3、向上转移和向下转型Ⅰ、向上转型Ⅱ、向下转…

Linux加强篇004-Vim编辑器与Shell命令脚本

目录 前言 1. Vim文本编辑器 1.1 编写简单文档 1.2 配置主机名称 1.3 配置网卡信息 1.4 配置软件仓库 2. 编写Shell脚本 2.1 编写简单的脚本 2.2 接收用户的参数 2.3 判断用户的参数 3. 流程控制语句 3.1 if条件测试语句 3.2 for条件循环语句 3.3 while条件循环语…

spring aop核心原理概念

目录 概述aop核心概念解析Target(目标对象)Joinpoint(连接点)Advice(通知/增加)Pointcut(切入点)Aspect(切面)Advisor(通知器)Weaving(织入)Proxy(代理)Introduction(引介) 结束 概述 aop核心概念解析 Target(目标对象) 代理的目标对象 目标对象(Target)的确立&#xff0c;是…

C++ 实现位图

引出 面试题&#xff1a;给出 40 亿个不重复的无符号整数&#xff0c;没有排过序。给定一个无符号整数&#xff0c;如何快速判断这个数是否在这 40 亿个无符号整数中。[ 腾讯面试题 ] 想法一&#xff1a;将 40 亿个数据存放到 set 里面&#xff0c;然后再查找指定的无符号整数。…

深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧,GPU是一种专门用于处理大量并行操作的硬件设备,它的架构设计主要是为了图形渲染。然而,由于其并行处理能力,现在广泛应用于深度学习、科学计算等领域。主要的GPU制造商…

运维高级--centos7源码安装Apache

安装必要的依赖项&#xff1a; sudo yum groupinstall "Development Tools" sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel这将安装编译和构建所需的基本工具&#xff0c;以及 Apache HTTP Server 所需的一些依赖项。 下载 Apache HTT…

从0到0.01入门 Webpack| 008.精选 Webpack面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【网络】DNS协议、ICMP协议、NAT技术

DNS协议、ICMP协议、NAT技术 一、DNS协议1、产生背景2、域名简介3、域名解析的工作流程4、使用dig工具分析DNS过程 二、ICMP协议1、ICMP介绍2、ICMP协议格式3、ping命令4、traceroute命令 三、NAT技术1、NAT技术背景2、NAT IP转换过程3、地址转换表4、NAPT技术5、重新理解路由器…

JsonRPC协议详解(协议介绍、请求示例、响应示例)

JsonRPC协议详解 什么是RPC&#xff1f; RPC&#xff08;远程过程调用&#xff09;是一种用于实现分布式系统中不同进程或不同计算机之间通信的技术。它允许我们像调用本地函数一样调用远程计算机上的函数&#xff0c;使得分布式系统的开发变得更加简单和高效。 什么是JsonRP…

【数据结构实验】图(三)图的深度优先搜索(DFS)生成树

文章目录 1. 引言2. 深度优先搜索生成树3. 实验内容3.1 实验题目&#xff08;一&#xff09;输入要求&#xff08;二&#xff09;输出要求 3.2 算法实现1. 数据结构2. 队列操作函数3. 广度优先搜索遍历4. 创建图5. 深度优先搜索算法6. 主函数及DFS主函数7. 输出生成树信息 3.3 …

第一百八十回 介绍两种阴影效果

文章目录 1. 概念介绍2. 实现方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"自定义SlideImageSwitch组件"相关的内容&#xff0c;本章回中将介绍两种阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

【服务器能干什么】二十分钟搭建一个属于自己的 RSS 服务

如果大家不想自己捣鼓,只是想尝尝鲜,可以在下面留言,我后台帮大家开几个账号玩一玩。 哔哩哔哩【高清版本可以点击去吐槽到 B 站观看】:【VPS服务器到底能干啥】信息爆炸的年代,如何甄别出优质的内容?你可能需要自建一个RSS服务!_哔哩哔哩_bilibili 前言 RSS 服务 市…

面试:双线程交替打印奇偶数

代码如下&#xff1a; package practice1;/*** 0-100的奇数偶数打印* 1、通过对象的wait和notify进行线程阻塞* 2、通过对num%2的结果进行奇数偶数的判断输出**/ public class JiOuOne {private static volatile int num 0;private static final int max 100;public static …

#define例题

我们已经学了#define的所有知识&#xff0c;让我们来看这道题&#xff0c;可不要又陷入陷阱 题目要求&#xff1a; #define N 4 #define Y(n) ((N2)*n) int main() {int z 2 * (N Y(5 1));printf("z%d\n", z);return 0; } 求这个z的值是多少&#xff1f; 我们直接…

Stable-Diffusion——Windows部署教程

Windows 参考文章&#xff1a;从零开始&#xff0c;手把手教你本地部署Stable Diffusion Webui AI绘画(非最新版) 一键脚本安装 默认环境安装在项目路径的venv下 conda create -n df_env python3.10安装pytorch&#xff1a;&#xff08;正常用国内网就行&#xff09; python -…

Sublime Text 3 安装离线插件 anaconda

1 下载 Sublime Text 3 免安装版 Download - Sublime Text 2 下载 Package Control&#xff0c;放到 Sublime Text Build 3211\Data\Installed Packages 目录下。 Installation - Package Control 3 页面搜索 anaconda anaconda - Search - Package Control Anaconda - Pac…

车载通信架构 —— 传统车内通信网络MOST总线(光纤传输、专精多媒体)

车载通信架构 —— 传统车内通信网络MOST总线(光纤传输、专精多媒体) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都…

自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x02 Nginx 配置 https双向认证》

自建CA实战之 《0x02 Nginx 配置 https双向认证》 上一章节我们已经实现了Nginx上配置https单向认证&#xff0c;主要场景为客户端验证服务端的身份&#xff0c;但是服务端不验证客户端的身份。 本章节我们将实现Nginx上配置https双向认证&#xff0c;主要场景为客户端验证服…

Day41力扣打卡

打卡记录 第 N 位数字&#xff08;找规律&#xff09; 链接 class Solution:def findNthDigit(self, n: int) -> int:count, digit, start 9, 1, 1while n > count:n - countdigit 1start * 10count start * 9 * digitnum start (n - 1) // digitreturn int(str(n…

详解#define

我们要知道&#xff0c;#define后面定义的标识符只进行替换而不进行计算&#xff0c;我们不能根据惯性自动给它计算了&#xff0c;这样可能会出错。 目录 1.关于#define 1.1#define定义标识符 1.2#define定义宏 1.3#define的替换规则 2.#和## 1.# 2.## 3.带副作用的宏参…