Docker简介
Docker是一种开源的容器化平台,用于构建、部署和运行应用程序。它允许开发人员将应用程序及其所有依赖项打包到一个称为"容器"的独立单元中。这个容器可以在任何支持Docker的环境中运行,无论是开发人员的本地机器、虚拟机还是云服务器。
docker核心概念
- 容器:容器是Docker的核心概念,它是一个轻量级、可移植的运行环境,包含了应用程序的代码、运行时环境和所有依赖项。容器与操作系统的隔离机制相结合,使得应用程序可以在不同的环境中以相同的方式运行。
- 镜像:镜像是用于创建容器的模板。它包含了一个完整的文件系统,其中包含了运行应用程序所需的所有内容:代码、运行时环境、库、依赖项等等。镜像是只读的,通过镜像可以创建多个容器实例。
- Docker引擎:Docker引擎是Docker的核心组件,负责构建、运行和管理容器。它包括了Docker守护进程、客户端工具和REST API。Docker守护进程在主机上运行,并管理容器的生命周期。
- Docker仓库:Docker仓库是存储和分享镜像的中央注册表。它包括了官方仓库Docker Hub,以及其他公共和私有的仓库。开发人员可以将自己的镜像推送到仓库中,并从仓库中拉取镜像到本地使用。
Docker的好处
- 环境一致性:容器提供了一种可重复、可移植的部署方式,确保应用程序在不同环境中的一致性,避免了“在我机器上运行没问题”的问题。
- 资源隔离:容器与宿主机之间具有良好的隔离性,一个容器的问题不会影响其他容器或宿主机的稳定性。
- 快速部署和扩展:由于容器的轻量级特性,可以快速启动、停止和重启容器,同时可以方便地进行横向扩展,增加容器实例来应对高负载需求。
- 灵活性:Docker允许开发人员使用不同的编程语言、框架和工具来构建应用程序,并且可以轻松切换和组合各种组件。
Docker 常用命令
镜像命令
-
docker pull:从Docker仓库中拉取镜像到本地。 示例:拉取一个名为"ubuntu"的Ubuntu Linux镜像到本地
Copy code docker pull ubuntu
-
docker images:列出本地已下载的所有镜像。 示例:列出本地所有镜像
Copy code docker images
-
docker rmi:删除本地一个或多个镜像。 示例:删除名为"ubuntu"的Ubuntu Linux镜像
Copy code docker rmi ubuntu
容器命令
-
docker run:创建并启动一个新的容器。 示例:在后台运行一个名为"my_container"的Nginx容器,将主机的80端口映射到容器的80端口
cssCopy code docker run -d --name my_container -p 80:80 nginx
-
docker ps:列出当前正在运行的容器。 示例:列出所有正在运行的容器
Copy code docker ps
-
docker ps -a:列出所有容器,包括正在运行和已停止的。 示例:列出所有容器(包括已停止的)
cssCopy code docker ps -a
-
docker start:启动一个已停止的容器。 示例:启动名为"my_container"的容器
sqlCopy code docker start my_container
-
docker stop:停止一个正在运行的容器。 示例:停止名为"my_container"的容器
arduinoCopy code docker stop my_container
-
docker restart:重启一个正在运行的容器。 示例:重启名为"my_container"的容器
Copy code docker restart my_container
-
docker rm:删除一个或多个容器。 示例:删除名为"my_container"的容器
bashCopy code docker rm my_container
其他常用命令
-
docker exec:在运行中的容器内执行命令。 示例:在名为"my_container"的容器内执行一个bash命令
bashCopy code docker exec -it my_container bash
-
docker logs:查看容器的日志输出。 示例:查看名为"my_container"的容器的日志输出
Copy code docker logs my_container
-
docker inspect:查看容器或镜像的详细信息。 示例:查看名为"my_container"的容器的详细信息
Copy code docker inspect my_container
这些是一些常用的Docker命令,用于管理镜像、容器和其他相关资源。通过这些命令,可以轻松地创建
Docker容器虚拟化和传统虚拟机的比较
容器就是将软件打包成标准单元,以便于开发交付和部署
- 容器镜像是轻量级的,可执行的独立软件包,包含软件运行所需要的所有内容:代码,运行时环境,系统工具,系统库和设置等
- 容器化软件在任何环境中都能始终如一的运行
- 容器赋予了软件独立性,使其免受外在的环境差异的影响,从而有助与减少团队间在相同基础设施上运行不同软件时的冲突
相同点:
- 容器和虚拟机都具有相似的资源隔离和分配优势
不同点:
- 容器虚拟化是操作系统,虚拟机虚拟化的是硬件
- 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统