Docker(概述、安装、配置、镜像操作)

一、docker是什么?

docker是一种go语言开发的应用容器引擎,运行容器里的应用。docker是用来管理容器和镜像的一种工具。

容器引擎:docker、rocket、podman、containerd

容器与虚拟机的区别

容器:所有容器共享宿主机内核。使用namespace隔离资源。使用cgroup限制资源的最大使用量。秒级启动速度。容器相当于宿主机的进程,性能几乎没有损耗,一台主机能够支持成千上百个容器。

虚拟机:每个虚拟机都有独立的操作系统和内核。完全隔离,每个虚拟机都有独立的硬件资源。分钟级启动速度。需要hypervisor虚拟机管理程序对主机资源虚拟访问,至少有20~50%资源损耗。一台主机只能支持最多几十台虚拟机。

docker的三个核心概念

镜像
镜像是创建容器的基础,就是一个只读的模板文件,里面包括容器里的应用程序所需要的所有内容(包括程序代码文件,配置文件,运行环境,库文件等)。

容器
容器就是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器默认是相互资源隔离的。

仓库
仓库就是用来保存镜像的地方,有公有仓库和私有仓库。

Docker(概述、安装、配置、镜像操作)_第1张图片

 Docker(概述、安装、配置、镜像操作)_第2张图片

 Docker(概述、安装、配置、镜像操作)_第3张图片

 

二、docker的安装

yum安装

Docker(概述、安装、配置、镜像操作)_第4张图片

 #查看 docker 版本信息Docker(概述、安装、配置、镜像操作)_第5张图片

 Docker(概述、安装、配置、镜像操作)_第6张图片

 #docker 信息查看

Docker(概述、安装、配置、镜像操作)_第7张图片

 

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0                        # 容器数量
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1                            # 镜像数量
 Server Version: 20.10.3            # server 版本
 Storage Driver: overlay2            # docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs            # 宿主机上的底层文件系统
  Supports d_type: true
  Native Overlay Diff: true
 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 logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-693.el7.x86_64        # 宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 976.3MiB
 Name: localhost.localdomain
 ID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDT
 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://6ijb8ubo.mirror.aliyuncs.com/
 Live Restore Enabled: false
 

Docker 镜像操作

#搜索镜像

格式:docker search 关键字
docker search nginx

Docker(概述、安装、配置、镜像操作)_第8张图片

 #获取镜像

格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull nginx

#镜像加速下载

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

Docker(概述、安装、配置、镜像操作)_第9张图片

 Docker(概述、安装、配置、镜像操作)_第10张图片

 #查看镜像信息

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

Docker(概述、安装、配置、镜像操作)_第11张图片

#查看下载的镜像文件信息

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

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

Docker(概述、安装、配置、镜像操作)_第12张图片

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

#根据镜像的唯一标识 ID 号,获取镜像详细信息
格式:docker inspect 镜像ID号
docker inspect ae2feff98a0c

●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点

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

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

Docker(概述、安装、配置、镜像操作)_第13张图片

 Docker(概述、安装、配置、镜像操作)_第14张图片

 

#删除镜像
格式:
docker rmi 仓库名称:标签                #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号                        #会彻底删除该镜像

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

Docker(概述、安装、配置、镜像操作)_第15张图片

 #存出镜像:将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest            #存出镜像命名为nginx存在当前目录下
ls -lh

Docker(概述、安装、配置、镜像操作)_第16张图片

#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件

docker load < nginx

Docker(概述、安装、配置、镜像操作)_第17张图片

 

#上传镜像
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest soscscs/nginx:web        #添加新的标签时必须在前面加上自己的dockerhub的username
docker login                                #登录公共仓库
Username:soscscs
password:abc123456
docker push soscscs/nginx:web                    #上传镜像

你可能感兴趣的:(docker,容器,运维)