docker

windows安装

第一步、下载docker桌面版 docker官方下载链接:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe 推荐用迅雷,速度不错。

第二步、安装docker

检验安装是否成功的方法 1、打开控制台,输入命令“docker”,如果有关于docker的帮助提示出现,则说明已经成功安装。

ubuntu安装

在线安装

官方指南:https://docs.docker.com/engine/install/ubuntu/

sudo apt-get install docker-ce docker-ce-cli containerd.io containerd.io、docker-ce-cli、docker-ce分别是干什么的。

  • containerd.io - daemon to interface with the OS API (in this case, LXC - Linux Containers), essentially decouples Docker from the OS, also provides container services for non-Docker container managers
  • docker-ce - Docker daemon, this is the part that does all the management work, requires the other two on Linux
  • docker-ce-cli - CLI tools to control the daemon, you can install them on their own if you want to control a remote Docker daemon

离线安装

源码安装docker—(xys:按照该方法安装后,无需分别安装containerd.io、docker-ce-cli、docker-ce)

docker源码的下载地址可以是国内清华镜像:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/docker-18.09.0.tgz(可以修改路径中的x86_64为aarch64以改变支持的平台) 也可以是国外路径:https://download.docker.com/linux/static/stable/aarch64/

无网、不同处理器架构如何使用docker?

第一步,在内网机器上,离线安装docker(见上节) 第二步,在外网机器上,pull镜像:docker x86平台 拉取 arm版镜像 第三步,在外网机器上,将arm镜像压缩成tar包(save):docker image save成tar包,tar包load成image 第四步,将镜像的tar包传输道到内网机器:两台Linux系统之间传输文件的几种方法—(scp指令亲测有效) 第五步,在内网机器上,将tar包load成镜像:docker image save成tar包,tar包load成image

注意:save和load镜像的时候,容易出现镜像名和tag丢失的现象,处理办法:(1)打包时不要采用IMAGE ID,而是采用REPOSITORY:TAG,如此可减少丢失现象 (2)如果已经丢失啦镜像名和tag,则采用docker tag命令来处理,如下所示:

重命名镜像的方法: docker tag [镜像id] [新镜像名称]:[新镜像标签] docker tag 93109ce1d590 rep/python-env:2.7.13

利用docker hub国内镜像加速

Docker 国内镜像

docker 命令

docker compose 和docker版本匹配关系_docker

docker compose 和docker版本匹配关系_Docker_02

docker compose

docker-compose需要单独安装,是一种docker编排工具。

两个作用:

  • 在普通情况下(无Swarm 集群)可以用compose(docker-compose.yml )来一次配置、启动多个容器
  • 在 Swarm 集群中可以用 compose (docker-compose.yml) 来配置、启动多个服务。

Docker-Compose将所管理的容器分为三层:

  • 工程(project):Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例。
  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名 字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等,即以容器为粒度,用户需要Compose 所完成的任务。
  • 容器(container):由一组关联的应用容器组成的一个完成业务单元,在docker-compose.yml中定义。即是 Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所 有容器管理与部署操作。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的镜像。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
# docker-compose.yml 配置实例
version: '3'
services:
  web:
    build: .
    ports:
   - "5000:5000"
    volumes:
   - .:/code
    - logvolume01:/var/log
    links:
   - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

官方安装docker-compose—(如果用apt install docker-compose,版本会老旧)docker-compose.yml 配置文件编写详解Compose specification

docker集群(Swarm mode),节点可扩展

[基本概念] 参考:https://vuepress.mirror.docker-practice.com/swarm_mode/overview/# 官网介绍: https://docs.docker.com/engine/swarm/ Swarm 是使用 SwarmKit (opens new window)构建的 Docker 引擎内置(原生)的集群管理和编排工具。

节点

swarm 集群由管理节点(manager)和工作节点(work node)构成

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。节点的细节

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。

节点分为管理 (manager) 节点和工作 (worker) 节点。

  • 管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。
  • 工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

service与task

服务和任务

  • 任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
  • 服务 (Services) 是指一组任务(容器)的集合,并且这组容器来自同一个镜像,服务定义了任务的属性。服务有两种模式: (1)replicated services 按照一定规则在各个工作节点上运行指定个数的任务。 (2)global services 每个工作节点上运行一个任务 两种模式通过 docker service create 的 --mode 参数指定。

docker中service是什么意思

在docker中,service是用于规定镜像运行规则的服务;一个service只运行一个image并根据这个image实例化多个容器,以便让主机分配更多的计算资源给服务进程。

  • 一个service只运行一个image
  • service可以根据一个image实例化多个容器,以便让主机分配更多的计算资源给服务进程
  • service规定了镜像运行的一些规则,例如应该开放哪个端口,需要把容器复制多少份以增加服务处理能力等等

创建集群(docker swarm)

https://vuepress.mirror.docker-practice.com/swarm_mode/create/#

管理集群(docker service)

https://vuepress.mirror.docker-practice.com/swarm_mode/deploy/

docker service scale 扩展一个或多个服务: docker service scale webtier_nginx=5 将服务webtier_nginx扩展为5个容器

swarm + docker-compose

正如之前使用 docker-compose.yml 来一次配置、启动多个容器,在 Swarm 集群中也可以使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务。 我们使用 docker service create 一次只能部署一个服务,使用 docker-compose.yml 我们可以一次启动多个关联的服务。