docker 学习笔记

初学者的docker入门笔记

Docker文档

Docker概述

Docker 出现的原因

解决环境一致性问题
当我们开发一个项目时,通常需要依赖大量的框架、库、插件、环境变量等。例如,某个项目可能依赖:

  • Node.js 特定版本
  • MySQL 数据库
  • Redis 缓存
  • 某些 C++ 编译器或 Python 包

这些依赖项在我们本地电脑上能正常运行,并不意味着在他人的电脑或线上服务器上也能顺利部署。不同系统、不同版本、配置差异都会带来兼容性问题,这就是我们常说的 “环境不一致” 问题。

在docker之前,大家使用虚拟机技术解决这个问题
——但是它的本质是运用使用软件模拟一整套硬件系统,体积大、速度慢、资源消耗高
而 Docker 是通过 操作系统级虚拟化,模拟出 轻量 隔离 的运行环境。

Docker 基本结构

类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。
任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。

Docker 容器就像一台台运行的虚拟机,
里面运行你的应用程序。
它们是相互隔离的,互不影响。

类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。
注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

除了以上几个结构组成中重要的概念外,还有另一个重要的概念
Dockerfile
它像一个自动化的脚本,它主要用来创建我们之前讲到的镜像。

他就好比把虚拟机中创建虚拟机并安装软件的过程压缩为一个脚本。

Docker 安装

安装完成后可以使用docker version查看Docker的版本信息
查看Docker的帮助信息:docker --help

Docker 常用命令

列举所有的容器: docker ps
停止容器: docker stop <容器 ID>
重启容器: docker restart <容器 ID>
删除容器: docker rm <容器 ID>
启动一个远程 Shell: docker exec -it<容器 ID> /bin/bash
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

-i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

  1. docker run: 运行一个容器。
    示例:docker run

  2. docker ps: 列出正在运行的容器。
    示例:docker ps

  3. docker images: 列出本地已有的镜像。
    示例:docker images

  4. docker pull: 从远程仓库下载镜像。
    示例:docker pull

  5. docker stop: 停止一个运行中的容器。
    示例:docker stop

  6. docker rm: 删除一个容器。
    示例:docker rm

  7. docker rmi: 删除一个镜像。
    示例:docker rmi

  8. docker build: 构建一个镜像。
    示例:docker build -t

  9. docker exec: 在运行中的容器中执行命令。
    示例:docker exec

  10. docker logs: 查看容器的日志。
    示例:docker logs

  11. docker-compose up: 使用Docker Compose启动容器。
    示例:docker-compose up

  12. docker-compose down: 停止并移除使用Docker Compose启动的容器。
    示例:docker-compose down

  13. docker network ls: 列出Docker网络。
    示例:docker network ls

  14. docker network create: 创建一个Docker网络。
    示例:docker network create

  15. docker network connect: 将容器连接到一个Docker网络。
    示例:docker network connect

  16. docker volume ls: 列出Docker卷。
    示例:docker volume ls

  17. docker volume create: 创建一个Docker卷。
    示例:docker volume create

  18. docker volume rm: 删除一个Docker卷。
    示例:docker volume rm

  19. docker inspect: 检查容器、镜像、网络等的详细信息。
    示例:docker inspect

  20. docker tag: 创建一个标签来标识镜像。
    示例:docker tag

  21. docker push: 将镜像推送到远程仓库。
    示例:docker push

  22. docker login: 登录到远程Docker仓库。
    示例:docker login

  23. docker logout: 从远程Docker仓库注销。
    示例:docker logout

  24. docker restart: 重启一个容器。
    示例:docker restart

  25. docker pause: 暂停一个容器的所有进程。
    示例:docker pause

  26. docker unpause: 恢复一个暂停的容器。
    示例:docker unpause

  27. docker kill: 强制停止一个容器。
    示例:docker kill

  28. docker inspect: 检查容器、镜像、网络等的详细信息。
    示例:docker inspect

  29. docker cp: 在容器和主机之间复制文件或目录。
    示例:docker cp :

  30. docker stats: 实时显示容器的资源使用情况。
    示例:docker stats

  31. docker attach: 连接到正在运行的容器的标准输入、输出和错误流。
    示例:docker attach

  32. docker top: 显示容器中运行的进程列表。
    示例:docker top

  33. docker commit: 创建一个新的镜像,基于正在运行的容器。
    示例:docker commit

  34. docker system prune: 清理无用的镜像、容器和卷。
    示例:docker system prune

  35. docker version: 显示Docker客户端和服务器的版本信息。
    示例:docker version


参考:
只要一小时,零基础入门Docker - 知乎
Docker入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_docker教程-CSDN博客
Github-Docker中文