Docker

作者: bowen_wu | 来源:发表于2021-09-08 16:23 被阅读0次

概述

  • Docker 2013 年问世,依赖于 cgroups 技术
  • 保证开发、测试、交付和部署的环境完全一致
  • 保证资源的隔离 => 资源隔离的好处 // TODO
  • 启动临时的、用完即弃的环境,例如测试
  • 迅速(秒级)超大规模部署和扩容

Docker 基本概念

  • 宿主机 => Docker 所在的容器
  • Image => 镜像 => 一个预先定义好的模板文件,Docker 引擎可以按照这个模板文件启动无数个一模一样,互不干扰的容器
  • Container => 容器
    1. 一台虚拟的计算机,拥有独立的网络、文件系统、进程等等
    2. 默认和宿主机不发生任何交互 => 意味着数据是没有持久化的
    3. 每个容器都有一个 ID,支持缩写
  • Docker 镜像默认是分层的 => 分层的目的或优点: 复用,节省空间

Docker Run

docker run 装载镜像成为一个容器 => 从蛋糕模子做出来一个蛋糕

docker run -it <Image Name> <镜像中要运行的命令和参数> // -it => 交互式命令行,当前 shell 中运行,Ctrl-C 退出
docker run -d <Image Name> <镜像中要运行的命令和参数> // -d => daemon 模式,在后台运行

docker run 参数

  • --name => 为容器指定一个名字
  • --restart=always => 遇到错误时自动重启
  • -v <本地文件>:<容器文件> => 将宿主机的文件映射到 Container 文件,使得宿主机和 Container 可以共同进行读写文件 => volume
  • -p <本地端口>:<容器端口> => 宿主机端口和 Container 端口相绑定,使得宿主机可以访问 Container 内部的服务 => 可以实现分布式部署 => -p 8080:8080 + -p 8081:8080 + -p 8082:8080 + ... => 可以用任意一个端口访问服务,服务是隔离的,是一样的 => port
  • -e <Name>=<Value> => 环境变量 => environment

Docker 命令

  • docker exec -it <Container ID> <目标命令,通常为 bash> => 交互式进入指定目标容器,进入容器执行命令
  • docker images => 查看本地已有的 Image
  • docker rmi <Image ID> => 删除本地 Image => docker image rm -f <Image ID>
  • docker ps => 查看本地当前运行的 Container
  • docker run -it mysql => 交互式命令行
  • docker start <Container ID> => start 一个 Container
  • docker stop <Container ID> = stop 一个 Container
  • docker rm <Container ID> => 删除一个 Container
  • docker rm -f <Container ID> => 强制删除一个 Container
  • docker logs <Container ID> => 查看目标容器的输出
  • docker logs -f <Container ID> => 查看最后几行
  • docker inspect <Container ID> => 查看容器的详细状态
  • docker build . => 使用当前文件夹下的 Dockerfile 生成一个 Image
  • docker build -t <IP>:<port>/<ImageName>:<tag> . => 使用当前文件夹下的 Dockerfile 生成一个指定 tag 的 Image => 默认是 docker 中心仓库,如果设置了 IP 和 port,将会推到指定的 IP
  • docker tag <Image ID> <ImageName>:<Tag> => 为 Image 设置 tag => 其中 tag 操作决定了未来这个镜像会被 push 到哪里,使用者需要从哪里下载镜像 => docker tag <Image ID> 127.0.0.1:5000/hahaha:123
  • docker push <IP>:<port>/<ImageName>:<tag> => 推送镜像到指定 IP => docker push 127.0.0.1:5000/hahaha:123
  • docker pull => 下载一个指定的 Image,方便随时启动
  • docker pull mysql:5.7.28 => 下载一个指定版本的 Image,默认是 latest,其中 5.7.28 是 tag,表明了 version,mysql 是 Image 名字
  • docker pull register.cn-beijing.aliyuncs.com/dr1/mysql:0.0.16 => 下载一个指定了镜像仓库(register.cn-beijing.aliyuncs.com/dr1/) 的 Image,默认是 Docker 中央仓库

Dockerfile

指定镜像如何生成

# Dockerfile
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y nginx

RUN echo "hahaha" > /usr/share/nginx/html/index.html

EXPOSE 80

Docker 私服

Docker Registry => 可以方便地创建镜像仓库的私服

docker run -d -p 5000:5000 --restart always --name registry registry:2

Kubernetes K8s

Kubernetes 是完全基于 Docker 的一个容器编排引擎,自动化的容器编排引擎,使得容器以统一的自动化的形式进行分布式的提供服务,一个更大体量上的用于自动化的容器编排引擎,自动化是其主要的优点。etcd是 Kubernetes 核心

DevOps Concepts: Pets vs Cattle

  • Pets => 出现问题需要修复
  • Cattle => 出现问题 Kill 重启一个新的

知识点

  1. Docker 参数有严格的顺序。镜像名之前是 Docker 本身的参数,没有顺序,镜像名之后是镜像要启动容器的参数,即要传递给容器的参数
  2. .exe => executable
  3. Docker set registry mirrors => 可以加速国内访问
  4. docker 清除 log => echo "" > $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)

相关文章

  • docker学习

    docker镜像 docker容器 docker仓库 安装docker docker版本 docker分为社区版和...

  • Docker安装和运行

    获取Docker 安装Docker 验证安装 1、获取Docker Docker for Mac Docker f...

  • Docker知识手册

    Docker 容器 启动docker:docker start 查看docker运行状态:docker stats...

  • Docker简介

    章节介绍 # Docker是什么# Docker包括什么# Docker镜像# Docker编配# Docker还...

  • Docker 常用操作

    Docker docker: 18.09.4、nvidia-docker: 2.0.3 docker 19.03 ...

  • rancher+harbor离线安装

    安装docker,此docker为社区版docker。docker官方文档:https://docs.docker...

  • Linux之Docker

    Linux之Docker 目录 Docker简单介绍 在线Docker安装 离线Docker安装 Docker简单...

  • Docker常用命令

    Docker常用命令 Docker帮助命令 docker version:查看docker版本 docker in...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • docker容器状态查看命令集

    docker inspect 用法 : docker inspect [docker名称/docker short...

网友评论

      本文标题:Docker

      本文链接:https://www.haomeiwen.com/subject/wgvpwltx.html