这里写自定义目录标题
Docker简介
什么是Docker?
当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker
守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
- docker是一个软件,可以运行在window、linux、mac等各种操作系统上。
- docker 是一个开源的应用容器引擎,基于Go 语言开发并遵从 Apache2.0 协议开源,项目代码托
管在github上进行维护 - docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任
何流行的 Linux 机器上。 - 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker基本组成
- docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
- docker仓库(Registry):用来保存各种打包好的软件镜像;仓库分为公有仓库和私有仓库。(很类似
maven) - docker镜像(Images):软件打包好的镜像;放在docker仓库中;
- docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
Docker与操作系统比较
docker是一种轻量级的虚拟化方式。与传统操作系统技术的特性比较如下表:
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
传统的虚拟机方式提供的是相对封闭的隔离。Docker利用Linux系统上的多种防护技术实现了严格的隔
离可靠性,并且可以整合众多安全工具。从 1.3.0版本开始,docker重点改善了容器的安全控制和镜像
的安全机制, 极大提高了使用docker的安全性。
Docker版本
docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业
版),本教程使用社区版(CE)。
Docker的优点
一款产品: 开发–上线 两套环境!应用环境,应用配置!开发 — 运维。 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验十分大!!! 环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…) !费事费力。发布一个项目( jar + (Redis MySQL JDK ES) ),项目能不能带上环境安装打包!之前在服务器配置一个应用的环境 Redis MySQL JDK ES Hadoop 配置超麻烦
了,而且不能够跨平台。
-
开发环境Windows,最后发布到Linux!
传统:开发jar,运维来做!
现在:开发打包部署上线,一套流程做完! -
应用更快速的交付和部署
传统:帮助文档,安装程序。
Docker:打包镜像发布测试一键运行。 -
更便捷的升级和扩缩容
使用了 Docker之后,我们部署应用就和搭积木一样
项目打包为一个镜像,扩展服务器A!服务器B -
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的 -
更高效的计算资源利用
Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致
Docker安装
Docker官网
docker官网地址:
https://www.docker.com
docker官方文档地址:
https://docs.docker.com/
阿里云开发者平台官网地址:
(可以参考阿里云官网提供的docker安装教程进行安装)
https://developer.aliyun.com/article/110806
安装的硬件要求
当我们安装 Docker 的时候,会涉及两个主要组件:
- Docker CLI:客户端
- Docker daemon:有时也被称为“服务端”或者“引擎”
docker硬件安装最好能够满足一下条件:
序号 | 硬件 | 要求 |
---|---|---|
1 | CPU | 推荐2核以上 |
2 | 内存 | 至少2G |
3 | 硬盘 | 至少50G |
4 | 系统 | docker及K8S集群推荐各位小伙伴使用centos7.8版本 |
centos虚拟机的系统配置
- 查看centos系统版本命令:
cat /etc/centos-release
- 配置阿里云yum源
#下载安装wget
yum install -y wget
#备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup
#设置新的yum目录
mkdir -p /etc/yum.repos.d
#下载阿里yum配置到该目录中,选择对应版本
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#更新epel源为阿里云epel源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#重建缓存
yum clean all
yum makecache
#看一下yum仓库有多少包
yum repolist
- 升级系统内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
grep initrd16 /boot/grub2/grub.cfg
grub2-set-default 0
reboot
- 查看系统内核命令
uname -r
uname -a
- 查看CPU命令
lscpu
- 查看内存命令
free
free -h
- 查看硬盘信息
fdisk -l
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
- 网桥过滤
vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0
#生效命令
sysctl --system
- 开启命令补全
#安装bash-completion
yum -y install bash-completion bash-completion-extras
#使用bash-completion
source /etc/profile.d/bash_completion.sh
- 上传文件功能
yum -y install lrzsz
#1.鼠标拖拽上传文件
#2.下载文件
#2.1下载一个文件
sz filename
#2.2下载多个文件
sz filename1 filename2
#2.3下载dir目录下所有文件,不包含dir下的文件夹
sz dir/*
Docker的安装
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
注意:其他注意事项在下面的注释中
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]
# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
# 经典网络:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC网络:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
安装阿里云镜像加速器
镜像加速器能加快我们对docker镜像的下载速度,安装与否凭各位心情
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker命令
docker命令分类
本章节记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,根据docker官网案例。
docker官网地址:https://docs.docker.com/engine/reference/run/
总的来说,分为一下几种:
#docker环境信息
docker -v
docker info
docker version
#容器生命周期管理
docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
#容器操作管理
docker [ps|inspect|top|attach|wait|export|port|rename|stat]
#容器rootfs命令
docker [commit|cp|diff]
#镜像仓库
docker [login|pull|push|search]
#本地镜像管理
docker [build|images|rmi|tag|save|import|load]
#容器资源管理
docker [volume|network]
#系统日志信息
docker [events|history|logs]
从docker命令出发,梳理出如下结构图: