一、引言
1、什么是Docker
Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的优点包括简化流程、避免选择恐惧症和节省开支。使用Docker可以更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。Docker的架构包括Docker daemon(Docker守护进程),这是一个运行在宿主机(DOCKER-HOST)的后台进程。
Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程,不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。
2、Docker三要素
①🐉Docker镜像(Image)
Docker镜像是一个只读的模板,包含了运行环境、文件系统、应用程序和依赖等。镜像可以用来创建Docker容器,一个镜像可以被多个容器同时使用。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用。
②🐉Docker仓库(Container)
容器是基于镜像创建的一个可运行的实例,它是一个独立且隔离的运行环境。容器可以被快速创建、启动、停止、删除,并且具有轻量级、可移植性和可复用性等特点。可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库是集中存放镜像文件的场所。
有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上 往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的 标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 当然,用户也可以在本地网络内创建一个私有仓库。 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一 台 机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
③🐉Docker容器(Repository)
仓库是用来存储和分享镜像的地方,可以分为本地仓库和远程仓库两种类型。本地仓库存储在本地机器上,而远程仓库则可以通过网络访问。仓库中的每个镜像都有一个唯一的标识符,称为镜像标签(Image Tag),可以用来唯一标识和区分不同的镜像版本。
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等) 和运 行在其中的应用程序。
- 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境
- 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容
- 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构
二、快速开始
1、服务器选型
在选择服务器操作系统时,Windows附带了许多您需要付费的功能。
Linux是开放源代码,可让用户免费使用。
对比
Windows服务器和Linux服务器在安装Docker时存在一些差异,主要原因在于它们使用的操作系统不同。
在Windows服务器上安装Docker,通常是通过Docker Desktop for Windows软件来实现的。Docker Desktop for Windows提供了一个图形化界面,可以方便地安装、管理和部署Docker容器。安装过程比较简单,只需要下载并安装Docker Desktop for Windows,然后按照提示进行操作即可。
而在Linux服务器上安装Docker,需要根据具体的发行版和版本号进行操作。一般来说,可以使用系统自带的包管理器(如apt、yum等)来安装Docker。例如,在Ubuntu上安装Docker,可以使用以下命令:
sudo apt-get update sudo apt-get install docker.io
在CentOS上安装Docker,可以使用以下命令:
sudo yum install docker
安装完成后,可以通过运行
sudo yum install docker
命令来检查Docker是否成功安装并查看相关信息。
- Linux是开源的,因此是免费的。Web主机仅需要支付技术支持即可安装和维护程序(如果需 要)。服务器提供商不需要将额外的成本转嫁给客户。另一方面,对于Windows服务器,公司通常 必须为操作系统和定期使用许可证付费。
- Linux服务器及其运行的应用程序通常设计为精益运行,因此通常使用较少的计算机资源。好处是 程序员可以“即时”修改Linux服务器和软件,而无需重新启动,这在Windows环境中是不可能的。 Microsoft Windows服务器在多数据库任务下趋向于变慢,崩溃的风险更高。
- Linux比Windows更安全。尽管没有哪个系统能幸免于黑客和恶意软件的攻击,但是Linux往往是 一个低调的目标。由于Windows运行着世界上大多数软件,因此,黑客们渴望获得低挂的果实 Windows。
2、虚拟机安装
可查看【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)_安装虚拟机和linux操作系统使用的命令格式和执行结果(截图显示)-CSDN博客中Linux的安装
3、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-engine
旧版本的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
3)如果要安装特定版本的docker-CE请使用如下命令格式: yum install docker-ce-
三、Docker基本使用
- 镜像操作:首先需要从Docker仓库中获取镜像,可以使用
docker pull
命令从远程仓库下载镜像。如果本地仓库中没有需要的镜像,则可以通过docker search
命令搜索并下载。- 容器操作:在获取镜像后,可以使用
docker run
命令创建并启动容器。容器可以用来运行应用程序,并且每个容器都是相互隔离的。可以通过docker ps
命令查看正在运行的容器,使用docker stop
和docker start
命令来停止和启动容器。- 镜像和容器的管理:Docker还提供了其他一些命令来管理镜像和容器,例如
docker image
命令可以用来管理本地镜像,docker container
命令可以用来管理本地容器。- 仓库管理:如果需要将本地镜像上传到远程仓库,可以使用
docker push
命令。同时,也可以使用docker tag
命令给本地镜像添加标签,以便于管理和区分不同的镜像版本。
1、基本操作
查看服务状态
systemctl status docker
启停服务
systemctl start docker
systemctl stop docker
systemctl restart docker
开机自启
systemctl enable docker
systemctl disable docker
2、仓库、镜像操作
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下 载 (默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓
- 配置加速器(通过阿里云控制台获得加速地址)
vi /etc/docker/daemon.json
{
"registry-mirrors":["你的阿里云专属加速器地址"]
}
重新加载daemon
systemctl daemon-reload
重启docker
systemctl restart docker
搜索镜像
docker search 镜像名称
下载镜像
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 镜像ID/标签
docker rmi centos
docker rmi -f centos:latest
如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像。
正确做法:先删除依赖该镜像的所有容器, 再来删除镜像
3、容器操作
容器是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 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】或输入exit