docker学习

Docker 是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何支持 Docker 的环境中,以消除“在我电脑上可以运行,在你电脑上不能运行”的问题。以下是 Docker 的基本使用方法:
安装 Docker:

首先,您需要在您的系统上安装 Docker。根据您的操作系统(例如,Windows、macOS 或 Linux),从 Docker 官方网站 (https://docs.docker.com/get-docker/) 下载并安装相应的 Docker Desktop 或 Docker Engine。

拉取(下载)Docker 镜像:

Docker 镜像是一个包含应用程序及其依赖项的可执行包。您可以从 Docker Hub(一个公共的镜像仓库)拉取现有的镜像,也可以创建自己的镜像。要从 Docker Hub 拉取一个镜像,请使用以下命令:

php
Copy code
docker pull <image_name>
例如,要下载官方的 Python 镜像,您可以运行:

Copy code
docker pull python
运行 Docker 容器:

当您有一个 Docker 镜像时,您可以创建并运行一个新的容器。要运行一个容器,请使用以下命令:

php
Copy code
docker run -it --name <container_name> <image_name>
例如,要基于 Python 镜像运行一个名为my_python_container的容器,您可以运行:

arduino
Copy code
docker run -it --name my_python_container python
这将启动一个名为my_python_container的新容器,并打开一个交互式终端。

管理 Docker 容器:

您可以使用以下命令来管理容器:

列出所有运行中的容器:docker ps
列出所有容器(包括已停止的):docker ps -a
停止一个容器:docker stop <container_name>
启动一个已停止的容器:docker start <container_name>
删除一个容器:docker rm <container_name>
创建自己的 Docker 镜像:

要创建自己的 Docker 镜像,您需要编写一个名为Dockerfile的文件。

docker部署

  1. https://github.com/hpcaitech/ColossalAI#Use-Docker,从dockerhub上拉最新版本的docker镜像
  2. 使用该命令进入容器,查看容器中的文件,conda环境,cuda版本
    docker run -it --entrypoint sh hpcaitech/colossalai:0.2.7
  3. 在镜像中创建容器,将服务器物理机的代码,加入到容器中
    docker run -ti --gpus all --rm --ipc=host -v /data/zhangxueyuan/framexi/0511_clossalAI/ColossalAI:/app/ColossalAI hpcaitech/colossalai:0.2.7 bash
  4. 然后通过vim的方式执行example中的代码,装必要的包
  5. 结果表明,在docker中,也不能将batch-size超过80
Docker 和 Conda 都是用于创建隔离环境的工具,但它们之间有一些关键区别。以下是它们之间的一些比较:

目的和范围:

Conda 是一个跨平台的包管理器,主要用于安装和管理 Python 和 R 的包。Conda 还允许您创建和管理虚拟环境,以便在不同项目之间隔离库和依赖项。

Docker 是一个更通用的容器化平台,它允许您将整个应用程序及其依赖项打包到一个可移植的容器中。Docker 可以在各种操作系统和平台之间运行,这意味着您可以在几乎任何环境中运行相同的 Docker 容器。

隔离级别:

Conda 虚拟环境提供了一定程度的隔离,但它们仍然共享底层操作系统和硬件资源。

Docker 容器提供了更高级别的隔离,因为它们打包了整个文件系统、库和运行时。这意味着 Docker 容器在不同系统上的行为更加一致,减少了“在我电脑上可以运行,在你电脑上不能运行”的问题。

学习曲线和易用性:

Conda 相对容易学习和使用,尤其是对于 Python 和 R 用户。创建和管理虚拟环境的命令直观且简单。

Docker 的学习曲线可能更陡峭,尤其是对于没有 Linux 和容器化知识的用户。然而,一旦熟悉了基本概念和命令,Docker 可以变得非常强大和灵活。

哪个更好用取决于您的需求和使用场景:

如果您主要关注的是 Python 和 R 项目,并且需要快速轻松地创建和管理虚拟环境,那么 Conda 可能更适合您。

如果您需要在多个平台上部署应用程序,或者需要更高级别的隔离和一致性,那么 Docker 可能是更好的选择。

在某些情况下,您甚至可以结合使用 Docker 和 Conda,例如在 Docker 容器中使用 Conda 管理 Python 依赖项。这样,您可以充分利用 Docker 的隔离和可移植性,同时利用 Conda 管理 Python 包。
我使用docker必须到官网上注册一个账户吗?保存镜像必须到官网申请存储空间吗?
不一定。使用 Docker 并不强制要求您在官网注册账户。注册账户主要是为了访问 Docker Hub(官方的 Docker 镜像存储库),以便下载和上传 Docker 镜像。但是,您可以在本地使用 Docker 而无需登录 Docker Hub。

在没有 Docker Hub 账户的情况下,您仍然可以从 Docker Hub 下载和运行公开的镜像。但是,如果您想要将自己的镜像推送到 Docker Hub,以便其他人可以访问和使用,那么您需要注册一个账户。

至于保存镜像,如果您只是在本地使用 Docker,那么您可以在本地计算机上保存和管理镜像,而不需要将它们推送到 Docker Hub。在这种情况下,您无需注册 Docker Hub 账户。但是,将镜像保存在 Docker Hub 上有助于更好地共享和管理镜像,特别是在团队或者多台计算机之间。

总结一下,使用 Docker 本身并不需要注册官网账户。但是,如果您需要将镜像推送到 Docker Hub 或者从私有仓库下载镜像,那么注册一个账户是必要的。
docker和K8s有什么区别
Docker 和 Kubernetes(K8s)是两种不同的技术,它们在容器化应用程序方面起着互补的作用。下面是它们之间的主要区别:

范围和目的:

Docker 是一个平台,用于开发、打包和运行应用程序。它可以让您将应用程序及其依赖项打包到一个轻量级的、可移植的容器中,从而简化了部署和管理过程。Docker 使得应用程序在各种环境中具有一致性和可重复性。
Kubernetes,另一方面,是一个容器编排系统,用于自动化容器部署、扩展和管理。它是用来管理和协调在集群中运行的多个容器实例的。Kubernetes 是在大规模和分布式环境中管理容器的一个强大工具。
技术实现:

Docker 使用自己的容器运行时(如 Docker Engine)来运行容器。
Kubernetes 不局限于使用 Docker 作为容器运行时,它可以与多种容器运行时(如 containerd、CRI-O 等)集成。
网络和存储:

Docker 使用 Docker 网络和存储插件来管理容器的网络和存储需求。
Kubernetes 有自己的网络和存储解决方案,如 CNI(容器网络接口)插件和 PV(Persistent Volume)/PVC(Persistent Volume Claim)等。
可扩展性:

Docker 通常用于单个主机上的容器管理,虽然可以通过 Docker Swarm 等工具实现集群管理,但在大规模部署和复杂环境中可能不如 Kubernetes 高效。
Kubernetes 专为大规模、高可用性和复杂环境而设计,可以更有效地管理集群和多主机部署。
简而言之,Docker 主要关注容器的创建和运行,而 Kubernetes 则负责在集群环境中协调和管理容器。在实际应用中,它们通常一起使用,Docker 负责容器化应用程序,而 Kubernetes 负责部署和管理这些容器。

 

posted @ 2023-04-07 23:07  线索  阅读(24)  评论(0编辑  收藏  举报