乐趣区

关于java:容器化技术大杀器-Docker

什么是 Docker


Docker 是一个虚拟化容器引擎,齐全应用沙箱隔离机制,较传统的 VM 虚拟机有很大劣势。

传统虚拟机(VM)和虚拟化容器(Docker)的区别:

传统的 VM 虚拟机不能共享资源 , 比方在 VMWare 中装置了一个内存为 4GB 的 Linux 操作系统 , 意味着该 Linux 零碎应用了宿主机中固定的 4GB 内存且不能与宿主机或其它虚构零碎共享该资源 , 可能会造成资源节约或资源溢出。

Docker 补救了传统 VM 虚拟机的毛病 , 每个虚拟化操作系统能够相互共享资源 , 解决了资源溢出或者资源节约等一系列问题。

Docker 次要概念


Docker 镜像(Image)

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

Docker 镜像是一个非凡的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还蕴含了一些为运行时筹备的一些配置参数(如环境变量、用户等)。

Docker 容器(Container)

Docker 镜像和 Docker 容器的关系,就像是 面向对象程序设计中的类与对象,镜像是动态的定义。

容器是镜像运行时的实体,能够被创立、启动、进行、删除、暂停等。

容器内的过程是运行在一个隔离的环境里,应用起来就如同是在一个独立于宿主的零碎下操作一样,这种个性使得容器封装的利用比间接在宿主运行更加平安。

Docker 仓库(Registry)

镜像构建实现之后,一行命令就能够在以后的宿主机上运行起来,然而如果要在其它服务器上应用这个镜像,就须要一个集中存储镜像的仓库 — 即 Docker 仓库。

私有 Docker Registry:最常应用的 Registry 公开服务是官网的 Docker Hub,但在国内拜访会比较慢,而国内的一些云服务商提供了针对 Docker Hub 的镜像服务,常见的有 阿里云、DaoCloud 加速器,比间接从 Docker Hub 下载速度会进步很多。

公有 Docker Registry:能够在本地搭建公有 Docker Registry。Docker 官网提供了 Docker Registry 镜像,能够间接应用做为公有 Registry 服务。

装置 Docker


应用脚本主动装置

$ curl -fsSL get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh --mirror Aliyun

执行这两行命令后,脚本就会主动的将所有筹备工作做好,并且把 Docker CE 装置在零碎中。

应用 APT 装置

# 装置一些必要的零碎工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# 装置 GPG 证书
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 写入软件源信息
$ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 更新软件源
$ sudo apt-get -y update

# 装置 Docker CE
$ sudo apt-get -y install docker-ce

Docker 用户组


装置之后,默认状况下,Docker 命令会应用 Unix socket 与 Docker 引擎通信,而只有 Root 用户和 Docker 组的用户才能够拜访 Docker 引擎的 Unix socket,个别 Linux 零碎上不会间接应用 Root 用户。因而,更好地做法是将须要应用 Docker 的用户退出 Docker 用户组。

# 建设 Docker 用户组
$ sudo groupadd docker

# 将用户退出 Docker 用户组
$ sudo usermod -aG docker 用户名

镜像加速器


因为国内从 Docker Hub 下载镜像有时会十分迟缓,因而能够配置国内云服务商提供的镜像加速器:

  • Docker 官网提供的中国 registry mirror
  • 阿里云加速器
  • DaoCloud 加速器

获取阿里云镜像加速器

增加镜像加速器

  • 登录阿里云
  • 进入 容器镜像服务控制台 > 镜像加速器
  • 增加镜像加速器
  • 复制加速器地址,如下图

配置镜像加速器

编辑 daemon.json 配置文件

$ sudo nano /etc/docker/daemon.json

增加以下代码

{
  "registry-mirrors": ["镜像加速器地址"]
}

重启 Docker 服务

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

查看加速器是否失效

$ docker info

看到输入以下内容,阐明镜像加速器配置胜利

Registry Mirrors:
  镜像加速器地址

Docker 常用命令


Docker 镜像命令

# 列出镜像列表
$ docker images
$ docker image ls -a

# 运行 Docker 镜像(守护态形式)$ docker run -d 镜像名

# 删除指定 Docker 镜像
$ docker image rm 镜像名

# 删除 Docker 虚悬镜像
$ docker image prune

Docker 容器命令

# 列出正在运行的容器
$ docker ps -a

# 列出所有容器(包含已进行容器)$ docker ps -l

# 进入运行中的 Docker 容器
$ docker exec -it 容器 ID /bin/bash

# 进行 Docker 容器
$ docker stop 容器 ID

# 删除指定 Docker 容器
$ docker rm -f 容器 ID

# 删除进行的 Docker 容器
$ docker container prune

# 查看 Docker 容器历史运行日志
$ docker logs 容器名

# 实时监听 Docker 容器运行日志
$ docker logs -f 容器名

Docker 数据卷命令

# 创立 Docker 数据卷
$ docker volume create 数据卷名

# 列出所有 Docker 数据卷
$ docker volume ls

# 删除指定 Docker 数据卷
$ docker volume rm 数据卷名

# 删除未关联(生效)Docker 数据卷
$ docker volume prune
$ docker volume rm $(docker volume ls -qf dangling=true)

Docker 文件操作命令

# 从主机复制文件到 Docker 容器中
$ sudo docker cp 主机内文件门路 容器 ID: 容器内文件存储门路

# 从 Docker 容器中复制文件到主机中
$ sudo docker cp 容器 ID: 容器内文件门路 主机内文件存储门路

更多干货请移步:https://antoniopeng.com

退出移动版