一文搞懂Docker(介绍、安装、镜像、容器、容器与对象)

一、Docker简介

1.简介

Docker是开发运行和部署应用程序的开放管理平台

开发人员能利用docker 开发和运行应用程序
运维人员能利用docker 部署和管理应用程序

在这里插入图片描述

2.Docker平台介绍

  • Docker提供了在一个完全隔离的环境中打包和运行应用程序的能力,这个隔离的环境被称为容器。
  • 由于容器的隔离性和安全性,因此可以在一个主机(宿主机)上同时运行多个相互隔离的容器,互不干预。
  • Docker已经提供工具和组件(Docker Client、Docker Daemon等)来管理容器的生命周期:

使用容器来开发应用程序及其支持组件
容器成为分发和测试你的应用程序的单元
准备好后,将您的应用程序部署到生产环境中,作为容器或协调服务。无论您的生产环境是本地数据中心,云提供商还是两者的混合,这都是一样的。

3.为什么使用Docker

  • Docker使您能够将应用程序与基础架构分开,以便您可以快速交付软件。
  • 借助Docker,您可以像管理应用程序一样管理基础架构。
  • 通过利用Docker的方法快速进行运输,测试和部署代码,您可以显着缩短编写代码和在生产环境中运行代码之间的延迟
  • 开发人员在本地编写代码,可以使用Docker同事进行共享,实现协同工作。
  • 使用Docker开发完成程序,可以直接对应用程序执行自动和手动测试。
  • 当开发人员发现错误或BUG时,可以直接在开发环境中修复后,并迅速将它们重新部署到测试环境进行测试和验证。
  • 利用Docker开发完成后,交付时,直接交付Docker,也就意味着交付完成。后续如果有提供修补程序或更新,需要推送到生成环境运行起来,也是一样的简单。

Docker主要解决的问题

  1. 保证程序运行环境的一致性
  2. 降低配置开发环境、生产环境的复杂度和成本
  3. 实现程序的快速部署和分发

2)Docker整体结构

1.Docker引擎介绍(Docker Engine)

  1. Docker Engine是一个包含以下组件的客户端-服务端(C/S)应用程序
  2. 服务端一个长时间运行的守护进程(Docker Daemon)
  3. REST API一套用于与Docker Daemon通信并指示其执行操作的接口
  4. 客户端命令行接口CLI( Command Line Interface)
  5. CLI利用Docker命令通过REST API直接操控Docker Daemon执行操作
  6. Docker Daemon负责创建并管理Docker的对象(镜像、容器、网络、数据卷)

在这里插入图片描述

2.Docker结构概览介绍

在这里插入图片描述

  • Docker客户端(Docker Client)
    •   Docker客户端(Docker Client)是用户与Docker进行交互的最主要方式。当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST连接远程服务端。
      
  • Docker服务端(Docker Server)
    •  Docker Daemon其实就是Docker 的服务端。它负责监听Docker API请求(如Docker Client)并管理Docker对象(Docker Objects),如镜像、容器、网络、数据卷等
      
  • Docker Registries
    •  俗称Docker仓库,专门用于存储镜像的云服务环境.
      
    •  Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件。同样的也可以类似Github那样搭建私有的仓库。
      
  • Docker 对象(Docker Objects)
    •  镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
      
    •  容器:镜像被运行起来后的实例。
      
    •  网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式。
      
    •  数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录。
      

3.Docker底层技术

  1. Docker使用Go语言实现

  2. Docker利用linux内核的几个特性来实现功能:

    利用Linux的命名空间(Namespaces)
    利用Linux控制组(Control Groups)
    利用Linux的联合文件系统(Union File Systems)
    这也就意味着Docker只能在linux上运行
    在windows、MacOS上运行Docker,其实本质上是借助了虚拟化技术,然后在linux虚拟机上运行的Docker程序。
    
  3. 容器格式( Container Format ):

     Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package,就是一个容器格式(Container Format)。
     Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期管理。
     容器格式(Container Format)有多种,其中Docker目前使用的容器格式被称为libcontainer
    
  4. Namespaces(命名空间):为Docker容器提供操作系统层面的隔离

     进程号隔离:每一个容器内运行的第一个进程,进程号总是从1开始起算
     网络隔离:容器的网络与宿主机或其他容器的网络是隔离的、分开的,也就是相当于两个网络
     进程间通隔离:容器中的进程与宿主机或其他容器中的进程是互相不可见的,通信需要借助网络
     文件系统挂载隔离: 容器拥有自己单独的工作目录
     内核以及系统版本号隔离:容器查看内核版本号或者系统版本号时,查看的是容器的,而非宿主机的
    
  5. Control Groups(控制组-cgroups):为Docker容器提供硬件层面的隔离

     控制组能控制应用程序所使用的硬件资源。
     基于该性质,控制组帮助docker引擎将硬件资源共享给容器使用,并且加以约束和限制。如控制容器所使用的内存大小。
    
  6. Union File Systems(联合文件系统–UnionFS):利用分层(layer)思想管理镜像和容器

二、Docker安装

1)Docker-CE和Docker-EE版本介绍

Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。
Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计。
相比Docker-EE,增加一些额外功能,更重要的是提供了更安全的保障。
此外,Docker的发布版本分为Stable(稳定)版和Edge(测试)版,区别在于前者是按季度发布的稳定版(发布慢),后者是按月发布的边缘版(发布快)。
通常情况下,Docker-CE足以满足我们的需求。主要针对Docker-CE进行学习。

1.版本情况

自从区分docker-ce和docker-ee之后,docker最初始的版本是17.03,也就是17年发布的,所有17是老版本和新版本的分水岭
在这里插入图片描述

2.系统支持情况

在这里插入图片描述

2)Centos上安装Docker-CE

  1. 安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加源信息(把yum源设置为阿里云)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 检查是否设置成功
cat /etc/yum.repos.d/docker-ce.repo 
  1. 安装Docker
sudo yum -y install docker-ce
  1. 开启docker服务
systemctl start docker
  1. 查看Docker信息
docker info
  1. 卸载老版本
sudo yum remove docker\
				docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine
yum list installed | grep docker
yum remove docker-ce.x86_64 docker-ce-cli.x86_64
rm -rf /var/lib/docker
sudo yum update

3)Ubuntu上安装Docker-CE

"""
	系统要求:Ubuntu 14.04及其以上版本
"""
1.安装必要工具
	sudo apt-get update
	sudo apt-get install \
	     apt-transport-https \
	     ca-certificates \
	     curl \
	     gnupg-agent \
	     software-properties-common
2.安装GPG证书
	curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
	换成阿里云
	curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
2.1 写入软件源信息
	#官方
	sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
	#换成阿里云
	sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

3.更新并安装docker-ce
	sudo apt-get -y install docker-ce
4.开启docker服务
	systemctl status docker
5.卸载
	sudo apt-get remove docker docker-engine docker.io containerd runc

"""
	安装成功后,使用docker version查看
		如果出现权限禁止,需要切换到root用户执行
		su
		输入密码
		docker version
"""

4)Mac/Windows上安装Docker-CE

下载地址:http://get.daocloud.io/#install-docker-for-mac-windows

Docker for Windows 在Windows上运行Docker。系统要求,Windows10x64位,支持Hyper-V。
Docker for Mac 在Mac上运行Docker。系统要求,OS X 10.10.3 或者更高版本,至少4G内存,4.3.30版本以前的VirtualBox会与Docker for Mac产生冲突,所以请卸载旧版本的VitrualBox。
如果您的电脑版本过旧,可以使用 Docker Toolbox 在Windows或者Mac上运行Docker。适用于Mac OS X 10.8+ 或者 Windows 7/8.1

5)加速配置

为什么使用加速器?

配置Docker加速器,将会提升在国内获取Docker官方镜像的速度,否则后面下载镜像(docker pull)的过程会很慢,甚至有可能无法下载镜像

配置阿里云/清华源加速器(Docker17以上版本)

方式1(仅对当次有效)
	docker run centos:7 --registry-mirror=https://docker.mirrors.ustc.edu.cn
	#修改 /etc/default/docker,加入 DOCKER_OPTS=”镜像地址”,可以有多个 
	DOCKER_OPTS="--registry-mirror=https://docker.mirrors.ustc.edu.cn"
方式2(json 配置文件的方式)(严格的json格式,不符合格式会报错)
	vi /etc/docker/daemon.json  	
	{
    
    
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
	}
	'''
	几个速度比较快的镜像地址
	Docker 官方中国区: https://registry.docker-cn.com
	网易: http://hub-mirror.c.163.com
	中科大: https://docker.mirrors.ustc.edu.cn
	'''
方式3(阿里云方式,同方式2,只是阿里云分配的私有地址,自己用自己的)
	参考教程:https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.545.OY7haW
	vi /etc/docker/daemon.json  
	{
    
    
	"registry-mirrors": ["xxxxxxxxxxxxx"]
	}

在这里插入图片描述

三、镜像

1)镜像介绍

镜像是一个Docker的可执行文件 其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
通过镜像可以创建一个或多个容器

2)镜像操作

1.镜像搜索-docker search
	# 作用:
	搜索Docker Hub(镜像仓库)上的镜像
	# 命令格式:
		docker search [OPTIONS] TERM
	# 命令参数(OPTIONS):
		-f,  --filter filter   	根据提供的格式筛选结果
		     --format string   	利用Go语言的format格式化输出结果
		     --limit int       	展示最大的结果数,默认25--no-trunc        	内容全部显示
	        
	 #  命令演示
	docker search -f is-offical=true ubuntu
	docker search ubuntu
2.镜像查看 - docker images/docker image ls
	# 作用:
	列出本地镜像
	# 命令格式:
		docker images [OPTIONS] [REPOSITORY[:TAG]]  
	     或者  docker image ls [OPTIONS] [REPOSITORY[:TAG]]
	# 命令参数(OPTIONS):	
		-a, --all             		展示所有镜像 (默认隐藏底层的镜像)
		     --no-trunc        	不缩略显示
		-q, --quiet           	只显示镜像ID
	# 命令演示:
	docker images
	docker images centos:latest
3.镜像下载 - docker pull
	# 作用:
	下载远程仓库(如Docker Hub)中的镜像
	# 命令格式:
		docker pull [OPTIONS] NAME[:TAG|@DIGEST]
	# 命令参数(OPTIONS):
		-a, --all-tags               	下载所有符合给定tag的镜像
	# 命令演示:
	docker pull ubuntu
	docker pull centos
4.镜像删除 - docker rmi/docker image rm
	# 作用:
	将本地的一个或多个镜像删除
	# 命令格式:
		docker rmi [OPTIONS] IMAGE [IMAGE...]
	     或者  docker image rm [OPTIONS] IMAGE [IMAGE...]
	# 命令参数(OPTIONS):	
		-f, --force      		强制删除
	# 命令演示:
	docker rmi e934 452a
5.镜像保存备份 – docker save
	# 作用:
	将本地的一个或多个镜像打包保存成本地tar文件(输出到STDOUT)
	# 命令格式:
		docker save [OPTIONS] IMAGE [IMAGE...]
	# 命令参数(OPTIONS):	
		-o, --output string   		指定写入的文件名和路径
	# 命令演示:
	docker save -o linux_images.tar centos ubuntu
6.镜像备份导入 - docker load
	# 作用:
	将save命令打包的镜像导入本地镜像库中
	# 命令格式:
		docker load [OPTIONS]
	# 命令参数(OPTIONS):	
		-i,  --input string   	指定要打入的文件,如没有指定,默认是STDIN
		-q, --quiet          		不打印导入过程信息
	# 命令演示
	docker load -i linux_images.tar
	docker load -i linux_images.tar -q
7.镜像重命名 – docker tag
	# 作用:
	对本地镜像的NAME、TAG进行重命名,并新产生一个命名后镜像
	# 命令格式:
		docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
	# 命令参数(OPTIONS):	# 命令演示
	docker tag e934 centos-newname:newtag
8.镜像详细信息 – docker image inspect/docker inspect
	# 作用:
	查看本地一个或多个镜像的详细信息
	# 命令格式:
		docker image inspect [OPTIONS] IMAGE [IMAGE...]
	      或者 docker inspect [OPTIONS] IMAGE [IMAGE...]
	# 命令参数(OPTIONS):	
		-f, --format string          利用特定Go语言的format格式输出结果
	# 命令演示:
	docker image inspect -f "{
    
    {json .id}}" centos
	docker image inspect -f "{
    
    {json .Created}}" centos
	docker image inspect
9.镜像历史信息 – docker history
	# 作用:
	查看本地一个镜像的历史(历史分层)信息
	# 命令格式:
		docker history [OPTIONS] IMAGE
	# 命令参数(OPTIONS):
		-H, --human		将创建时间、大小进行优化打印(默认为true)
		-q, --quiet           	只显示镜像ID
		     --no-trunc        	不缩略显示
	# 命令演示
	docker history ubuntu
	docker history ubuntu -H=false

3)镜像总结

在这里插入图片描述

四、容器

1)容器介绍

容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行
Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。
容器具备一定的生命周期。另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。

2)容器与虚拟机

容器和虚拟机一样,都会对物理硬件资源进行共享使用。
容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等)。
容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。也就是说,在容器中的操作,如同在一个虚拟机(操作系统)中操作一样。
同虚拟机一样,容器创建后,会存储在宿主机上:linux上位于/var/lib/docker/containers下

注意:容器并不是虚拟机,但它们有很多相似的地方
虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上以一系列进程的结合。
容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、Guest OS),虚拟机额外更多的性能消耗;其次创建
启动或关闭容器,如同创建、启动或者关闭进程那么轻松,而创建、启动、关闭一个操作系统就没那么方便了。也因此,意味着在给定的硬件上能运行容器,
更多数量的甚至可以直接把Docker运行在虚拟机上。

在这里插入图片描述

3)容器生命周期

1.虚拟机的生命周期

在这里插入图片描述

2.容器的生命周期

在这里插入图片描述

4)容器生命周期管理

1. 容器创建 – docker create
	# 作用:
	利用镜像创建出一个Created 状态的待启动容器
	# 命令格式:
		docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
	# 命令参数(OPTIONS):查看更多
		-t, --tty           		分配一个伪TTY,也就是分配虚拟终端
	  	-i, --interactive    		即使没有连接,也要保持STDIN打开
	  	--name          			为容器起名,如果没有指定将会随机产生一个名称
	# 命令参数(COMMAND\ARG):
		COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令
		ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等
	# 命令演示:
	docker create --name test-container centos ps -A
	docker create -ti --name test-container2 centos /bin/bash
	docker ps -a
2. 容器启动 – docker start
	# 作用:
	将一个或多个处于创建状态或关闭状态的容器启动起来
	# 命令格式:
		docker start [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):
		-a, --attach		将当前shell的 STDOUT/STDERR 连接到容器上
		-i, --interactive		将当前shell的 STDIN连接到容器上	
	# 命令演示:
	docker ps -a
	docker start -a 65ebc
	docker start test-container2
3. 容器创建并启动 – docker run
	# 作用:
	利用镜像创建并启动一个容器
	# 命令格式:
		docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
	# 命令参数(OPTIONS):查看更多
		-t, --tty           		分配一个伪TTY,也就是分配虚拟终端
	      	-i, --interactive    	即使没有连接,也要保持STDIN打开
	          	     --name          		为容器起名,如果没有指定将会随机产生一个名称
		-d, --detach		在后台运行容器并打印出容器ID
		--rm			当容器退出运行后,自动删除容器
	# 命令参数(COMMAND\ARG):
		COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令
		ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等
	# 命令演示:
	docker run centos ps -A
	docker run -d centos ps -A
	docker run --rm -d centos ps -A
	docker run -d centos ps -A
4. docker run 与 docker create + docker start
	docker run 相当于 docker create + docker start –a       前台模式
	docker run -d 相当于 docker create + docker start       后台模式
5. 容器暂停 – docker pause
	# 作用:
	暂停一个或多个处于运行状态的容器
	# 命令格式:
		docker pause CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):# 命令演示
	docker ps -a
	docker pause test-container2
	docker ps -a # 容器是Pause状态
6. 容器取消暂停 – docker unpause
	# 作用:
	取消一个或多个处于暂停状态的容器,恢复运行
	# 命令格式:
		docker unpause CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):# 命令演示:
	docker unpause test-container2
	docker ps -a # 处于运行状态
7. 容器关闭 – docker stop
	# 作用:
	关闭一个或多个处于暂停状态或者运行状态的容器
	# 命令格式:
		docker stop [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):
		-t, --time int   		关闭前,等待的时间,单位秒(默认 10s)	
	# 命令演示:
	docker stop -t 1 容器id
8. 容器终止 – docker kill
	# 作用:
	强制并立即关闭一个或多个处于暂停状态或者运行状态的容器
	# 命令格式:
		docker kill [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):
		-s, --signal string   	指定发送给容器的关闭信号 (默认“KILL”信号)	
	# 命令演示:
	docker kill test-container2
9. docker stop和docker kill的区别
	# 一 前提知识点:
	    1 Linux其中两种终止进程的信号是:SIGTERM和SIGKILL
	    2 SIGKILL信号:无条件终止进程信号。
	    进程接收到该信号会立即终止,不进行清理和暂存工作。
	    该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
	    3  SIGTERM信号:程序终结信号,可以由kill命令产生。
	    与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。
	# 二 docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。
	# 三 docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。
	# 四 因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。
	# 五 此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。 
10. 容器重启 – docker restart
	# 作用:
	重启一个或多个处于运行状态、暂停状态、关闭状态或者新建状态的容器
	该命令相当于stop和start命令的结合
	# 命令格式:
		docker restart [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):
		 -t, --time int   		重启前,等待的时间,单位秒(默认 10s) 
					实则是关闭前等待的时间
11. 容器删除 – docker container rm
	# 作用:
	删除一个或多个容器
	# 命令格式:
		docker container rm [OPTIONS] CONTAINER [CONTAINER...]
	      或者 docker rm [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):
		 -f, --force     		强行删除容器(会使用 SIGKILL信号) 
		 -v, --volumes   		同时删除绑定在容器上的数据卷	
	# 命令演示
	docker rm -f 容器id 容器名
12. 容器详细信息 – docker container inspect
	# 作用:
	查看本地一个或多个容器的详细信息
	# 命令格式:
		docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
	      或者 docker inspect [OPTIONS] CONTAINER [CONTAINER...]
	# 命令参数(OPTIONS):	
		-f, --format string	利用特定Go语言的format格式输出结果
		-s, --size		显示总大小
	# 命令演示
	docker container inspect -f "{
    
    {json .State.Status}}" 容器id
	docker container inspect 容器id
13. 容器日志信息 – docker logs
	# 作用:
	查看容器的日志信息
	# 命令格式:
		docker logs [OPTIONS] CONTAINER
	# 命令参数(OPTIONS):	
		    --details		显示日志的额外信息
		-f, --follow         		动态跟踪显示日志信息
		    --since string  	只显示某事时间节点之后的	
	 	    --tail string    		显示倒数的行数(默认全部)
		-t, --timestamps     	显示timestamps时间
		    --until string   	只显示某事时间节点之前的
	# 注意:
		容器日志中记录的是容器主进程的输出STDOUT\STDERR
14. 容器重命名 – docker rename
	# 作用:
	修改容器的名称
	# 命令格式:
		docker rename CONTAINER NEW_NAME
	# 命令参数(OPTIONS):	15. 容器连接 – docker attach
	# 作用:
	将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接
	# 命令格式:
		docker attach [OPTIONS] CONTAINER
	# 命令参数(OPTIONS):	
		--no-stdin             	不绑定STDIN
16. 容器中执行新命令 – docker exec
	# 作用:
	在容器中运行一个命令
	# 命令格式:
		docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
	# 命令参数(OPTIONS):	
		-d, --detach               	后台运行命令
		-i, --interactive		即使没连接容器,也将当前的STDIN绑定上
		-t, --tty                  	分配一个虚拟终端
		-w, --workdir string       	指定在容器中的工作目录
		-e, --env list             	设置容器中运行时的环境变量

7)容器总结

在这里插入图片描述

五、Docker的容器与镜像

1)容器与镜像的关系

在这里插入图片描述

2)容器操作

1.容器提交 – docker commit
	# 作用:
	根据容器生成一个新的镜像
	# 命令格式:
		docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
	# 命令参数(OPTIONS):
		-a, --author string    	作者
		-c, --change list      	为创建的镜像加入Dockerfile命令
		-m, --message string   	提交信息,类似git commit -m
		-p, --pause            	提交时暂停容器 (default true)
	# 命令演示
	docker run --rm -dti centos bash
	docker exec -d 容器id号 yum -y install net-tools
	docker commit -m 'install net-tools' 容器id号 centos-net-tools:lastest
	docker images
	
	docker history centos-net-tools
2.容器导出 – docker export
	# 作用:
	将容器当前的文件系统导出成一个tar文件
	# 命令格式:
		docker export [OPTIONS] CONTAINER
	# 命令参数(OPTIONS):
		-o, --output string   		指定写入的文件,默认是STDOUT
3.容器打包的导入 – docker import
	# 作用:
	从一个tar文件中导入内容创建一个镜像
	# 命令格式:
		docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
	# 命令参数(OPTIONS):
		-c, --change list      	为创建的镜像加入Dockerfile命令
		-m, --message string   	导入时,添加提交信息

猜你喜欢

转载自blog.csdn.net/MeiJin_/article/details/128373914