docker介绍、部署与常用命令

一、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.mzph.cn/news/171653.shtml

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

相关文章

Facebook的特点优势

Facebook作为全球最大的社交媒体平台之一&#xff0c;同时也是最受欢迎的社交网站之一&#xff0c;Facebook具有许多独特的特点和优势。本文小编将说一些关于Facebook的特点及优势。 1、全球化 Facebook拥有数十亿的全球用户&#xff0c;覆盖了几乎所有国家和地区。这使得人们…

【深度学习笔记】05 线性回归

线性回归 线性回归基于几个简单的假设&#xff1a; 首先&#xff0c;假设自变量 x \mathbf{x} x和因变量 y y y之间的关系是线性的&#xff0c; 即 y y y可以表示为 x \mathbf{x} x中元素的加权和&#xff0c;这里通常允许包含观测值的一些噪声&#xff1b; 其次&#xff0c;我…

MQTT客户端MQTT.fx 1.7.1下载、安装和界面介绍

MQTT.fx是一款基于Eclipse Paho&#xff0c;使用Java语言编写的MQTT客户端工具。支持通过Topic订阅和发布消息&#xff0c;用来前期和物理云平台调试非常方便。 1.下载 1.1.访问官方下载地址下载&#xff0c;但是下载不到1.7.1版本 1.2.在连接网页末尾点击立即下载&#xff0c;…

R语言如何实现多元线性回归

输入数据 先把数据用excel保存为csv格式放在”我的文档”文件夹 打开R软件,不用新建,直接写 回归计算 求三个平方和 置信区间(95%)

STL: 容器适配器stack 与 queue

目录 1.容器适配器 1.1 STL标准库中stack和queue的底层结构 1.2 deque的简单介绍(了解) 1.2.1 deque的原理介绍 1.2.2 deque的缺陷 1.2.3 为什么选择deque作为stack和queue的底层默认容器 2. stack的介绍和使用 2.1 stack的介绍 2.2 stack的使用 2.3 利用deque模拟实现…

【算法】FFT-1(递归实现)(不包括IFFT)

FFT 多项式多项式乘法复数及运算导数泰勒公式及展开式欧拉公式单位根 FFTCode IFFT 多项式 我们从课本中可以知道&#xff0c;一个 n − 1 n-1 n−1 次的多项式可以写成 a 0 a 1 x a 2 x 2 a 3 x 3 ⋯ a n − 1 x n − 1 a_{0}a_{1}xa_{2}x^2a_{3}x^3\dotsa_{n-1}x^{n-…

【挑战业余一周拿证】二、在云中计算 - 第 2 节 - Amazon EC2 实例类型

第 2 节 - Amazon EC2 实例类型 如果我们想让企业尽可能高效地运作&#xff0c;那就一定要确保员工的技能组合适合他们的角色&#xff0c;就 像我们的咖啡店有不同类型的员工一样&#xff0c;亚马逊云科技也有不同类型的 EC2 实例。每种实例类型 都归属于一个实例系列&#x…

BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1

启动环境后&#xff0c;是一个简简单单的页面&#xff1a; 看样子是能够触发远程执行漏洞的。尝试下ping 127.0.0.1&#xff0c;如果有回显说明我们的想法是对的。 最近才学习的nc反弹shell。想着是否能用nc反弹shell的办法。控制服务器然后输出flag呢&#xff1f;于是我测试下…

如何通过nginx进行服务的负载均衡

简单介绍 随着互联网的发展&#xff0c;业务流量越来越大并且业务逻辑也越来越复杂&#xff0c;单台服务器的性能及单点故障问题就凸显出来了&#xff0c;因此需要多台服务器组成应用集群&#xff0c;进行性能的水平扩展以及避免单点故障的出现。应用集群是将同一应用部署到多台…

NAS非接入层协议学习(二)

在无线通信网络中 NAS (Non-Access Stratum)做为非接入层是演进分组系统(或5G核心网)中的一组协议。NAS用于在用户设备(UE)和移动管理实体(MME/AMF)之间传送非无线电信令&#xff0c;以实现NR/LTE/E-UTRAN接入。 NAS在协议栈中是控制面的最高层。 NAS协议分组中可以将其分为两…

美化wordpress复制文章内容弹出版权提示框的源码代码

通过SweetAlert美化的提示框 将下面代码添加到当前主题模板函数functions.php文件最后即可&#xff1a; function zm_copyright_tips() { echo <link rel"stylesheet" type"text/css" rel"external nofollow" target"_blank" href…

hive杂谈

数据仓库是一个面向主题的、集成的、非易失的、随时间变化的&#xff0c;用来支持管理人员决策的数据集合&#xff0c;数据仓库中包含了粒度化的企业数据。 数据仓库的主要特征是&#xff1a;主题性、集成性、非易失性、时变性。 数据仓库的体系结构通常包含4个层次&#xff…

第 373 场 LeetCode 周赛题解

A 循环移位后的矩阵相似检查 模拟 class Solution { public:bool areSimilar(vector<vector<int>> &mat, int k) {int m mat.size(), n mat[0].size();k % n;auto g mat;for (int i 0; i < m; i)if (i & 1)rotate(mat[i].begin(), mat[i].begin() …

Nodejs 第二十章(fs 上)

概述 在 Node.js 中&#xff0c;fs 模块是文件系统模块&#xff08;File System module&#xff09;的缩写&#xff0c;它提供了与文件系统进行交互的各种功能。通过 fs 模块&#xff0c;你可以执行诸如读取文件、写入文件、更改文件权限、创建目录等操作&#xff0c;Node.js …

算法通关村-----字符串冲刺题

最长公共前缀 问题描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字符串 “”。详见leetcode14 问题分析 直观上来看&#xff0c;有竖直和水平两种方式&#xff0c;竖直方式是指我们依次比较所有字符串的第一个字符&#xff0c;…

c语言实现10进制转16进制

代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int dectohex(int b, char array[]) {char a[17] { "0123456789ABCDEF" };int c[30] { 0 }, i 0, base 16, j 0;while (b){c[i] b % base;b b / base;}j i;for (i--; i >…

03-《人月神话》巴赫、UML和领域驱动设计伪创新:中译本纠错及联想

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 2001年&#xff0c;我们翻译《人月神话》的时候&#xff0c;由于水平有限&#xff0c;译文中存在不少错误。 这些年&#xff0c;随着阅历的增长&#xff0c;在重读的时候偶尔也会有“…

电商项目高级篇-03 商品上架

商品上架 1、商品上架1.1、设计&#xff1a;宽表设计 1、商品上架 上架的商品才可以在网站展示。 上架的商品需要可以被检索。 1.1、设计&#xff1a;宽表设计 优点&#xff1a;方便检索 缺点&#xff1a;数据冗余 商品数据模型设计&#xff1a; PUT product {"mappi…

【PyQt】QPixmap与numpy.array互转

这里给出QPixmap→numpy.ndarray的两条转换(一个是使用PIL.Image而另一个不用)&#xff0c; 以及numpy.ndarray→QPixmap两条转换(同样也是用不用PIL.Image的区别)。 代码运行结果&#xff1a; from PyQt5.QtCore import QPoint,QRect,Qt from PyQt5.QtWidgets import QLabel …

微信小程序 服务端返回富文本,图片无法显示

场景&#xff1a;   微信小程序开发中&#xff0c;需要从服务端拿取数据渲染到页面上&#xff0c;后台返回的富文本里&#xff0c;图片路径有时是没有带域名前缀的&#xff0c;导致图片无法正常显示。 解决方案&#xff1a;   在富文本返回时&#xff0c;用正则匹配&#…