2026.4.16 Docker初学

3 阅读4分钟

Docker 原理

Docker 应用的容器化

将项目的所有文件,及其所需的依赖,封装成一个标准化的“镜像”,该镜像可以在任何装备了Docker的机器上运行而屏蔽不同系统的底层实现。

Kubernetes(K8s) 容器的编排与管理

一个项目可能过大,需要有多个容器,K8s负责容器间的交互与管理,而不用手动管理每个容器。

Docker 容器 vs 镜像
概念编程类比现实类比特点
镜像 (Image)类 (Class)菜谱盘静态、只读、模板
容器 (Container)对象 (Object)按照菜谱做出来的那盘菜动态、可写、实例

镜像就像“项目的安装包”或“环境快照”,存储着所有的项目代码。
容器就是“把安装包运行起来后的环境”,可能会崩溃,删除后重新用镜像启动一个容器就行。

安装检查

(本机版本 28.5.1)检查是否安装了 Docker:
docker --version
(需要打开docker Desktop软件)检查 Docker 服务是否运行:
docker ps

运行

docker run hello-world(容器名称)

可以把 docker run 理解为"一键完成"的快捷操作。
当你执行这个命令时,Docker 会:

检查本地:先看你电脑上有没有 hello-world 这个镜像
自动下载:如果没有,就去 Docker Hub 官网自动下载(所以需要有网络)
创建容器:用下载好的镜像创建一个(同名的?)容器
启动容器:立即运行这个容器,输出"Hello from Docker!"等信息
整个过程不需要你提前做任何准备,一个命令就够了。

Docker 也提供了分开操作的命令
docker create hello-world (创建容器
docker start 容器ID (启动容器)
docker start -a 容器ID (打印输出)
docker run 就相当于 docker create + docker start

一些基础的简单的镜像 可以是从 Docker Hub 官网自动下载的;
除了从网上下载现成的,大多数情况下,要实现把我的项目打包进镜像->要自定义镜像:

  • 写一个 Dockerfile(相当于“制作说明书”)
  • 用 docker build 命令,把你的代码、环境、配置打包成一个镜像

一个容器只能基于一个镜像创建。

用户登录(有时需要权限校验)

docker login

核心命令

  1. 拉取镜像
    从Docker Hub下载一个Nginx(网页服务器)镜像
    docker pull nginx

  2. 运行容器
    用nginx镜像启动一个容器,并把容器的80端口映射到电脑的8080端口
    docker run -d --name my-nginx -p 8080:80 nginx
    -d:后台运行
    --name my-nginx:给容器起个名字
    -p 8080:80:把容器里的80端口映射到你电脑的8080端口
    验证效果:打开浏览器,访问 (http://localhost:8080),看到Nginx欢迎页就对了!

  3. 查看和管理容器:docker ps
    停止容器:docker stop my-nginx
    启动已停止的容器:docker start my-nginx
    删除容器(需要先停止):docker rm my-nginx
    查看容器日志:docker logs my-nginx 查看本地镜像:docker images
    删除镜像:docker rmi 镜像名

用Dockerfile打包自己的应用(进阶)

  1. 创建项目目录

  2. 创建一个简单的网页
    echo "我的第一个Docker应用!" > index.html

  3. 创建一个Dockerfile文件
    使用记事本或任何文本编辑器创建 Dockerfile,修改后缀
    使用Nginx作为基础镜像:
    FROM nginx
    或者用 echo 命令创建 Dockerfile
    echo "FROM nginx" > Dockerfile

  4. 复制本地的index.html到容器里Nginx的默认目录:
    使用记事本
    COPY index.html /usr/share/nginx/html/
    或者用 echo 命令编辑 Dockerfile
    echo "COPY index.html /usr/share/nginx/html/" >> Dockerfile

  5. 暴露80端口:
    使用记事本
    EXPOSE 80
    或者用 echo 命令编辑 Dockerfile) echo "EXPOSE 80" >> Dockerfile

  6. 查看文件内容
    cat Dockerfile

  7. 构建镜像
    docker build -t my-first-docker-app .
    -t my-first-docker-app:给镜像起个名字
    . :表示用当前目录下的Dockerfile

  8. 运行容器
    docker run -d -p 8080:80 --name my-web-container my-first-docker-app
    -d:后台运行
    -p 8080:80:把容器的80端口映射到本机的8080端口
    --name my-web-container:给容器起个名字

  9. 测试应用 打开浏览器,访问:http://localhost:8080

备注

由于梯子问题,docker desktop登录失败,今天无法完整地跑通整个流程。