docker 基础回顾


docker 简介

docker 在英文中有码头工人的意思,码头工人将货物装载到集装箱,而 docker 则将开发者的应用打包成一个可供容器使用的镜像,并且可以分享给其他开发者使用。

Docker 是一个开源的应用容器引擎。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker 的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

  1. 快速一致地交付您的应用程序
  2. 响应式部署和扩展
  3. 在同一硬件上运行更多工作负载

docker 基本概念

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。操作系统分为 内核 和 用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

仓库(Repository):仓库可看成一个代码控制中心,类似 github,用来保存镜像。

使用镜像

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

# 下载镜像
docker pull ubuntu

# 删除镜像
docker rmi ubuntu

# 上传镜像
docker tag ubuntu:latest docker.io/library/ubuntu
docker push docker.io/library/ubuntu

# 查看镜像
docker images

操作容器

# 创建容器并运行
# -it:参数 -i 交互式操作,参数 -t 表示 终端
docker run -it ubuntu:18.04 /bin/bash

# --rm 这个参数是说容器退出后随之将其删除
docker run -it --rm ubuntu:18.04 bash

# -d:这个参数是说容器运行后不关闭,而是保持运行状态, --name 参数制定容器命名
docker run -itd --name ubuntu-test ubuntu /bin/bash

#  -p 参数:指定容器的网络端口映射,-p 8080:8080:指定容器的 8080 端口映射到宿主机的 8080 端口
docker run -d -p 8080:8080 training/webapp python app.py

# 查看容器的状态
docker ps -a

# 查看最近的容器
docker ps -l

# 停止一个已启动的容器
docker stop b750bbbcfd88

# 启动一个已停止的容器
docker start b750bbbcfd88

# 删除容器
docker rm b750bbbcfd88

Docker 仓库管理

# 登录
docker login

# 登出
docker logout

# 搜索镜像
docker search ubuntu

# 拉取镜像
docker pull ubuntu

# 推送镜像
docker tag ubuntu:18.04 username/ubuntu:18.04
docker push username/ubuntu:18.04

Dockerfile

Dockerfile 是一个文件,用来描述镜像的构建过程,包含了一条条构建镜像所需的指令和说明。

常用指令

FROM:指定构建镜像的基础镜像。

RUN:指定在构建镜像时执行的命令。

CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

  • CMD 在 docker run 时运行。
  • RUN 是在 docker build。

作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。

COPY:指定在构建镜像时拷贝文件。

ENV:指定环境变量。在后续的指令中,可以使用这个环境变量。

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

在 Dockerfile 文件所在目录执行 docker build 命令,会生成一个镜像。

docker build [选项] <上下文路径/URL/->

# -t 指定生成的镜像的名称
docker build -t koa-demo .

参考

Docker 教程


文章作者: Angus
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Angus !
  目录