虚拟化与Docker基本概念与Docker的安装

Docker

Docker 是一个开源的应用容器引擎,它最初是用 Go 语言开发的。Docker 允许开发者将应用程序及其依赖、库和环境打包到一个可移植的容器中,这个容器可以在任何支持 Docker 的 Linux 或 Windows 机器上运行,保证了应用在不同环境之间的一致性和可迁移性。

Docker与VM虚拟机的区别

容器 虚拟机
快速启动 启动速度相对较慢
通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量 完全隔离。每个虚拟机都有独立的硬件资源
容器相当于宿主机的进程,性能几乎没有损耗 需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,有一定的性能损耗
单机容量能够支持成百上千个容器 单机容量只能支持最多几十个虚拟机
所有容器共享宿主机内核 每个虚拟机都有独立的操作系统和内核

Docker的核心概念

Docker,这一革命性的容器化技术,以其简单、轻量且高效的特点,彻底改变了软件开发和部署的方式。理解Docker的三个核心概念------镜像、容器和仓库,是掌握这一技术的基础。

镜像(Images)

Docker镜像,可以被视为容器的"蓝图"。它是一个静态的文件,包含了创建Docker容器所需的所有指令和代码。镜像是由多层叠加而成的,每层对应于构建过程中的一个指令。这些层是只读的,确保了镜像的可复现性和一致性。用户可以通过编写Dockerfile来定义和构建自己的镜像,Dockerfile是一个包含了一系列构建指令的文本文件。

容器(Containers)

容器是Docker镜像的运行实例。当您从镜像启动一个容器时,Docker会在镜像的最上层添加一个读写层,用于保存容器运行时的状态更改。容器是高度隔离的,它们拥有自己的文件系统、网络配置和进程空间,这使得容器可以在不影响宿主机或其他容器的情况下运行。容器可以被轻松地启动、停止、删除和重启,它们的生命周期管理是通过Docker提供的工具和API来实现的。

仓库(Repositories)

Docker仓库是存储和分发Docker镜像的地方。Docker Hub是Docker官方提供的一个公共仓库,用户可以在这里上传或下载公开的镜像。仓库可以有多个标签,每个标签对应于仓库中的一个镜像版本,这允许用户为同一仓库中的不同版本镜像指定不同的标签。除了公共仓库,Docker还支持私有仓库,这使得企业在内部网络或云服务中存储和管理自己的镜像成为可能。

Docker的安装

Docker只支持64位系统

安装 Docker的依赖环境

bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2 

设置阿里云镜像源

bash 复制代码
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装DOCKER最新版本

复制代码
yum install -y docker-ce docker-ce-cli containerd.io

启动docker

bash 复制代码
systemctl start docker.service

Docker基本命令

查看docker版本信息

bash 复制代码
docker version 

查看docker基本信息

bash 复制代码
docker  info  

镜像管理

  • 列出本地镜像

    bash 复制代码
    docker images
  • 搜索镜像

    bash 复制代码
    docker search 镜像名称
  • 拉取镜像

    bash 复制代码
    docker pull 镜像名称
  • 删除镜像

    bash 复制代码
    docker rmi 镜像ID

上图镜像ID一样,但是TAG不一样若我要删除TAG为web4的镜像可以用以下命令

bash 复制代码
docker rmi nginx:web4

用ID删除会删除所有id为 2ac752d7aeb1的镜像,,效果如下

bash 复制代码
docker rmi  -f 2ac752d7aeb1

如果不加-f会报错Error response from daemon: conflict: unable to delete 2ac752d7aeb1 (must be forced) - image is referenced in multiple repositories

意思是有多个镜像ip为2ac752d7aeb1

容器管理

  • 创建并运行容器

    bash 复制代码
    docker run 镜像名称

我要用Nginx镜像创建一个容器并且在后台运行 ,容器名为nginx1并且docker上的nginx的80端口在寄主机上的6930端口上命令如下

bash 复制代码
docker run -d nginx1 -p 6930:80 nginx
			#-d后台运行  -p 指定端口号,前为真机后为虚拟机IP
  • 列出所有容器

    bash 复制代码
    docker ps

docker ps -a 可以查看所有的容器

docker ps 只能看见正在运行的容器

  • 查看容器详情

    bash 复制代码
    docker  inspect 容器ID
  • 查看容器日志

    bash 复制代码
    docker logs 容器ID
  • 停止容器

    bash 复制代码
    docker stop 容器ID
  • 启动容器

    bash 复制代码
    docker start 容器ID
  • 删除容器

    bash 复制代码
    docker rm 容器ID

仓库管理

  • 登录Docker Hub

    bash 复制代码
    docker login
  • 推送镜像到仓库

    bash 复制代码
    docker push 镜像名称
  • 拉取镜像到仓库

    bash 复制代码
    docker pull 镜像名称

容器操作

  • 进入容器

    bash 复制代码
    docker exec -it 容器ID /bin/bash
  • 复制文件

访问docker搭建的nginx

将我寄主机器上的index.html文件考入容器中

bash 复制代码
docker cp 主机路径 容器ID:容器路径
bash 复制代码
docker cp /opt/index.html  32564ccb17b5:/usr/share/nginx/html

查看Nginx主页

成功

下面这条命令是能将docker容器上的文件拷贝到寄主机上

bash 复制代码
docker cp 容器ID:容器路径 主机路径

我要将下图文件test1文件从docker 容器中拷贝到寄主机/opt目录下

bash 复制代码
docker cp 32564ccb17b5:/opt/test1 /opt
  • 查看容器内部进程

    bash 复制代码
    docker top 容器ID
  • 查看容器详情

    bash 复制代码
    docker inspect 容器ID
  • 备份容器

bash 复制代码
docker export 32564ccb17b5 > nginx2.tar
  • 导入容器
bash 复制代码
 cat nginx2.tar |docker import - nginx:2

仓库管理

  • 搜索仓库

    bash 复制代码
    docker search 仓库名称
  • 保存镜像
    备份镜像

    bash 复制代码
    docker save -o 文件名 镜像名称
  • 加载镜像

    bash 复制代码
    docker load < 文件名
相关推荐
注塑机数据采集联网3 分钟前
注塑机生产管控MES系统应用
大数据·运维·服务器·人工智能·物联网
海宇服务19 分钟前
零信任架构实战:基于海宇全国车辆配置查验构建自动化二手商用车出厂参数建档网关
运维·人工智能·架构·自动化·1024程序员节
Brilliantwxx2 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
见闻小天地2 小时前
新手入门:印刷包装设备的伺服和PLC运动控制方案各管什么?七步选型讲清楚
运维·网络·数据库·人工智能
csdn_aspnet2 小时前
Docker Prune:完整指南与上手示例
运维·docker·容器·prune
ynchyong3 小时前
linux中的 sed` 与 `seq`
linux·运维·sed·seq·文本工具
乌恩大侠4 小时前
Supermicro 发布六款 NVIDIA ARC 服务器:从 1U 边缘基站到 4U 八卡 AI-RAN 平台,全面对比
运维·服务器·人工智能
谢白羽5 小时前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
ai_coder_ai5 小时前
使用Web IDE边写自动化脚本
运维·前端·自动化
wacsii5 小时前
【Linux基础开发工具(五)】Git版本控制器从入门到实战:核心操作三板斧与新手避坑指南
linux·运维·服务器