一、虚拟机与docker
虚拟机是一种将物理计算机划分为多个独立虚拟计算机的技术,每个虚拟机都具有自己的操作系统和硬件。而Docker是一种容器化技术,利用宿主机操作系统的内核来运行容器,实现资源的隔离和应用程序的轻量级封装。虚拟机和Docker在资源利用率、启动时间和系统要求等方面存在差异,选择使用哪种技术应根据具体需求来决定。
1、虚拟机(Virtual Machine)
虚拟机是一种将物理计算机划分为多个独立的虚拟计算机的技术。每个虚拟机都类似于一个独立的计算机系统,具有自己的操作系统、硬件和应用程序。虚拟机软件(如VMware、VirtualBox等)通过在物理计算机上创建虚拟化层,使得多个虚拟机可以在同一台物理计算机上同时运行。
虚拟机的工作原理是通过虚拟化软件模拟硬件资源,包括处理器、内存、硬盘和网络等。每个虚拟机运行在一个虚拟化层上,其上方是虚拟操作系统,可以安装和运行不同的操作系统,如Windows、Linux等。虚拟机可以独立运行应用程序,互相之间相互隔离,因此可以在同一台物理计算机上运行不同的操作系统和应用程序。
2、Docker技术
Docker是一种容器化技术,可以将应用程序及其依赖项打包成一个可移植、可部署的容器。Docker使用操作系统级虚拟化技术,称为容器化,它利用宿主机操作系统的内核来运行容器,实现资源的隔离和应用程序的轻量级封装。
Docker容器与虚拟机不同,它不需要模拟整个操作系统,而是共享宿主机操作系统的内核。这使得Docker容器更加轻量级和高效,容器间可以共享操作系统和库,减少了资源的消耗和启动时间。每个Docker容器都是相互隔离的,具有自己的文件系统、进程空间和网络接口,可以独立运行应用程序。
Docker容器使用Docker镜像作为构建和运行容器的模板。Docker镜像是一个只读的文件,包含了应用程序及其依赖项的所有文件和设置。通过Docker容器编排工具(如Docker Compose、Docker Swarm和Kubernetes),可以管理多个Docker容器的部署和运行。
二、Docker容器技术
Docker是一种开源的容器化平台,用于将应用程序及其依赖项打包成一个可移植、可部署的容器。总的来说,Docker通过容器化技术提供了一种轻量级、可移植、可扩展和可部署的应用程序打包和管理方式,使得应用程序在不同环境中更加易于部署和运行。
1、容器(集装箱)
Docker利用容器化技术,将应用程序及其依赖项打包成一个独立、可移植的容器。容器包含了应用程序的所有文件、环境变量、库和运行时,可以在任何支持Docker的操作系统上运行。
Docker容器是一个轻量级、独立的执行单元,其中包含了运行应用程序所需的所有文件、环境变量、库和运行时。容器基于Docker镜像创建,可以在任何支持Docker的操作系统上运行。容器可以被启动、停止、删除和重启。
2、镜像(复制的程序)
Docker镜像是一个只读的模板,用于创建Docker容器。镜像包含了操作系统、应用程序和其它依赖项的所有文件和设置。用户可以使用Docker镜像来创建和运行多个相同的容器。镜像可以从Docker Hub(公共仓库)或自己搭建的私有仓库中获取
3、仓库(存放镜像的地方)
Docker仓库是用于存储和共享Docker镜像的地方。它可以是公共的(如Docker Hub)或私有的(如自己搭建的私有仓库)。用户可以从仓库中获取镜像,并将自己创建的镜像推送到仓库中供他人使用。
4、Dockerfile
Dockerfile是一个文本文件,包含了一系列构建Docker镜像所需的指令和配置。通过编写Dockerfile,用户可以定义容器的环境、依赖项和启动命令等。使用Dockerfile可以实现自动化、可重复性的镜像构建过程。
5、容器编排(Container Orchestration)
容器编排是指管理和协调多个Docker容器的过程。Docker提供了一些工具和平台,如Docker Compose、Docker Swarm和Kubernetes,用于实现容器编排。容器编排可以帮助用户在多个容器之间定义关系、规划资源、扩展和监控容器集群。
三、Docker常用命令
1、镜像相关命令
docker images:列出本地所有的Docker镜像。
docker pull <image_name>:从仓库中下载指定的Docker镜像。
docker build -t <image_name> <dockerfile_path>:根据Dockerfile构建一个新的Docker镜像。
docker push <image_name>:将本地的Docker镜像推送到仓库中。
docker rmi <image_name>:删除镜像文件。
2、容器相关命令
docker run <image_name>:根据指定的Docker镜像创建并启动一个新的容器。
docker ps (-a):列出当前正在运行的容器。
docker start <container_id>:启动一个已停止的容器。
docker stop <container_id>:停止一个正在运行的容器。
docker restart <container_id>:重启一个容器。
docker rm <container_id>:删除一个已停止的容器。
docker exec -it <container_id> <command>:在一个正在运行的容器中执行指定的命令。
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q):停止/删除所有容器。
3、仓库相关命令
docker login:登录到一个Docker仓库。
docker logout:退出当前登录的Docker仓库。
docker search <image_name>:在仓库中搜索指定的Docker镜像。
4、其他常用命令
docker network ls:列出当前存在的Docker网络。
docker volume ls:列出当前存在的Docker数据卷。
docker-compose up:根据docker-compose.yml文件创建并启动多个容器。
docker-compose down:停止并删除使用docker-compose启动的容器。
service docker stop,service docker start:重启docker服务