MENU

Docker粗浅学习

January 15, 2022 • Read: 495 • Web

Docker粗浅学习

定义:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

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

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

基本架构:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。Docker 镜像是用于创建 Docker 容器的模板。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器是独立运行的一个或一组应用,是镜像运行时的实体。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

安装

  1. Linux安装 curl -fsSL https://get.docker.com | bash -s docker
  2. Mac os安装 brew install --cask --appdir=/Applications docker

基本使用:

  1. 使用 docker run 命令来在容器内运行一个应用程序。
    例子:

docker run ubuntu:15.10 /bin/echo "Hello world"

  • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo "Hello world": 在启动的容器里执行的命令
  1. 使用docker run -d 创建一个以进程方式运行的容器
    会返回一个容器ID
  2. 使用docker ps查看正在运行的容器
    输出详情介绍:

CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)
    PORTS: 容器的端口信息和使用的连接类型(tcpudp)。

NAMES: 自动分配的容器名称。
可以使用容器ID或者容器名称来操控一个容器

  1. 使用docker logs <容器ID/容器名称> 查看容器内的标准输出
  2. docker command --help 可以查看某条docker命令的详细说明
  3. docker search xxx 搜索镜像
  4. docker pull xxx拉取镜像
  5. docker rmi xxx删除镜像
  6. docker commit 更新镜像
    具体要先使用一个镜像开启一个容器

docker run it ubuntu:15.10 /bin/sh进入容器内,然后使用对应的更新命令进行更新
docker commit -m="has update" -a="bill" <容器ID> 镜像名称:镜像版本

  • -m: 提交的描述信息
  • -a: 指定镜像作者
  1. docker ps -a 查看所有运行过的容器
  2. docker start <docker_id/name>重启已经停止的容器
  3. docker restart <docker_id/name>重启已经停止的容器
  4. docker stop <docker_id/name>停止某个容器
  5. 当启动容器使用了-d参数是,使用docker exec -it <docker_id/name> shell环境(如/bin/bash)进入容器交互环境
  6. docker rm -f <docker_id/name>删除一个容器
  7. docker run -d -P training/webapp python app.py docker运行一个web应用,-P可以随机使用端口号映射。-p 宿主机端口号:docker内端口号可以自定义端口映射
  8. docker top <docker_id/name> 查看docker内运行的程序
  9. docker inspect <docker_id/name>查看容器的配置
  10. docker history <image_name> --no-trunc可以查看完整的镜像提交历史

更详细的docker命令:
菜鸟教程