
目录
- 引言
- 一、什么是Docker?
- 二、Docker的优势
- 三、Docker的架构
- 四、Docker的安装
- 五、Docker的基本使用
- 六、Docker与传统虚拟化的比较
- 七、Docker的应用场景
- 八、总结
引言
在现代的软件开发和部署中,容器化技术已经成为了一种趋势。Docker作为容器化技术的领先者,已经被广泛应用于云计算、大数据、微服务等领域。本文从Docker的概念、优势、架构、基本使用等方面进行详细介绍,希望能够让读者深入了解Docker并掌握其基本使用。
一、什么是Docker?
Docker是一种开源的容器化技术,最初由Docker Inc.公司开发,其主旨在于为应用程序开发提供更加快速、便捷、一致的运行环境。Docker可以将应用程序及其依赖项打包为容器,在不同的系统上运行,实现了代码的跨平台移植性。
二、Docker的优势
相较于传统的虚拟机技术,Docker具有以下优势:
易于部署:Docker容器可以在不同的平台上运行,大大降低了应用程序的部署成本。
资源占用更少:Docker容器与虚拟机不同,容器与宿主机共享内核,因而运行所需的资源更少。
更加高效:Docker容器可以快速启动、停止,极大地提高了应用程序的开发和运行效率。
一致的运行环境:Docker容器可以在不同的平台上运行,且容器内的运行环境均为一致,从而保证了应用程序的可靠性和稳定性。
三、Docker的架构
Docker的架构主要包括以下几个组件:
Docker客户端:由命令行工具或Web UI界面提供给用户进行操作的界面。
Docker主机:运行Docker进程的物理或虚拟机器。
Docker仓库:用来存放Docker镜像的服务,可以理解为代码仓库。
Docker镜像:打包好的应用程序及其依赖项,可被发布和复制,作为容器启动的基础。
Docker容器:镜像的运行实例,可以被启动、停止、删除等。
四、Docker的安装
Docker支持运行CentOS版本:CentOS 7.X
 内核版本检查: uname -r
 卸载可能存在的旧版本
 yum remove docker 
 docker-client 
 docker-client-latest 
 docker-common 
 docker-latest 
 docker-latest-logrotate 
 docker-logrotate 
 旧版本的docker叫做docker或者docker-engine,如果有安装,先卸载其以及其依赖,新版本的
 docker叫做docker-ce
 docker-ce(社区版,免费)
 docker-ee(专业版,收费)
 安装必要的系统工具: yum install -y yum-utils device-mapper-persistent-data lvm2
 添加docker-ce安装源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 配置阿里云Docker Yum源: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 更新yum缓存: yum makecache fast
 yml.pid占用: – rm -f /var/run/yum.pid
 安装docker-CE: yum -y install docker-ce
 1)默认安装的是最新版本的稳定版
 2)查看版本列表请使用如下命令:
 yum list docker-ce --showduplicates | sort -r
 docker-engine
 3)如果要安装特定版本的docker-CE请使用如下命令格式:
 yum install docker-ce
五、Docker的基本使用
基本操作
- 查看服务状态
 systemctl status docker
- 启停服务
 systemctl start docker
 systemctl stop docker
 systemctl restart docker
- 开机自启
 systemctl enable docker
 systemctl disable docker
仓库+镜像
 Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下
 载
 (默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库
- 配置加速器(通过阿里云控制台获得加速地址)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://39o6ydhb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
输入
 cat /etc/docker/daemon.json
 回车,有下面这个说明加速器配好了
 {
 “registry-mirrors”: [“https://39o6ydhb.mirror.aliyuncs.com”]
 }
 然后进行拍照保存
- 下载镜像
 docker pull ngninx
 回车
 下载好了之后 docker images回车
  
容器
 容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。
 镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态
 创建容器
docker create -it centos:latest
docker create -it --name centos01 centos:latest
centos:latest 即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否
存在指定的镜像,
不存在就从公有仓库下载
-it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
--name:指定生成的容器的名字,允许空,如果不指定会自动生成
启动、停止、重启容器
 docker start 容器ID|name|name:tag
 docker stop 容器ID|name|name:tag
 docker restart 容器ID|name|name:tag
 查看当前的容器
 docker ps
 docker ps -a
 docker pull 镜像名
 获取一个 centos 系统的基础镜像可以使用如下的命令:
 docker pull centos (未指定版本一般会使用latest(最新的)版本)
 docker pull centos:版本号 (或者直接指定版本)
 docker images
 查看image位置
 cd /var/lib/docker/containers (/var/lib/docker为docker默认安装目录) && ll
 docker rmi centos
 docker rmi -f centos:latest
 如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像。
 正确做法:先删除依赖该镜像的所有容器, 再来删除镜像
 删除容器
 docker rm 容器ID
 docker rm -f 容器ID
 进入容器
 docker exec -it 容器ID/容器NAME /bin/bash
 docker exec -it 容器ID/容器NAME bash (简写)
 退出容器
 退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
 如果不想继续运行:按【ctrl+d】或输入exist
六、Docker与传统虚拟化的比较
传统虚拟化技术需要进行大量的资源分配和管理,每个虚拟化的操作系统都需要独立的内核和系统资源,导致系统启动缓慢,占用资源大,容易出现性能瓶颈。而Docker容器的优势在于,它们是在宿主机器上运行的,共享系统内核和底层资源,因此启动速度较快,开销较小,且镜像的构建和部署和容器的启动、停止等操作都非常快速和简便。不过Docker容器也存在一些限制,例如它们是基于宿主机器的环境而运行的,因此在某些场景下可能不适用。
七、Docker的应用场景
微服务
 Docker容器可以很好地支持微服务架构,每个服务都运行在独立的容器中,实现了服务模块化和高度可扩展性。
多环境开发
 开发人员可以使用Docker来构建开发、测试和生产环境,保证了这些环境的一致性,在测试和上线时可以预测和减少错误。
应用程序打包和交付
 Docker容器可以将应用程序及其依赖项打包为一个单一的容器,方便交付和分布,并且保证了应用程序的一致性和可靠性。
云部署
 在云计算场景下,Docker可以在虚拟机和基础设施层之间提供一层抽象,显著降低了应用程序部署的成本和管理难度。
八、总结
Docker这一容器化技术将应用程序的开发、部署和交付的流程变得更加高效、灵活和便捷,并且能够支持微服务架构、多环境开发、应用程序打包和交付、云部署等多种应用场景。希望本文能够帮助读者深入了解Docker的特点与优势,并在实践中运用Docker来完成各种应用场景。