Docker 基本管理

 

目录

一、Docker 概述

1.1、什么是 Docker

1.2、Docker 的优势 

1.3、镜像 

1.4、容器 

1.5、仓库 

二、安装 Docker 

2.1、安装 Docker 依赖版本环境 

2.2、安装 Docker 并设置为开机自启 

2.3、通过检查 Docker 版本查看 Docker 服务 

三、Docker 镜像操作 

3.1、搜索镜像 

 3.2、获取镜像

3.3、查看镜像信息 

3.4、删除镜像 

3.5、存出镜像和载入镜像 

四、Docker 容器操作 

4.1、容器的创建与启动 

4.2、容器的运行与终止 

4.3、容器的进入 

4.4、容器的导出与导入

4.5、容器的删除 

五、Docker 镜像管理 

5.1、Docker 镜像结构 

5.2、Dockerfile 介绍 

六、案例:构建各类 Docker 镜像服务 

6.1、案例环境 

6.2、案例拓扑原理 

6.3、案例需求 

6.4、案例实施 

 6.4.1、构建 sshd 容器服务

6.4.2、构建 nginx 容器服务

6.4.3、构建 MySQL 容器服务 

6.4.4、构建 LNMP 容器服务 

七、Docker 的数据管理 

7.1、数据卷 

7.2、创建数据卷 

7.3、挂载主机目录作为数据卷 

7.4、数据卷容器 


随着计算机近几十年的蓬勃发展,产生了大量优秀系统和软件。软件开发人员可以自由选择各种软件应用。但同时带来的问题就是需要维护一个非常庞大的开发、测试和生产环境。 面对这种情况,Docker 容器技术横空出世,提供了简单、灵活、高效的解决方案,不需要过多地改变现有的使用习惯,就可以和已有的工具,如 OpenStack 等配合使用。因此,掌握 Docker 相关技术也是 途经云计算的必经之路。

本章将依次介绍 Docker 的三大核心概念——镜像、容器、仓库,以及安装 Docker 与介绍围绕镜像和容器的具体操作。 

一、Docker 概述

因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式,在开发环境中能够快速提高工作效率。 

Docker 容器能够帮助开发人员、系统管理员、质量管理和版本控制工程师在一个生产环节中 一起协同工作。制定一套容器标准能够使系统管理员更改容器的时候,程序员不需要关心容器的变 化,而更专注自己的应用程序代码。从而隔离开了开发和管理,简化了开发和部署的成本。 

 Docker 产品的 Logo

1.1、什么是 Docker

如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。 

1.2、Docker 的优势 

Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;Docker 核心解决的问题是利用容器来实现类似虚拟机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能。 Docker 操作方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署。下表将 Docker 容器技术与传统虚拟机的特性进行了比较。 

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

 Docker 容器与传统虚拟机的区别

Docker 之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层,而 Docker 容器则是直接在操作系统层面之上实现的虚拟化。下图是 Docker 与传统虚拟机架构。 

 Docker 与传统虚拟机架构

1.3、镜像 

镜像、容器、仓库是 Docker 的三大核心概念。其中 Docker 的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 CentOS 操作系统环境,称为一个 CentOS 镜像;也可以是一个安装了 MySQL 的应用程序,称之为一个 MySQL 镜像等等。 

Docker 提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接使用。 

1.4、容器 

Docker 的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证安全性的平台。可以将容器看作是一个简易版的 Linux 环境, Docker 利用容器来运行和隔离应用。 

1.5、仓库 

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

仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个仓库。每个仓库集中存放某一类镜像,并且使用不同的标签(tag)来区分它们。目前最大的公共仓库是 docker Hub,存放了数量庞大的镜像供用户下载使用。 


二、安装 Docker 

Docker 支持在主流的操作系统平台上进行使用,包括 Windows 系统、Linux 系统、以及 Mac OS 系统等。目前最新的 RHEL、CentOS 以及 Ubuntu 系统官方软件源中都已经默认自带了 Docker 包,可直接安装使用,也可以用 Docker 自己的 YUM 源进行配置。 

CentOS 系统下安装 Docker 可以有两种方式:一种是使用 CURL 获得 Docker 的安装脚本进行安装,另一种是使用 YUM 仓库来安装 Docker。 

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

2.1、安装 Docker 依赖版本环境 

[root@centos7-13 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@centos7-13 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2、安装 Docker 并设置为开机自启 

[root@centos7-13 ~]# yum -y install docker-ce-19.03.15 docker-ce-cli-19.03.15
[root@centos7-13 ~]# systemctl start docker
[root@centos7-13 ~]# systemctl enable docker

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

2.3、通过检查 Docker 版本查看 Docker 服务 

[root@centos7-13 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.15
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        99e3ed8919
 Built:             Sat Jan 30 03:17:57 2021
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.15
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       99e3ed8919
  Built:            Sat Jan 30 03:16:33 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.32
  GitCommit:        8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

三、Docker 镜像操作 

运行 Docker 容器前需要本地存在对应的镜像。如果不存在本地镜像,Docker 就会尝试从默认镜像仓库下载。镜像仓库是由 Docker 官方维护的一个公共仓库,可以满足用户的绝大部分需求。 用户也可以通过配置来使用自定义的镜像仓库。 

下面具体介绍如何操作 Docker 镜像。 

3.1、搜索镜像 

在使用下载镜像前,可以使用 docker search 命令搜索远端官方仓库中的共享镜像。 

命令格式:docker search 关键字 

例如:搜索关键字为 nginx 的镜像的执行命令和结果如下: 

[root@centos7-13 ~]# docker search nginx
NAME                                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                             Official build of Nginx.                        19876               [OK]                
bitnami/nginx                                     Bitnami container image for NGINX               187                                     [OK]
nginxinc/nginx-unprivileged                       Unprivileged NGINX Dockerfiles                  149                                     
nginxproxy/nginx-proxy                            Automated nginx proxy for Docker containers …   137                                     
nginxproxy/acme-companion                         Automated ACME SSL certificate generation fo…   133                                     
ubuntu/nginx                                      Nginx, a high-performance reverse proxy & we…   112                                     
nginx/nginx-ingress                               NGINX and  NGINX Plus Ingress Controllers fo…   90                                      
nginx/unit                                        This repository is retired, use the Docker o…   63                                      
nginx/nginx-prometheus-exporter                   NGINX Prometheus Exporter for NGINX and NGIN…   40                                      
bitnami/nginx-ingress-controller                  Bitnami container image for NGINX Ingress Co…   33                                      [OK]
unit                                              Official build of NGINX Unit: Universal Web …   29                  [OK]                
nginxproxy/docker-gen                             Generate files from docker container meta-da…   17                                      
rancher/nginx-ingress-controller                                                                  13                                      
kasmweb/nginx                                     An Nginx image based off nginx:alpine and in…   7                                       
nginxinc/nginx-s3-gateway                         Authenticating and caching gateway based on …   6                                       
bitnami/nginx-exporter                            Bitnami container image for NGINX Exporter      5                                       
nginxinc/ingress-demo                             Ingress Demo                                    4                                       
rancher/nginx-ingress-controller-defaultbackend                                                   2                                       
nginx/nginx-ingress-operator                      NGINX Ingress Operator for NGINX and NGINX P…   2                                       
nginx/nginx-quic-qns                              NGINX QUIC interop                              1                                       
nginxinc/amplify-agent                            NGINX Amplify Agent docker repository           1                                       
nginxinc/ngx-rust-tool                                                                            0                                       
nginxinc/mra_python_base                                                                          0                                       
nginxinc/mra-fakes3                                                                               0                                      

执行 docker search nginx 命令后,返回很多包含 nginx 关键字的镜像,其中返回信息包括镜像名称(NAME)、描述(DESCRIPTION)、星级(STARS)、是否官方创建(OFFICIAL)、是否主动创建(AUTOMATED)。默认的输出结果会按照星级评价进行排序,表示该镜像受欢迎程 度。在下载镜像时,可以参考星级。在搜索时,还可以使用 -s 或者 --stars=x 显示指定星级以上的镜像,星级越高表示越受欢迎;是否官方创建是指是否是由官方项目组创建和维护的镜像,一般官方项目组维护的镜像使用单个单词作为镜像名称,称为基础镜像或者根镜像。像 bitnami/nginx 这种命名方式的镜像,表示是由 docker Hub 的用户 bitnami 创建并维护的镜像,带有用户名为前缀; 是否主动创建是指是否允许用户验证镜像的来源和内容。 

使用 docker search 命令只能查找镜像,镜像的标签无法查找,因此如果需要查找 Docker 标签,需要从网页上访问镜像仓库进行查找。 

 3.2、获取镜像

搜索到符合需求的镜像,可以使用 docker pull 命令从网络下载镜像到本地使用。 

命令格式:Docker pull 仓库名称[:标签] 

对于 Docker 镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签,也可通过指定的标签来下载特定版本的某一镜像。这里标签 (tag)就是用来区分镜像版本的。 

例如:下载镜像 nginx 的执行命令和结果如下: 

[root@centos7-13 ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
09f376ebb190: Pull complete 
a11fc495bafd: Pull complete 
933cc8470577: Pull complete 
999643392fb7: Pull complete 
971bb7f4fb12: Pull complete 
45337c09cd57: Pull complete 
de3b062c0af7: Pull complete 
Digest: sha256:a484819eb60211f5299034ac80f6a681b06f89e65866ce91f356ed7c72af059c
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

从整个下载的过程可以看出,镜像文件是由若干层(Layer)组成,称之为 AUFS(联合文件系统),是实现增量保存与更新的基础,下载过程中会输出镜像的各层信息。镜像下载到本地之后就可以随时使用该镜像了。 

用户也可以选择从其他注册服务器仓库下载,这时需要在仓库名称前指定完整的仓库注册服务器地址。 

引用\[1\]:Docker镜像命令思维导图是一篇文章,主要用来记录Docker命令的思维导图,方便回顾和复习使用。文章中提供了多个思维导图源文件,包括docker服务、docker整体、docker镜像、docker容器和补充的redis-cli命令。这些思维导图可以帮助用户回顾和学习Docker命令的使用。\[1\] 引用\[2\]:Docker使用思维导图及各种命令是一篇文章,介绍了Docker的架构和常用命令。文章中提供了Docker的架构图和常用命令的思维导图,包括搜索命令、下载镜像、列出镜像、删除本地镜像、保存镜像、加载镜像、构建镜像以及容器相关的命令。这些思维导图可以帮助用户更好地理解和使用Docker。\[2\] 根据提供的引用内容,可以看出这些思维导图主要是为了帮助用户回顾和学习Docker基本管理命令。这些思维导图提供了Docker的架构图、常用命令的概览以及具体命令的使用示例。用户可以根据自己的需求选择相应的思维导图来学习和使用Docker。 #### 引用[.reference_title] - *1* [Docker命令大全(带思维导图)](https://blog.csdn.net/bzu_mei/article/details/127627898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Docker及其使用思维导图](https://blog.csdn.net/hliq5399/article/details/106021348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值