Docker 基本管理

一、docker 前言

云端服务器都有哪些提供商:

国内:

  1. 阿里云(Alibaba Cloud):

    • 提供ECS(Elastic Compute Service)弹性计算服务,包括通用型、计算型、内存型等多种实例,满足不同应用场景的需求。
    • 支持按需付费、包年包月等多种计费方式。
  2. 腾讯云(Tencent Cloud):

    • 提供CVM(Cloud Virtual Machine)云服务器,同样包括多种实例类型,如标准型、高性能型、内存优化型等。
    • 强调高性能和灵活的资源配置,支持秒级计费和灵活的网络配置。
  3. 华为云(Huawei Cloud):

    • 推出了ECS弹性云服务器,覆盖入门型、通用型、内存优化型、计算密集型等多种场景。
    • 特别强调安全、稳定和高性能,与华为的其他云服务和解决方案紧密集成。
  4. 百度智能云(Baidu Cloud):

    • 提供CCE(Cloud Container Engine)容器引擎和BCC(Baidu Cloud Compute)云服务器等服务。
    • BCC云服务器设计用于各种规模的业务需求,支持快速部署和弹性伸缩。
  5. 京东云(JD Cloud):

    • 云服务器产品包括云主机、GPU云主机等,满足计算密集型和AI应用需求。
    • 强调性价比和服务响应速度。
  6. 中国电信天翼云(China Telecom Tianyi Cloud):私有云

    • 提供包括云主机在内的全方位云计算服务,侧重于安全合规和企业级服务。
    • 利用电信的网络优势,提供稳定可靠的基础设施服务。
  7. 中国联通沃云(China Unicom Wo Cloud):

    • 提供包括云主机在内的多项云计算服务,适合不同行业和场景。
    • 依托联通的网络资源,强调网络质量和地域覆盖广度。

国外:

  1. 亚马逊云(Amazon Web Services, AWS):作为全球最大的云服务提供商,AWS 提供了广泛的服务,包括 EC2(Elastic Compute Cloud)云服务器、S3 存储、RDS 数据库服务、ELB 弹性负载均衡等,拥有全球数据中心网络。

  2. 微软云(Microsoft Azure):Azure 是一个全面的云服务平台,提供虚拟机、云存储、SQL 数据库等服务,以及强大的人工智能和机器学习功能,具备全球覆盖能力。

  3. 谷歌云(Google Cloud Platform, GCP):GCP 提供一系列云服务和工具,如 Compute Engine、Cloud Storage、Cloud SQL 等,依托谷歌的技术实力,特别在大数据处理、人工智能领域有显著优势。

云计算服务模式

云计算的服务模式是分几层的,分别是:

  • laaS : Infrastructure (基础设施) -as-a-Service.
  • PaaS : Platform (平台) -as-a-Service;
  • SaaS : Software (软件) -as-a-Service。

        这些服务模式代表了云计算如何为用户提供不同层次的资源和功能,旨在满足不同业务和技术需求。

        基础设施在最下端,平台在中间,软件在顶端。

  1. 基础设施即服务(IaaS, Infrastructure as a Service)

    • 定义:IaaS是云计算的基础层级,它向用户提供虚拟化的计算资源,如虚拟机、存储空间、网络和操作系统。用户可以根据需求租用这些基础设施,并对其进行配置和管理,但无需关心底层硬件的维护。
    • 应用场景:适用于需要高度定制化环境的企业,如运行特定应用、开发测试环境、数据备份和恢复等。
  2. 平台即服务(PaaS, Platform as a Service)

    • 定义:PaaS为开发人员提供了一个完整的开发和部署环境,包括操作系统、数据库、中间件、编程框架等。用户可以在服务商提供的平台上直接开发、运行和管理应用程序,无需关心底层基础设施的细节。
    • 应用场景:适合软件开发团队,可以加速应用开发、简化运维工作,如Web应用、移动应用后端、大数据分析平台等。
  3. 软件即服务(SaaS, Software as a Service)

    • 定义:SaaS是云计算服务的最高层级,直接向用户提供应用程序,用户通过互联网访问并使用这些应用,无需安装或维护软件。所有应用相关的后台管理、数据存储、安全更新等均由服务提供商负责。
    • 应用场景:广泛应用于日常办公、CRM、ERP、邮件服务、协作工具等领域,如Office 365、Salesforce、Google Workspace等。

        每种服务模式都代表了从基础设施到最终应用的不同层次的服务抽象,用户可以根据自身需求选择合适的服务模式,实现资源的灵活配置和高效利用,同时降低运营成本和提升业务敏捷性。

        目前中国使用最多的服务模式是 PaaS ,国外使用最多的是 SaaS。

docker是什么产品?

        Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其所有的依赖包打包成一个轻量级、可移植的容器(Container),然后可以在任何支持Docker的Linux或Windows操作系统机器上运行这个容器,实现应用程序的快速部署和一致性运行环境。Docker采用操作系统级别的虚拟化技术,相较于传统的虚拟机技术,它更为轻量级,启动速度快,资源利用率更高。

虚拟化产品有哪些?

  1. 服务器虚拟化产品

    • VMware vSphere:包括ESXi hypervisor和vCenter Server,提供企业级的虚拟化解决方案。
    • Microsoft Hyper-V:Windows Server内置的虚拟化平台,支持创建和管理虚拟机。
    • Xen:开源虚拟化技术,常用于Citrix XenServer和一些Linux发行版中。
    • KVM(Kernel-based Virtual Machine):基于Linux内核的开源虚拟化解决方案,广泛应用于云平台。
  2. 桌面虚拟化产品

    • VMware Horizon:提供虚拟桌面基础架构(VDI)和应用程序虚拟化。
    • Citrix Virtual Apps and Desktops(原XenDesktop):支持交付虚拟应用和桌面到任何设备。
    • Microsoft Remote Desktop Services:允许用户远程访问Windows应用和桌面。
  3. 存储虚拟化产品

    • VMware vSAN:软件定义的存储解决方案,直接在ESXi主机的本地存储上创建分布式存储层。
    • Microsoft Storage Spaces Direct:Windows Server中的存储虚拟化功能,支持使用直接附加存储创建存储池。
    • NetApp Data ONTAP:企业级存储虚拟化解决方案,支持数据管理和保护。
  4. 网络虚拟化产品

    • VMware NSX:提供软件定义的网络和安全服务,支持网络虚拟化和微分段。
    • Cisco ACI(Application Centric Infrastructure):以应用为中心的网络架构,提供网络虚拟化和策略驱动的网络管理。
    • Open vSwitch(OVS):开源的虚拟交换机,常用于OpenStack等云平台的网络虚拟化。
  5. 容器和轻量级虚拟化产品

    • Docker:容器化平台,用于应用程序的打包、分发和运行。
    • Kubernetes(K8s):容器编排系统,用于自动化容器化应用的部署、扩展和管理。
    • Linux Containers (LXC):基于操作系统级别的轻量级虚拟化技术,提供容器服务。

虚拟机架构:

① 寄居架构

虚拟机作为应用软件安装在操作系统上
可以在此应用软件上安装多个操作系统
直接安装在硬件上的系统为宿主

本机(真实的操作系统)   ---->   虚拟化产品   ---->   虚拟化操作系统或软件

虚拟机监视器:例如 VMware
VMware非常强大,真机可以上网,虚拟机也可以上网。
病毒木马都可以拖到虚拟机运行,与真机脱离,非常安全。

但是真机一旦崩了,虚拟机当然也崩了。所以实际生产环境用的是 源生架构

② 源生架构

虚拟机软件直接安装在计算机硬件上
虚拟机本身就是一个操作系统
在这个虚拟机中可以同时运行多个操作系统

裸金属 服务器  --->  虚拟化产品

虚拟化技术概述

虚拟化技术允许在单一物理硬件上创建和运行多个独立的虚拟环境,核心分类包括仿真虚拟化、半虚拟化和全虚拟化,每种技术各有侧重:

  • 仿真虚拟化:无需硬件支持,兼容性强,能在不同架构间运行操作系统,但性能较低。
  • 半虚拟化:需修改客户系统以提升性能,直接与虚拟化层通信,适用于特定场景和注重性能的环境。
  • 全虚拟化:现代技术大多结合硬件辅助,以实现接近原生的性能,同时保持高度兼容性,适用于广泛场景。

主流虚拟化产品对比

1. VMware系列
  • VMware Workstation: 面向个人用户的Windows或Linux上的虚拟机软件,适合开发、测试及多系统体验。
  • VMware Fusion: 专为Mac设计的虚拟化软件,允许在Mac上运行Windows及其他操作系统。
  • VMware ESXi & vSphere: 企业级裸金属虚拟化平台,直接安装在物理服务器上,提供高性能和集中管理能力。可通过客户端或网页端访问管理界面,网页端逐渐成为主流,便于远程管理和维护。

        之前用的是客户端连接  VMware vsphere

        现企业   使用 网页端连接 VMware vsphere

2. KVM/OpenStack
  • KVM: 基于Linux内核的虚拟化技术,开源且强大,尤其适用于构建私有云环境。与OpenStack等云平台结合,提供全面的虚拟化解决方案,适合大规模部署和服务自动化。
3. Xen
  • Xen Hypervisor: 是一个成熟的开源虚拟机监视器,特别是与RHEL(Red Hat Enterprise Linux)5紧密集成,支持半虚拟化和全虚拟化,适用于企业级服务器虚拟化场景。
4. 其他半/全虚拟化产品
  • Hyper-V (微软): 微软开发的虚拟化平台,特别适合Windows环境,广泛应用于Windows Server,支持半虚拟化技术。
  • VirtualBox: 一款广受欢迎的免费虚拟机软件,适用于多种操作系统,支持全虚拟化,适合开发测试和教育用途。
  • Citrix Hypervisor: 前身为XenServer,专注于提供高效的服务器和桌面虚拟化解决方案,适用于企业环境,支持全虚拟化。

重点:

① KVM   全虚拟化产品    调用linux内核 来完成

        我现在需要一个windows 内核 4C 8G 100G虚拟机,KVM 会对真实主机的资源进行逻辑分割,然后QEMU会通过软件层的接口进行调用,调用后交给虚拟机使用。  理论上属于寄居型。

② ESXI  (裸金属虚拟化)  企业用的特别多  除了云  就是它

        在裸金属服务器(无操作系统)上安装 vmware esxi 虚拟化软件,安装完成后可以通过客户端或网页端连接服务平台创建虚拟机(做快照),也可以使用快照安装。

二、docker 概述

docker 发展历史Docker入门笔记01:Docker容器技术的发展历程【转】 - 融爸 - 博客园 (cnblogs.com)

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


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

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

docker容器的优点

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

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

Docker与虚拟机的区别:

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

容器技术有哪些

  • docker
  • podman : 与docker相似 OCI  redhat
  • K8s
  • container : docker核心组件之一
  • LXC : linux 容器化技术
  • crio: 轻量级  专门用于 k8s
  • apche mesos : 容器编排平台  

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

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

namespace的六项隔离
namespace系统调用参数隔离内容
UTSCLONE_NEWUTS主机名与域名
IPCCLONE_NEWWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程编号
NETWORKCLONE_NEWNET网络设备、网络栈、端口等
MOUNTCLONE_NEWNS挂载点(文件系统)
USERCLONE_NEWUSER用户和用户组(3.8以后的内核才支持)

Docker核心概念:

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

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

        镜像 nginx  (run) 起来之后的一个实例,可以把容器看做时一个简易版的linux环境容器 就是集装箱(logo上的集装箱)

        镜像执行后所运行的实例就是容器。

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

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

仓库就是存放镜像的地方,仓库 分为 公有仓库 docker hub    私有仓库 harhor

三、安装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  安装最新版本

若想安装docker-ce-20.10.18,把docker-ce改成docker-ce-20.10.18即可

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

查看 docker 版本信息

docker version

docker 信息查看

docker info

[root@zk-kfk01 ~]# docker info
Client: Docker Engine - Community
 Version:    26.0.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.26.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0				        # 容器数量
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0        						# 镜像数量
 Server Version: 26.0.2                    # server 版本
 Storage Driver: overlay2                    # docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs                    # 宿主机上的底层文件系统
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs                    # Cgroups 驱动
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e377cd56a71523140ca6ae87e30244719194a521
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-693.el7.x86_64                # 宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.781GiB
 Name: zk-kfk01
 ID: b99d1afe-6152-4488-bedf-1b9936b6ab67
 Docker Root Dir: /var/lib/docker                    # docker 数据存储目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/		# registry 地址
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:							# 加速站点
  https://7mnevi1t.mirror.aliyuncs.com/
 Live Restore Enabled: false

四、docker 镜像创建与操作

搜索镜像

docker search 关键字

docker search nginx

获取镜像  nginx

docker pull 仓库名称[:标签]

docker pull nginx

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7mnevi1t.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查看镜像信息

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

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

docker images

REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;

获取镜像详细信息

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

docker inspect 镜像ID号

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

docker tag 名称:[标签] 新名称:[新标签]

镜像过多可以使用docker images | grep nggs 来查看。

删除镜像

docker rmi 仓库名称:标签

#当一个镜像有多个标签时,只是删除其中指定的标签


或者


docker rmi 镜像ID号

#会彻底删除该镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

存出镜像

将镜像保存成为本地文件

docker save -o 存储文件名 存储的镜像

docker save -o NG nginx:latest

载入镜像

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

docker load < 存出的文件
或者
docker load -i 存出的文件

上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com

可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest wang957/nginx:tre		#添加新的标签时必须在前面加上自己的dockerhub的username

docker login								#登录公共仓库
Username:wang957
password:你注册docker设置的密码


docker push wang957/nginx:tre					#上传镜像

五、Docker 容器操作

容器创建

就是将镜像加载到容器的过程。

docker create [选项] 镜像

常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell

查看容器的运行状态

docker ps -a            #-a 选项可以显示所有的容器

docker ps                #只显示运行中的容器

CONTAINER ID :容器的ID号
IMAGE:加载的镜像
COMMAND:运行的程序
CREATED:创建时间
STATUS:当前的状态
PORTS:端口映射
NAMES:名称

启动容器

ocker start 容器的ID/名称

或者

注意 IMAGE 是容器所加载的镜像,NAMES才是容器的名称。

创建并启动容器

        可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。

        注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出。

        docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

docker run centos:7 /usr/bin/bash -c ls /

 

 可以看到在执行docker  run 命令时下载了一个centos:7 的镜像

执行 docker ps -a 会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

在后台持续运行 docker run 创建的容器

        需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

使用 docker ps -a 可以看出容器始终处于 UP,运行状态

docker run -itd --name test1 centos:7 /bin/bash          #创建容器并持续运行容器

--name :指定容器名

docker run -it centos:7 /bin/bash

不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

终止容器运行

docker stop 容器的ID/名称

容器的进入

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。

docker exec -it 容器ID/名称 /bin/bash

-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。

docker run -it centos:7 /bin/bash

不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

复制文件到容器

怎么把宿主机的文件传入到容器内部?

echo "i am" > 1.txt

docker cp /opt/1.txt test01:/opt/
把宿主机opt目录下的1.txt文件复制到 容器名为 test01 的 opt 目录下。

容器名可以是容器的id



从容器复制文件到主机

docker cp test01:/opt/a.txt /opt/
把容器名为 test01 的 opt 目录下a.txt文件复制到 宿主机的opt目录下。

容器的导出与导入

        用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

导出格式:

docker export 容器ID/名称 > 文件名

docker export test01 > centos7.tar

导入格式:

cat 文件名 | docker import – 镜像名称:标签

#导入后会生成镜像,但不会创建容器

cat centos7.tar | docker import - centos:7

 先把导出的 centos7.tar文件传输到另外一台装有docker的机器

[root@zk-kfk01 opt]# scp centos7.tar 192.168.80.7:/opt

因为我们在 zk-kfk01 主机上把1.txt文件复制到了 test01 容器中,然后我们把test01 导出文件为centos7.tar 文件,我们所复制进去的数据也会一起被导出。

在我们导入到另外一台机器中后,1.txt文件依旧存在。

容器的生命周期

docker容器 七个状态

created

已创建  还未运行的容器

running

 正在运行中的容器

restarting

容器正在重启中

removing

容器正在迁移中

paused

 已暂停状态的容器(挂起)             stop杀死状态

exited

 停止状态的容器

dead

死亡    主要是操作系统出现异常 或 断电关机等有可能引发dead状态,但不常见

删除容器

docker rm [-f] 容器ID/名称

docker stop 2592d3fad0fb
docker rm 2592d3fad0fb				#删除已经终止状态的容器

docker rm -f 2592d3fad0fb			#强制删除正在运行的容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

docker images | awk 'NR>=2{print "docker rmi "$3}'| bash			#批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi		#删除none镜像

docker rm $(docker ps -a -q)		#批量清理后台停止的容器
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值