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.hqwc.cn/news/219552.html

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

相关文章

单片机学习2——流水灯的实现

#include<reg52.h>sbit LED P1^0; unsigned char i;void main() {while(1){LED 0;for(i0;i<100;i);LED 1;for(i0;i<100;i);} } RST是复位按钮&#xff0c;单击一下之后&#xff0c;程序就会跑到最开始的位置运行。 右侧的按钮是RUN按钮&#xff0c;单击下&…

Android仿 美团 / 饿了么,店铺详情页功能

前言 UI有所不同&#xff0c;但功能差不多&#xff0c;商品添加购物车功能 正在写&#xff0c;写完会提交仓库。 页面主要由&#xff1a;MagicIndicator ViewPager2 Fragment CoordinatorLayout NestedScrollView RecyclerView组成。 效果图一&#xff1a;左右RecyclerV…

mybatis的使用,mybatis的实现原理,mybatis的优缺点,MyBatis缓存,MyBatis运行的原理,MyBatis的编写方式

文章目录 MyBatis简介结构图Mybatis缓存&#xff08;一级缓存、二级缓存&#xff09;MyBatis是什么&#xff1f;mybatis的实现原理JDBC编程有哪些不足之处&#xff0c;MyBatis是如何解决这些问题的&#xff1f;Mybatis优缺点优点缺点映射关系 MyBatis的解析和运行原理MyBatis的…

4/5G语音实现方案

今天又是学习充实的一天&#xff0c;今天我们来学习4G和5G语音实现方案的介绍&#xff0c;VOLITE通信流程是怎么样子的&#xff0c;和之前学的TCP协议有什么联系吗&#xff1f;今天我们换个角度来学习通信的流程~ 目录 2G/3G的电话和上网 4G语音实现方案 4G语音的三种方式 …

⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

专业级音乐制作软件Studio One 6.5详细功能介绍

Studio One 6.5是一款专业级音乐制作软件&#xff0c;由PreSonus公司开发。它提供了强大的音频录制、编辑、混音和制作工具&#xff0c;被广泛应用于音乐制作、录音棚和现场演出等领域。 Studio One-6.5 下载地址&#xff1a;https://souurl.cn/fMjY4Q 下面是关于Studio One 6…

智能优化算法应用:基于粒子群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于粒子群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于粒子群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.粒子群算法4.实验参数设定5.算法结果6.参考文献7.…

汽车电子 - UDS

汽车电子 - UDS 概念基本概念分类请求与响应寻址信息物理寻址功能寻址 协议格式&#xff1f;&#xff1f;&#xff1f;750/758厂家自定义的吗&#xff1f;&#xff1f;&#xff1f;&#xff0c; 所有的UDS服务都在这里边吗&#xff1f;&#xff1f;&#xff1f;&#xff0c;代码…

Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

摄像馆服务预约管理系统会员小程序作用是什么

摄像馆不少人并不会经常去&#xff0c;除了有拍婚纱照或工作照等&#xff0c;一般很少会进店&#xff0c;但由于摄像涵盖多个服务项目&#xff0c;因此总体来讲&#xff0c;市场需求度还是比较高的&#xff0c;一个城市也有多个品牌&#xff0c;而传统门店经营也面临不少痛点。…

用xlwings新建一个excel并同时生成多个sheet

新建一个excel并同时生成多个sheet&#xff0c;要实现如下效果&#xff1a; 一般要使用数据透视表来快速实现。 今天记录用xlwings新建一个excel并同时生成多个sheet。 import xlwings as xw # 打开excel,参数visible表示处理过程是否可视,add_book表示是否打开新的Excel程序…

Jrebel热部署

版本列表&#xff1a;JRebel and XRebel - IntelliJ IDEs Plugin | Marketplace 下载&#xff1a;JRebel and XRebel 2022.4.1 Welcome to JetBrains License Server!&#x1f603; (qekang.com) 实验表明&#xff0c;同时支持mapper xml热部署 参考博客、参考博客、参考博客、…