做网站是学什么编程语言,为网站添加统计,牙科医院网站建设方案,品牌型网站我们写程序时#xff0c;都会搭建相关的环境#xff0c;比如写了一个web#xff0c;使用了tomcat、nginx等#xff0c;现在想要把程序部署到云服务器或者在其他电脑上运行#xff0c;就需要重新部署一遍环境#xff0c;尤其是项目开源后#xff0c;上手成本大。
docker…我们写程序时都会搭建相关的环境比如写了一个web使用了tomcat、nginx等现在想要把程序部署到云服务器或者在其他电脑上运行就需要重新部署一遍环境尤其是项目开源后上手成本大。
docker
介绍
Docker 是一个开源的应用容器引擎基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中然后发布到任何流行的 Linux 机器上也可以实现虚拟化。 容器是完全使用沙箱机制相互之间不会有任何接口类似 iPhone 的 app,更重要的是容器性能开销极低。 来源于菜鸟教程
安装
docker依赖于linux内核因此在windows系统中需要安装Hyper-V类似于 VMWare 或 VirtualBox或者WSL然后进入docker desktop官网下载安装程序双击运行即可。安装完成后可以在虚拟机中运行命令docker --version检查是否成功安装。
镜像和容器的区别
Docker 中镜像Image和容器Container是两个核心概念它们有以下主要区别
定义和用途 镜像Image镜像是一个只读的文件系统快照它包含了一个应用程序及其运行环境所需的所有内容包括代码、库、依赖项、配置等。镜像是用于创建容器的模板可以看作是一个静态的、不可更改的应用程序打包。容器Container容器是一个运行时实例它是基于镜像创建的包含了应用程序及其所有依赖项的运行环境。容器可以被启动、停止、删除等它提供了一个隔离的运行环境使应用程序能够在不同的容器中运行而不受主机环境的影响。 可变性 镜像是不可更改的一旦创建就不能修改。如果需要对应用程序或环境进行更改必须创建一个新的镜像。容器是可变的可以在运行时进行修改。你可以进入容器、安装软件、修改配置等然后保存为新的镜像以便将更改保存下来。 生命周期 镜像的生命周期是静态的它存在于磁盘上并可以被多个容器实例使用。容器的生命周期是动态的它可以被创建、启动、停止和销毁。容器是临时的运行实体。 资源消耗 镜像通常占用磁盘空间并且资源消耗较低因为它们是静态的。容器占用系统资源CPU、内存等因为它们正在运行应用程序和服务。
总之镜像是容器的模板用于创建容器实例。容器是在镜像基础上运行的可执行实体具有自己的运行时状态。Docker 的强大之处在于它允许你使用镜像来轻松创建、分发和管理容器从而实现应用程序的隔离和可移植性。
dockerhub
Docker Hub 是一个在线的 Docker 镜像仓库和容器注册表服务。它是 Docker 公司提供的官方服务用于帮助开发人员和运维团队存储、分享和获取 Docker 镜像。Docker Hub 允许用户上传、存储和管理 Docker 镜像。这些镜像可以包含操作系统、应用程序、服务和其他容器化的组件供其他用户下载和使用类似于Github仓库。
如果要上传一个镜像就需要编写dockerfile脚本文件在这个文件中写入环境配置的命令行。
docker和虚拟机区别
Docker 和虚拟机是两种不同的虚拟化技术它们在应用、资源消耗、启动时间和隔离等方面有一些重要区别。以下是 Docker 和虚拟机之间的主要区别 架构和隔离 DockerDocker 使用容器技术容器共享主机操作系统的内核但在容器内部提供隔离的用户空间。这意味着容器之间共享操作系统内核使其轻量且启动迅速。容器之间的隔离通过 Linux 内核的命名空间和控制组技术实现。 虚拟机虚拟机是完全虚拟化的技术每个虚拟机都运行自己的操作系统内核。这意味着虚拟机需要更多的资源并且启动速度较慢因为它们需要模拟整个操作系统。 资源消耗 Docker由于容器共享主机操作系统的内核所以 Docker 容器通常比虚拟机更轻量需要较少的内存和存储资源。 虚拟机虚拟机通常需要更多的资源因为每个虚拟机都包含自己的操作系统内核和系统文件。 启动时间 DockerDocker 容器可以在几秒内启动因为它们不需要启动整个操作系统内核。 虚拟机虚拟机通常需要更长的时间来启动因为它们需要模拟和启动整个操作系统。 应用部署和管理 DockerDocker 容器的部署和管理相对简单可以使用 Docker Compose 和 Kubernetes 等工具来自动化管理多个容器。 虚拟机虚拟机的部署和管理相对复杂需要使用虚拟化管理工具来创建、配置和监视虚拟机。 跨平台支持 DockerDocker 容器可以在不同的操作系统上运行前提是它们都支持 Docker。 虚拟机虚拟机通常需要适用于特定虚拟化平台的映像并且不太容易跨平台移植。 隔离性 Docker容器提供了一定程度的隔离但不如虚拟机隔离得严格。容器之间可以共享操作系统内核这意味着一些攻击可能会影响多个容器。 虚拟机虚拟机提供了更强的隔离性每个虚拟机都有独立的内核和资源攻击一个虚拟机不会影响其他虚拟机。 根据你的需求和用例你可以选择使用 Docker 或虚拟机来虚拟化和隔离应用程序。Docker 更适合轻量级、可扩展的应用程序而虚拟机通常更适合需要更严格隔离或运行不同操作系统的应用程序。在实际应用中有时也会同时使用 Docker 和虚拟机以充分利用它们各自的优势。
更改镜像源
docker默认镜像源速度很慢可以更改为以下镜像源
{registry-mirrors: [https://registry.hub.docker.com,http://hub-mirror.c.163.com,https://docker.mirrors.ustc.edu.cn,https://registry.docker-cn.com]
}使用
可以将代码拉取到虚拟机本地然后把代码上传到docker进入容器执行代码参考以下命令
拉取代码
git clone https://github.com/oceanbase/miniob.git
挂载方式新建一个新容器-v表示挂载前面表示本地文件目录后面表示你要在docker 容器中挂载的位置随意没有该目录也会新建
docker run -it -v /usr/lyjps/miniob:/lyjps oceanbase/miniob
执行下面的命令进入容器并创建bash终端此时就可以使用Linux终端方式进行一些开发工作
docker exec -it miniob bash