1.Docker简介
一.什么是虚拟化技术
虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可以比原本的组态更好的方式,来应用这些资源。
虚拟化技术主要作用:
高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件
软件跨环境迁移问题(代码的水土不服)
二.什么是Docker
Docker通俗的讲是服务器中高性能的虚拟机,可以将一台物理机虚拟N多台虚拟机的机器,互相之间隔离,互不影响。
第一句,是“Build, Ship and Run”。也就是,“搭建、发送、运行”,三板斧。
第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
三.Docker与虚拟机的比较
Docker 和传统虚拟化方式的不同之处,可见Docker是在操作系统层面上实现虚拟
化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
四.Docker基本概念
图示帮助理解:
Docker 的几个核心概念如下,也可结合图示理解
宿主机:安装Docker守护进程的Linux服务器,称之为宿主机;
镜像(Image):Docker 镜像,就相当于是一个 root 文件系统。除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
容器(Container):镜像运行之后的实体,镜像和容器的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个镜像控制中心,用来保存镜像。
容器和镜像的区别?
要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器
总结:可以理解镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件(镜像就是容器的系统文件),这里的文件包括进程运行所需要的可执行文件,依赖软件,库文件,配置文件等等。也可以将容器看做是镜像运行的一个实例,或者是文件与进程的关系。
每运行一个容器,都会在镜像上加一个可写层,但这一层并不会改变镜像本身,这也就是为什么,有时候你如果同一个镜像,启动多个容器,里面的内容不会变,但是如果将可写层持久化,就要通过commit命令来把可写层写到磁盘,即生成新的镜像。
2.Docker安装与启动常用命令
(1)查看电脑上已经已经安装Docker
yum list installed | grep docker
(2)安装docker
yum -y install docker
(3)安装后查看docker版本
docker -v
(4)systemctl命令是系统服务管理器指令
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:docker info
开机启动:systemctl enable docker
查看docker帮助文档:docker --help
3.Docker镜像常用命令
一.配置镜像加速器
默认情况,将从docker hub(https://hub.docker.com/)下载docker镜像太慢,一般都会配置镜像加速器;
方案一:中科大
中国科学技术大学(ustc)是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
编辑该文件:
vi /etc/docker/daemon.json |
在该文件中输入如下内容
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } |
方案二:阿里云
如果中科大镜像加载速度很慢,建议配置阿里云镜像加速,这个镜像仓库如果不好使,可以自己从阿里云上申请!
{ "registry-mirrors": ["https://3ad96kxd.mirror.aliyuncs.com"] } |
必须要注册,每个人分配一个免费的docker镜像加速地址,速度极快
配置完成记得刷新配置
sudo systemctl daemon-reload sudo systemctl restart docker |
二.镜像常用命令
查看镜像 docker images
搜索镜像 docker search imageName
拉取镜像 docker pull imageName:version
删除镜像 docker rmi imageId rmi-->remove Image
4.Docker容器常用命令
查看容器
查看正在运行的容器:docker ps
查看所有容器(查看正在运行的和已经停止运行的) docker ps -a 或者docker ps -all
查看最后一次运行的容器: docker ps -l
查看停止的容器:docker ps -f status=exited
创建容器:交互式、守护式
交互式: docker run -it --name=容器名称 镜像名称:标签 /bin/bash
守护式: docker run -di --name=容器名称 镜像名称(或镜像ID):标签 /bin/bash
登录容器/进入容器的目录:
docker exec -it 容器名称 (或者容器ID) /bin/bash
启动容器: docker start 容器名称(或者容器ID)
停止容器: docker stop 容器名称(或者容器ID)
删除容器docker rm 容器名称(或者容器ID)
5.Docker数据卷
一.概述
数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步。一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷。简单来说数据卷本质其实是共享文件夹,是宿主机与容器间数据共享的桥梁。
二. 数据卷作用
容器数据持久化。
外部机器和容器间接通信。
容器之间数据交换。
三.数据卷配置方式
(1)1个容器挂载1个数据卷
注意事项:
1. 目录必须是绝对路径
2. 如果宿主机目录不存在,会自动创建
3. 可以挂载多个数据卷
案例:
#拉取centos镜像 docker pull centos:7 #安装启动容器并挂载 docker run -di --name=c1 -v /root/host_data1:/root/c1_data centos:7 /bin/bash |
(2)查看容器已挂载的数据卷
docker inspect 容器名称(容器ID) |
(3).1个容器挂载多个数据卷
可以通过以下命令,挂载多个数据卷
docker run -di --name=c1 -v /root/host_data1:/root/c1_data1 -v /root/host_data2:/root/c1_data2 centos:7 /bin/bash |
(4).多个容器挂载1个数据卷
多个容器挂载1个数据卷,实现数据共享
docker run -di --name=c2 -v /root/host_data_common:/root/c2_data centos:7 docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7 |
多个容器挂载1个容器(这个容器挂载1个数据卷)
##创建启动c3数据卷容器,使用 –v 参数 设置数据卷 docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7 /bin/bash ##创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷 docker run -di --name=c1 --volumes-from c3 centos:7 /bin/bash docker run -di --name=c2 --volumes-from c3 centos:7 /bin/bash |
写在最后:接下来几个系列将会讲解
Docker中安装Mysql
ElasticSearch,Kibana环境搭建
Kafka 环境搭建