docker入门

Docker

是什么?

  • 一种虚拟化软件

  • 让应用程序的开发和部署变得简单

  • 将所有的文件打包进container(容器),包括代码,库,依赖项,环境配置。总而言之就是应用程序和他的运行环境。

为什么?

开发麻烦:要开发一个东西,每个人都要在本地配置环境,因为平台和版本的不同,极有可能出现问题。

部署麻烦:要给软件附上说明书,说明要配置哪些环境和服务,由运营团队来完成,这个过程同样容易出错

怎么解决

docker把所有的配置放入一个隔离的环境,不用在本地配置,直接指令docker run postgres或者rediis取得这些服务,从网上直接取出这个容器

可以运行不同版本的软件而且不会冲突

用户只需要配置好docker runtime,然后运行指令就行了。

docker的虚拟化

操作系统由内核 (与硬件交流)应用层(和用户交互)组成。

docker虚拟化的是应用层

VM虚拟机则是虚拟化了内核和应用层

和VM的区别

  • 轻量得多
  • 运行快
  • VM兼容性更强,无法在linux上运行windows的docker,需要和内核匹配

Docker Image

是什么

使用docker生成地打包或工件成为docker镜像。

基本上就只是个应用程序工件

但是它不仅拥有源码,还有环境配置信息(操作系统应用程序层,安装在上面的npm或者node.js)

镜像的运行实例就是一个container,容器就是一个运行实例,容器基于镜像启动,docker会在镜像只读层添加可写层。

所以可以同时运行多个基于同一个image的container,相互独立

注册表

储存和管理docker镜像的中央仓库。

Dockerhub用来找所有的官方,公司,个人的镜像,这个叫注册表

注册表中可以有很多个库,用来更新不同版本的image

image tags:image会进行版本控制

拉取指令

docker pull {name}:{tag} = Pull an image from a register

如果不指定版本,默认拉取最新

运行指令

docker run {name}:{tag} = Creates a contianer from given image and start it

run -d (detach):则不会锁住终端

docker log {container}

其实可以直接run image,尽管他不在本地,它会自动pull

docker stop {container} = Stop one or more running containers

怎么运行

container在一个独立的环境下运行,所以必须先把容器公开到本地

每次run一个container都是新的,但只会显示正在运行的,停机的不会显示,但是依旧存在

-a or --all = list all containers(stopped and runnning)

docker start {container} = start one or more stopped containers

--name = Assign a name to the container

端口绑定

-p {HOST_PORT}:{CONTAINER_PORT}:加入端口

在一个主机上,特定的端口上只能运行一个服务

绑定范围是1-9000

怎么创建Docker Image

选择一个base image,上面安装了npm或者应用程序需要的所有工具,是一个最小的操作系统环境。

一些镜像已经预装了特定的应用程序或框架,例如 nodepythonnginx 等。使用这些镜像可以方便地在其基础上开发相应的应用程序。

复制代码
# 使用 Ubuntu 作为基础镜像
FROM ubuntu:20.04

# 安装一些依赖
RUN apt-get update && apt-get install -y python3

# 复制应用程序代码
COPY . /app

# 设置工作目录
WORKDIR /app

# 指定容器启动时执行的命令
CMD ["python3", "app.py"]
相关推荐
名字还没想好☜4 小时前
用 systemd 托管后台服务:Restart 策略、日志接管、资源限制与开机自启全踩一遍
运维·docker·kubernetes
动力 continue5 小时前
docker容器大舞台,创建镜像,构造类,基础速通
docker·容器
Akiyama_Mio-Kon5 小时前
2026 最新:Dify 本地 Docker 部署完整教程(Windows + Git Bash)
windows·git·docker
野熊佩骑9 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
一个向上的运维者11 小时前
Kubernetes 网络三部曲:CNI、kube-proxy 与 CoreDNS 是如何协作的?
网络·容器·kubernetes
DolitD11 小时前
实时云渲染多应用并发:CELL容器技术突破3D隔离瓶颈
云原生·容器·实时互动·图形渲染·数据可视化
鹤落晴春12 小时前
【K8s】Kustomize管理
云原生·容器·kubernetes
石小千13 小时前
Docker 笔记(九)--离线安装
docker·容器
dazhong201214 小时前
Docker 进阶篇(二) Docker Compose 部署 Nginx 实践
nginx·docker·容器
码--到成功14 小时前
Docker、Kubernetes安装系列 一
docker·容器·kubernetes