首页 > 其他分享 >Docker虚拟化容器

Docker虚拟化容器

时间:2023-12-27 22:01:09浏览次数:25  
标签:容器 虚拟化 宿主机 volume 镜像 Docker docker

一、简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

三要素:镜像、仓库、容器

  • 镜像将应用程序及其依赖、环境、配置打包在一起构成镜像。Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
  • 容器
    • Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。

    • 它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

    • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

    • 容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

  • 仓库
    • 仓库(Repository)是集中存放镜像文件的场所。

    • 仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

    • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

Docker结构

服务端:接收命令或远程请求,操作镜像或容器

客户端:发送命令或者请求到Docker服务端

Docker架构

二、Docker常用命令

1. 镜像操作

1.1 镜像名

  • 镜名称一般分两部分组成:[repository]:[tag]。

  • 在没有指定tag时,默认是latest,即最新版本的镜像

 如图,代表mysql 8.028版本的镜像

1.2 镜像操作

拉取镜像

例:拉取最新版本的nginx镜像

docker pull nginx

查看镜像

docker images

保存镜像到磁盘

语法格式:

docker save -o [保存的目标文件名称] [镜像名称]

例:

docker save -o /usr/local/nginx.tar nginx

删除镜像

docker rmi nginx

加载镜像

docker load -i /usr/local/nginx.tar

2. 容器操作

容器保护三个状态:

  • 运行:进程正常运行

  • 暂停:进程暂停,CPU不再运行,并不释放内存

  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态

  • docker pause:让一个运行的容器暂停

  • docker unpause:让一个容器从暂停状态恢复运行

  • docker stop:停止一个运行的容器

  • docker start:让一个停止的容器再次运行

  • docker rm:删除一个容器

例:创建nginx容器

docker run --name mynginx -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器

  • --name : 给容器起一个名字,比如叫做mynginx

  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

  • -d:容器启动后在后台运行

  • nginx:镜像名称

查看启动的容器

docker ps # 查看所有运行的容器
docker ps -a # 查看所有容器包含关闭的

查看日志

docker logs -f mynginx

加 -f 参数可以持续查看日志,不加 -f 只能查看打开时的日志。

停止容器

docker stop mynginx

启动容器

docker start mynginx

进入容器内部

docker exec -it mynginx bash

命令解读:

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

  • mynginx :要进入的容器的名称

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

3. 数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

 

作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

 

 一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

3.1 操作命令

基本语法

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume

  • inspect 显示一个或多个volume的信息

  • ls 列出所有的volume

  • prune 删除未使用的volume

  • rm 删除一个或多个指定的volume

例:创建数据卷html

docker volume create html

查看数据卷的详细信息

docker volume inspect html

可以看出数据卷挂载在宿主机的哪个目录

挂载数据卷

创建容器时,可以通过 -v 将数据卷挂载到容器内的目录

docker run的命令中通过 -v 参数挂载文件或目录到容器中:

  • -v volume名称:容器内目录

  • -v 宿主机文件:容器内文

  • -v 宿主机目录:容器内目录

docker run --name mynginx -v html:/root/html p 80:80 -d nginx

-v html:/root/html 代表将 html 数据卷挂载到容器内的 /root/html 中

挂载后通过修改本机目录中的文件实现修改容器内相应目录的文件

 

容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:

- 带数据卷模式:宿主机目录 --> 数据卷 ---> 容器内目录
- 直接挂载模式:宿主机目录 ---> 容器内目录(不建议,可能会出现错误)

三、DockerFile 自定义镜像

 

标签:容器,虚拟化,宿主机,volume,镜像,Docker,docker
From: https://www.cnblogs.com/giaogiaoyang/p/17931536.html

相关文章

  • Docker Redash搭建
    准备docker-compose.ymlversion:'2'services:server:image:redash/redash:8.0.2.b37747command:serverdepends_on:-postgres-redisports:-"5000:5000"environment:PYTHONUNBUFFERED:0......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Row组件沿水平方向布局容器。子组件可以包含子组件。接口Row(value?:{space?:string|number})参数参数名参数类型必填默认值参数......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Column组件沿垂直方向布局的容器。子组件可以包含子组件。接口Column(value?:{space?:string|number})参数参数名参数类型必......
  • 【Docker】基础原理
    基础原理基础流程Docker镜像讲解Docker容器讲解创建容器的两种方式容器创建命令详解......
  • docker使用记录
    1、安装dockersudosnapinstalldocker--candidate2、登录容器注册服务dockerloginpurefdaanalytics.azurecr.io-u用户名-p密码用户名和密码在azure爬虫部署中心可以看见 3、拉取镜像(本地调试,这里我用的stag镜像)dockerpullpurefdaanalytics.azurecr.io/d......
  • docker部署Vaultwarden密码共享管理系统
    转自地址:https://blog.csdn.net/weixin_51697917/article/details/133654754Vaultwarden是一个开源的密码管理器,它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能,允许用户安全地存储和管理密码、敏感数据和身份信息。Vaultwarden的主要特点包括:1.安全的数据存......
  • 使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群
    阿里云ECS机器节点这里我们使用两台同一区域的ECS机器。机器配置:2核2G。(ps:阿里云99元一年的活动)一台安装coordinator(协调器),这里内网IP为172.18.60.11一台安装worker,这里内网IP为172.18.60.12操作系统两台机器分别安装了厂商的AlibabaCloudLinu......
  • docker
    查看docker的镜像dockerimages重启容器dockerrestartecece58c23ba删除容器dockerrm72e707ed2f2f停止容器dockerstopconfluencedocker容器启动自动启动某个容器dockerupdate--restart=always9274671a14ed查询docker容器时间dockerexec14806b328545date进入容器控制......
  • docker笔记
    docker设置:在执行TensorFlowServing容器的命令之前,你需要完成以下Docker相关的设置和操作:安装Docker:如果你的系统上尚未安装Docker,请按照以下步骤进行安装:对于Ubuntu系统:shell复制代码sudoapt-getupdatesudoapt-getinstalldocker.io对于CentOS系统:......
  • docker部署fastapi
    使用Docker部署FastAPI应用程序可以提供更好的可移植性和隔离性。以下是使用Docker部署FastAPI应用程序的一般步骤:创建Dockerfile:在项目的根目录下创建一个名为Dockerfile的文件,用于定义Docker镜像的构建过程。在Dockerfile中,你需要指定基础镜像、复制应用程序......