【Docker】 基本管理

Docker是一种轻量级应用容器引擎,其核心概念包括镜像、容器和仓库。容器化提供灵活、轻量且可扩展的解决方案。Docker与虚拟机相比启动更快,资源损耗更低。本文介绍了Docker的安装、镜像和容器的操作,如搜索、获取、启动、停止和删除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Docker 概述

容器化越来越受欢迎,因为容器是:

Docker与虚拟机的区别:

容器在内核中支持2种重要技术:

linux命名空间

Docker核心概念:

安装 Docker

安装依赖包

设置阿里云镜像源

安装 Docker-CE并设置为开机自动启动

查看 docker 版本信息

docker 信息查看

 Docker 镜像操作

搜索镜像

获取镜像

镜像加速下载

查看镜像信息

查看下载的镜像文件信息

查看下载到本地的所有镜像

根据镜像的唯一标识 ID 号,获取镜像详细信息

为本地的镜像添加新的标签

删除镜像

存出镜像:将镜像保存成为本地文件

载入镜像:将镜像文件导入到镜像库中

上传镜像

Docker 容器操作

启动容器

创建并启动容器

终止容器运行

容器的进入

容器的导出与导入

删除容器


Docker 概述

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

容器化越来越受欢迎,因为容器是:

●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。


容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

Docker与虚拟机的区别:

特性                             Docker容器                          虚拟机
启动速度                         秒级                                  分钟级
计算能力损耗                 几乎无                         损耗 50%左右
性能                               接近原生                              弱于
系统支持量(单机)       上千个                               几十个
隔离性                          资源隔离/限制                     完全隔离

容器在内核中支持2种重要技术:

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

linux命名空间

名称 查看位置 支持版本 说明
cgroup /proc/[pid]/ns/cgroup since Linux 4.6

控制进程使用的资源

(如限制内存最大使用量)

IPC /proc/[pid]/ns/Ipc since Linux 3.0 隔离进程间的通信
Mount /proc/[pid]/ns/ since Linux 3.8

似的各进程仿佛有各自的文件系统

有点像chroot

Network /proc/[pid]/ns/ since Linux 3.0 进程可以有独立的网络空间
PID /proc/[pid]/ns/ since Linux 3.8 隔离pid
USER /proc/[pid]/ns/ since Linux 3.8 隔离用户
UTS(UNIX Time-Sharing) /proc/[pid]/ns/ since Linux 3.0 隔离nodename、hostname

Docker核心概念:

●镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

●容器
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

●仓库
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 

安装 Docker

目前 Docker 只能支持 64 位系统。

systemctl stop firewalld.service
setenforce 0

安装依赖包

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

yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装 Docker-CE并设置为开机自动启动

yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service 

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

查看 docker 版本信息

docker version
Client: Docker Engine - Community
 Version:           24.0.4
 API version:       1.43
 Go version:        go1.20.5
 Git commit:        3713ee1
 Built:             Fri Jul  7 14:54:21 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.4
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.5
  Git commit:       4ffc614
  Built:            Fri Jul  7 14:53:26 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker 信息查看

docker info
Client: Docker Engine - Community
 Version:    24.0.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.19.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0                                # 容器数量     
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0                                    # 镜像数量
 Server Version: 24.0.4                       # server 版本 
 Storage Driver: overlay2                     # docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs                     # 宿主机上的底层文件系统
  Supports d_type: true
  Using metacopy: fal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值