目录
Docke r原理与应用
Docker改变了软件世界
- 在Docker出现之前……
- 软件在操作系统上是如何工作的?
- 如何交付软件?
- 如何部署软件?
- Docker出现之后……
Docker能做什么?
- 保证开发、测试、交付、部署的环境完全一致
- 保证资源的隔离
- 启动临时的、用完即弃的环境,例如测试
- 迅速(秒级)超大规模部署和扩容
Docker的基本概念
- 镜像 image
- 一个预先定义好的模板文件,Docker引擎可以按照这个模板 文件启动无数个一模一样,互不干扰的容器
- 容器 container
- 一台虚拟的计算机,拥有独立的:
- 网络
- 文件系统
- 进程
- 默认和宿主机不发生任何交互
- 意味着数据是没有持久化的!
docker pull/images
- 下载一个指定的镜像,方便随时启动
- docker pull mysql:5.7.28 下载指定镜像
- docker images查看本地已有的镜像
registry.cn-beijing.aliyuncs.com/dr1/hcsp:0.0.16
镜像仓库 镜像名 tag
docker run/ps
- docker run装载镜像成为一个容器
- 就好像从蛋糕模子做出来一个蛋糕
- 在这个容器看来,自己就是一台独立的计算机
- 每个容器有一个ID,支持缩写
- docker run -it <镜像名> <镜像中要运行的命令和参数>
- 交互式命令行,当前shelI中运行,Ctrl-C退出
- docker run -d <镜像名> <镜像中要运行的命令和参数>
- daemon模式,在后台运行
docker run
- --name为容器指定一个「名字」
- --restart=always遇到错误自动重启
- -v <本地文件>:<容器文件>
- -p <本地端口>:<容器端口>
- -e NAME=VALUE
docker start/stop
- 启动/停止一个容器
- 可以想象为开关机
docker rm
- 删除一个容器
- 想象成将电脑丢掉
docker exec
- 指定目标容器,进入容器执行命令
- docker run -it <目标容器ID> <目标命令(通常为bash)>
- 可以「想象」成ssh
- 调试、解决问题必备命令
docker logs
- docker logs <容器ID或容器名>
- 查看目标容器的输出
- docker logs -f <容器ID或容器名>
docker inspect
- 高级命令,可以无视
- 查看容器的详细状态
分层的镜像
ubuntu:15.04 Image
Dockerfile
- 指定镜像如何生成
- 编写第一个Dockerfile
- docker build .
- 每个镜像会有一个唯一的ID
Docker的镜像仓库与tag
- 可以任意对镜像进行tag操作
- 决定了未来这个镜像会被push到哪里
- 决定了未来从哪里下载镜像
- 可以方便的创建镜像仓库的私服
- --registry-mirror
- --insecure-registry
Docker 与Kubernetes(K8s)
Kubernetes Architecture
练习
docker pull blindpirate/hcsp-quiz
- 尝试自己编写一个docker run命令,完成以下要求:
- 使用交互式命令行模式(
-it
)启动Docker容器。 - 向启动的Docker容器内挂载一个文件(卷),使得容器内能够读取到
/app/config.txt
文件,其内容为字符串"ABC"。 - 向启动的Docker容器内传递一个环境变量
HCSP_ENV=DEF
。 - 为启动的Docker容器设置要执行的命令:
java Main
。
- 使用交互式命令行模式(
- 如果一切正确,命令行会输出:
答案是: XXXXX
The answer is: XXXXXXX
成功:
winpty docker run -e HCSP_ENV=DEF -itv //e/config.txt:/app/config.txt blindpirate/hcsp-quiz
环境:win10 1909,git bash
git bash 运行
docker run -it -v /e/config.txt:/app/config.txt blindpirate/hcsp-quiz
报:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
运行
winpty docker run -it -v /e/config.txt:/app/config.txt blindpirate/hcsp-quiz
没有错误提示,但是没有成功挂载文件
「资料来源:饥人谷」