Docker入门学习笔记

源自b粘 GeekHour博主https://space.bilibili.com/102438649 博主讲的巨无敌清晰,这里做一个笔记大家可以去给博主一键三连!!!

为什么要使用Docker?

Docker vs 虚拟机

虚拟化技术:

容器:

注意:docker并不是容器,docker和容器是两个不同的概念,是容器的一种实现,是一个容器化的解决方案和平台,容器也是一种(Hypervisor)虚拟化技术,也是一个独立的环境,可以在容器中运行应用程序,和虚拟机不同在于,他不需要运行一个完整的操作系统,而是使用宿主机的OS,因为需要的资源更少,所以可以在一个物理服务器上运行更多的容器,充分利用资源,减少资源的闲置和浪费

docker的基本原理和概念

docker中的镜像、容器和仓库

  • 镜像是一个只读的模版,可以用来创建容器。
  • 容器是docker的运行实例,提供了一个独立可移植的环境,可以在该环境运行应用程序
  • 镜像 vs 容器 类比于 java / c++ 中的类和实例
  • 如何把镜像分享给别人呢?
  • docker中的仓库:用于存储docker镜像(最常用的仓库:dockerhub,可以在这里下载镜像,也可以上传自己制作的镜像)

docker 是使用 Client-Server 架构模式:

  • Docker Client 和 Docker Daemon之间通过 Socket 和 Restful API 进行通信
  • docker deamon 是服务端的守护进程,负责管理 docker 的各种资源
  • docker client 负责向 docker daemon 发送请求
  • docker daemon(后台进程,用来接收并处理来自 docker client 的请求) 接收到请求后,将结果返回给 docker client

容器化和 Dockerfile

将应用程序打包成容器,在容器中运行应用程序的过程

Step-1:创建 Dockerfile 来告诉 Docker 构建应用程序镜像所需要的步骤以及配置。

包括应用程序所要执行的所有命令也就是各种依赖和配置环境,和运行应用程序所需要的所有内容

Step-2:使用 Dockerfile 来构建镜像

Step-3:使用镜像来创建和运行容器

实践:

配置,构建镜像:

1.安装好docker,并且启动,输入 docker info,注意观察是否 client 与 server 都有信息

创建一个文件夹,用IDE打开

创建一个 index.js 的文件(console.log("docker学习"))

node.js是一个运行时环境,可以让我们再浏览器之外的地方运行 javascript 代码,比如这里给 javascript 提供运行环境:node index.js 运行 index.js

Dockerfile (可以先在IDE中安装docker插件)

bash 复制代码
# step-1:指定一个基础镜像,14表示nodejs的版本,-alpine,表示这个镜像是基于
# alpine(非常轻量级的linux发行版) 这个 linux 发行版来构建的
FROM node:14-alpine
# 把当前路径下的 index.js 拷贝到 镜像的根目录下
COPY index.js /
# 第一个参数表示可执行程序的名字,第二个参数以后表示这个可执行程序接收到的参数
# CMD ["node", "/index.js"]
CMD node /index.js

命令行:

bash 复制代码
docker build -t hello-docker .

查看所有的镜像

bash 复制代码
docker image ls
bash 复制代码
docker images

以上就完成了镜像的构建
运行:

bash 复制代码
docker run hello-docker

运行成功

在另一个环境中运行该应用程序

只需要复制这个镜像文件,然后执行 docker run hello-docker就可以了,或者上传到docker镜像仓库里边,使用docker pull进行拉取下载运行该应用程序
可以选择在https://labs.play-with-docker.com/ 运行这个镜像:这是一个免费网站,能够提供一个时长为2小时的虚拟机环境

也就是用户名和镜像名称,类似于github/gitee/gitlab

docker desktop

点击run就能直接使用这个镜像来构建一个容器了 = docker run 镜像

逻辑卷

当我们创建好一个容器之后,他通常以一个干净的文件系统开始,容器启动之后,我们可以在容器中创建文件,修改文件,但是当容器停止之后,容器中的所有数据都会丢失

持久化容器数据:使用逻辑卷

可以把容器中的目录或者指定的路径映射到宿主机的某个目录或者位置上,就能讲数据保存到宿主机的磁盘上,来实现数据持久化

docker compose

docker-compose.yml 将这一组互相关联的容器组合在一起 -----》形成一个项目

随之,使用命令就可以启动、停止、重建这些服务:自动安装各种依赖、和配置运行环境,在本地运行项目

bash 复制代码
docker compose up
相关推荐
cqsztech2 小时前
如何打造一个非CDB的Oracle 19c docker 镜像
数据库·docker·oracle
摇滚侠2 小时前
2025最新 SpringCloud 教程,Gateway-断言-长短写法,笔记55
笔记·spring cloud·gateway
victory04312 小时前
K8S etcd 数据存储路径迁移
容器·kubernetes·etcd
洛克大航海2 小时前
Ubuntu 安装 Docker
linux·docker·ubuntu24.04
ylmzfun2 小时前
从Borg到Kubernetes:云原生时代的容器编排利器
云原生·容器·kubernetes
哲Zheᗜe༘3 小时前
K8S-Service资源对象
云原生·容器·kubernetes
可可苏饼干3 小时前
Docker命令与知识点归纳
运维·学习·docker·容器
不被AI替代的BOT3 小时前
Spring Cloud Gateway WebFlux 模式架构分析
spring cloud·微服务
java_logo3 小时前
GITLAB Docker 容器化部署指南
linux·运维·数据库·docker·容器·eureka·gitlab