首页 > 其他分享 >docker学习

docker学习

时间:2023-04-07 23:25:32浏览次数:39  
标签:容器 Hub 学习 镜像 docker 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 和 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 负责部署和管理这些容器。

 

标签:容器,Hub,学习,镜像,docker,Docker,运行
From: https://www.cnblogs.com/caesarone/p/17297660.html

相关文章

  • docker in docker运行pipeline
    一、配置JenkinsMaster挂载Dockerdockerrun--namejenkins-itd--privileged=true-p8081:8080-p50000:50000-v/etc/localtime:/etc/localtime:ro-v/var/run/docker.sock:/var/run/docker.sock-v/bin/docker:/usr/bin/docker-v/mnt/jenkins-data:/var/......
  • 删边最短路学习笔记
    删边最短路前言删边最短路是一种科技,用于解决一类问题:给定非负权图\(G=(V,E)\)。设\(n=|V|\),保证\(1\)可达\(n\)。设\(\Delta(e)\)为图\(G'=(V,E\setminus\{e\})\)上\(1\rightsquigarrown\)的最短路,若\(G'\)上\(1\)不可达\(n\)则为\(+\infty\)......
  • 强化学习笔记
    1.1.简介强化学习(reinforcementlearning)是机器学习的一个重要分支,其具有两个重要的基本元素:状态和动作。类似于编译原理中的自动机,或数据结构中的AOE图,强化学习研究的就是怎样找到一种最好的路径,使得不同状态之间通过执行相应动作后转换,最终到达目标状态。先介绍几个名词:状态......
  • docker push 遇到 no basic auth credentials
      当遇到上面问题时,请在本地先登录一下远程仓库: dockerlogin http://101.201.237.xxx:5000......
  • 内存马学习
    内存马介绍webshell的变迁过程大致如下所述:web服务器管理页面——>大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马 内存马是无文件攻击的一种常用手段,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。传统......
  • SpringBoot项目学习总结
    1.项目包结构一共有6个包,common包下的主要是常量和返回结果的结构。2.创建实体类将sql语句复制过来,按住ALT+鼠标左键竖直选中删除,按HOME和END到所有行的头和尾同时编辑。3.三层开发规范分别是Controller/Service/Dao,顺序:前端浏览器->Controller->Service(接口、实现类......
  • 4.7软件工程学习总结
    今天只有晚上有时间自习,然后开始实现注册信息的功能,向mysql数据库里添加数据,之前的地铁项目做的是查询,没有做过添加数据的功能,今天写出了部分后台代码。 ......
  • Java学习路径
    一、Java学习路径   1.JavaSE  2.数据库   3.前端  4.JavaWeb  5.SSM框架  6.Linux  7.SpringBoot  8.SpringCloud  9.Hadoop......
  • 基于Python的机器学习算法——sklearn模块
    基于Python的机器学习算法安装包:pipinstallnumpy#安装numpy包pipinstallsklearn#安装sklearn包importnumpyasnp#加载包numpy,并将包记为np(别名)importsklearn#加载sklearn包python中的基础包:numpy:科学计算的基础库,包括多维数组处理、线性代数等pandas:主......
  • 学习STM32的第一个外设GPIO(2)——GPIO的输出
    【1】GPIO位结构  【1-1】输入部分为了保护IO引脚,上下各接一个保护二极管,用于限幅输入电压。上面二极管接VDD(3.3V),下面的二极管接VSS(0V)。如果输入电压比3.3V还要高,上面二极管导通,输入电压产生的电流会直接流入VDD而不是内部电流。如果输入电压比0V还要低,相对于VSS电......