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 命令提示符。
docker run
: 运行一个容器。
示例:docker run
docker ps
: 列出正在运行的容器。
示例:docker ps
docker images
: 列出本地已有的镜像。
示例:docker images
docker pull
: 从远程仓库下载镜像。
示例:docker pull
docker stop
: 停止一个运行中的容器。
示例:docker stop
docker rm
: 删除一个容器。
示例:docker rm
docker rmi
: 删除一个镜像。
示例:docker rmi
docker build
: 构建一个镜像。
示例:docker build -t
docker exec
: 在运行中的容器中执行命令。
示例:docker exec
docker logs
: 查看容器的日志。
示例:docker logs
docker-compose up
: 使用Docker Compose启动容器。
示例:docker-compose up
docker-compose down
: 停止并移除使用Docker Compose启动的容器。
示例:docker-compose down
docker network ls
: 列出Docker网络。
示例:docker network ls
docker network create
: 创建一个Docker网络。
示例:docker network create
docker network connect
: 将容器连接到一个Docker网络。
示例:docker network connect
docker volume ls
: 列出Docker卷。
示例:docker volume ls
docker volume create
: 创建一个Docker卷。
示例:docker volume create
docker volume rm
: 删除一个Docker卷。
示例:docker volume rm
docker inspect
: 检查容器、镜像、网络等的详细信息。
示例:docker inspect
docker tag
: 创建一个标签来标识镜像。
示例:docker tag
docker push
: 将镜像推送到远程仓库。
示例:docker push
docker login
: 登录到远程Docker仓库。
示例:docker login
docker logout
: 从远程Docker仓库注销。
示例:docker logout
docker restart
: 重启一个容器。
示例:docker restart
docker pause
: 暂停一个容器的所有进程。
示例:docker pause
docker unpause
: 恢复一个暂停的容器。
示例:docker unpause
docker kill
: 强制停止一个容器。
示例:docker kill
docker inspect
: 检查容器、镜像、网络等的详细信息。
示例:docker inspect
docker cp
: 在容器和主机之间复制文件或目录。
示例:docker cp :
docker stats
: 实时显示容器的资源使用情况。
示例:docker stats
docker attach
: 连接到正在运行的容器的标准输入、输出和错误流。
示例:docker attach
docker top
: 显示容器中运行的进程列表。
示例:docker top
docker commit
: 创建一个新的镜像,基于正在运行的容器。
示例:docker commit
docker system prune
: 清理无用的镜像、容器和卷。
示例:docker system prune
docker version
: 显示Docker客户端和服务器的版本信息。
示例:docker version
参考:
只要一小时,零基础入门Docker - 知乎
Docker入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_docker教程-CSDN博客
Github-Docker中文