一.Docker概述
因为Docker轻便,快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度在变更。
二.什么是Docker
如果要方便的创建运行云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是Docker所能提供的。Docker的容器急速可以在一台主机上轻松为任何应用创建一个轻量级的,可移植的,自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署,调试这些杂碎的重要工作,极大的提高了工作效率。
1.Docker与传统虚拟机的区别
|-----------|--------|---------|
| 特性 | Docker | 虚拟机 |
| 启动速度 | 秒级 | 分钟级 |
| 计算能力损耗 | 几乎没有 | 损耗50%左右 |
| 性能 | 接近原生 | 弱于 |
| 系统支持量(单击) | 上千个 | 几十个 |
| 隔离性 | 资源限制 | 完全隔离 |
2.Docker与传统虚拟机架构
三.Docker的三大核心概念
1.镜像:是Docker创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模版。
例如:一个镜像可以是一个完整的CentOS操作系统,称为一个CentOS镜像;也可以是一个安装MySQl的应用程序,称之为一个MySQL镜像。
2.容器:从镜像创建的运行实例,它可以被启动,停止和删除。所创建的每一个容器都是相互隔离,互不可见,以保证安全性的平台。可以将容器看作是一个简易版的linux环境,Docker利用容器来运行和隔离应用。
3.仓库:集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它们上传到公有长裤(public)或者私有仓库(private)。当下次在另外一台机器上使用这个镜像时,只需从仓库中获取。
四.CentOS系统下Docker的安装
首先加载阿里的yum仓库
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
1.docker安装,阿里镜像站中有详细操作,直接复制即可,链接为:docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)
添加国内的镜像站
vim /etc/docker/deamon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://cf-workers-docker-io-8jv.pages.dev"],
"insecure-registries": ["192.168.10.106"]
}
修改内核参数配置文件sysctl.conf
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
systemcal restart docker
到这里docker容器就真正意义的安装完成。
五.Docker镜像操作
1.查看docker版本和服务 docker version
搜索镜像docker search 镜像名
其中返回的信息包括名称(name),描述(DESCRIPTION),星级(STARS),是否官方创建(OFFICIA),是否主动创建(AUTOMATED)。默认输出结果会按照星级评价进行排序,
拉取镜像docker pull 镜像名:【标签】(如果下载时不指定标签,默认下载最新版本的镜像,即标签为latest标签,可以通过指定标签的形式下载指定版本镜像。)
2.查看镜像信息
- REPOSITORY:镜像属于的仓库;
- TAG:镜像的标签信息,标记同一个仓库中的不同镜像
- IMAGE ID:镜像的唯一ID号,唯一表示一个镜像
- CREATED:镜像创建时间
- VIRTUAL SIZE:镜像大小
3.用户可以根据镜像的唯一ID号获取镜像的详细信息
docker inspect 镜像ID号
-
为本地镜像添加新的标签
docker tag 名称 新名称:[新标签]
5.删除镜像
docker rmi 仓库名:tag标签
或
docker rmi 镜像编号
当一个镜像有多个标签时,docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响整个镜像。
6.存出镜像
将一台机器的镜像迁移到另外一台机器上,需要将镜像保存成为本地文件,这个过程叫做存出镜像,可以使用docker save命令进行存出操作,之后就可以拷贝该文件到其他机器。
docker save -o 存储文件名 存储的镜像
7.载入镜像,将存出的镜像文件重机器A拷贝到机器B,就可以使用docker load或者docker --input进行载入操作。
docker load < 存出的文件
或
docker load -i 存出的文件
8.上传镜像
将本地镜像上传到一个专门存放这些镜像的地方------仓库,目前比较方便的的公共仓库,默认为docker Hub官方仓库,需要注册公共仓库的账号。可以使用docker login命令来输入用户用名,密码和邮箱来完成注册和登录,再上传之前还需要先对本地镜像添加新的标签,然后在使用docker命令进行上传。
docker push 仓库名称:标签
六.容器操作
1.Docker容器创建
docker create 【选项】镜像
选项:
-i:让容器的输入保持打开
-t:让Docker分配一个伪终端
-d:以守护进程的方式运行该容器
2.Docker 容器启动
docker start 容器ID/名称
此命令只是把容器创建了出来,并没有运行
3.查看容器信息
[root@localhost ~]# docker ps -a
4.容器的运行
[root@localhost ~]# docker start 5a
启动容器后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。如果用户想创建并启动容器,可以直接执行docker run命令,等同于先执行docker create命令,再执行docker start命令。
注意:容器是一个与其中运行的shell命令共存亡的终端,命令运行容器运行,命令结束容器退出。
5.在创建容器时直接启动容器
当利用dockerrun来创建容器时,Docker在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载
(2)利用镜像创建并启动一个容器:
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中:
(5)分配一个地址池中的IP地址给容器:
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。
[root@localhost ~]# docker run centos:7 /usr/bin/bash -c "ls /root"
注意:此命令只是用该容器执行了一下ls命令,随后此容器就关闭了
6.在启动容器时持续在后台运行
[root@localhost ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
或
[root@localhost ~]# docker run -dit centos:7 /bin/bash
7.容器的终止
[root@localhost ~]# docker stop b18(容器名或容器ID)
8.进入容器
[root@localhost ~]# docker exec -it 03f(容器名或容器ID) /bin/bash
退出
[root@03f062851c52 /]# exit
9.容器导出
[root@localhost ~]# docker export 03f(容器名或容器ID) >centos7(文件名)
10.容器导入生成镜像
[root@localhost ~]# docker import centos7(被导出的容器名) centos7:test(生成的镜像名称:标签)
[root@localhost ~]# docker images
11.容器删除
[root@localhost ~]# docker rm 7f
删除所有容器
docker rm -f $(docker ps -a | awk '{print $1}')