docker入门基础(测试环境centos7.5)
1.容器技术的概述
1.1容器和虚拟机的区别
虚拟机技术:开销大,磁盘空间占用大,启动慢,运行在hypervisor平台上,最多几十个虚拟机,性能低于宿主机,资源利用率低=>server =>host os=>hypervisor平台=>多个guest os=>bins/libs=>app(A,B,C)
容器技术:开销小,磁盘空间占用少,启动快,直接运行在宿主机的内核上不同容器共享同一个内核,一台宿主机可以启动上千百个容器,性能无线接近宿主机性能,资源利用率高=>server =>host os=>docker平台=>bins/libs=>app(A,B,C)
1.2docker概述及历史
基于容器技术轻量级虚拟化解决方案,docker是容器引擎把linux的cgroup,namespace等容器底层技术封装抽象为用户提供创建和管理容器的便捷界面(包括命令行和api)
docker是一个开源项目,诞生于2013年初,基于google公司推出的go语言实现
微软,红帽linux,IBM,oracle等主流IT厂商在自己的产品里增加对docker的支持
相比其他早期的容器技术,docker引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的rest api
docker引擎主要是两个版本:企业版(EE)和社区版(CE),从2017年第一季度开始docker版本号遵循YY.MM-xx格式,如2018年发布第一次社区版本为 18.06.0-ce ,2017年版本号遵循大版本号,小版本号的格式,采用新格式前最后一个版本是 Docker 1.13
2.docker的安装部署
2.1linux内核版本最好是3.8版本以上 unman -a ,centos版本7.5以上
1.查看版本
cat /etc/redhat-release
2.需要禁用项
getenforce --必须禁用 disabled
systemctl stop firwalld
swap
3.查看epel源是否安装
yum install epel-release -y
4.查看yum源是否有,base源装上
curl -o /etc/yum.repos.d/Centos-base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5.epel源查看是否有相关的包
yum list docker --show-duplicates
6.安装yum工具包
yum install -y yum-utils
7.yum源配置添加docker引擎源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
8.安装
docker yum install docker-ce
2.2docker参数配置
docker启动命令
systemctl start docker
开机自启动命令
systemctl enable docker
如果没有这个目录 先创建 mkdir /etc/docker
有的话就直接配置 vi /etc/docker/deamon.json
{
"graph":"/data/docker", #docker的工作目录
"storage-driver":"overlay2", #存储驱动 早期centos7用overlay
"registry-registries":["registry.access.redhat.com","quay.io"], #私有仓库相关
"registry-mirrors":["https://q2gr04ke.mirror.aliyun.com"], #配置国内阿里镜像加速源
"bip":"192.168.10.0/24", #docker网络地址
"exec-opts":["native.cgroupdriver=systemd"], #启动时指定命令
"live-restore":true #容器引擎死了,用docker起来的容器还活着就需设置true
}
2.3故障排查
ps aux|grep docker #查询docker
systemctl start docker #启动docker 如果启动失败尝试
systemctl reset-failed docker.service
systemctl start docker.service
#查看状态
systemctl status docker
查看docker是否安装正常
docker info 或者docker version
2.4启动第一个容器(典型的CS架构)
docker run hello-world
1.先查本地是否存在名为hello-world的镜像
2.在服务端远程下载hello-world镜像
3.运行出来的内容在terminal里
2.5核心模块概念 本地–镜像->实例化–>容器-提交–>镜像《======》远端仓库
镜像结构
例如:docker.io/library/alpine:3.10.1
<registry_name>/<repository_name>/<image_name>:<tag_name>
3.docker的镜像管理
3.1docker客户端登录dockerhub.com
docker login docker.io#输入帐号密码会提示登录成功
登录成功后登录认证信息保存位置 cat /root/.docker/config.json
auth的value为base64编码对应登录认证信息
echo -base64编码字段-|base64 -d #可使用echo解码base64命令,输出用户名和密码
3.2镜像操作常用命令
dockerhub.com登录成功后
搜索
docker search alpine
下载 docker pull alpine 或者下载指定版本 docker pull alpine:3.10.3 指定用户仓库拉取 docker pull $user/alpine:3.10.3
查看本地镜像命令
docker images/docker image ls
给镜像打标签(TAG)命令(同一个镜像ID可打多个标签)<imageID>和<image_name>使用 docker images查看,user你登录的用户名 ,<tag_name> 可使用时间戳或者版本号
docker tag <imageID> docker.io/<user>/<image_name>:<tag_name>
推送到仓库
docker push docker.io/<user>/<image_name>:<tag_name>
删除镜像标签(镜像并没有真正删除)
docker rmi docker.io/<user>/<image_name>:<tag_name>
批量删除已退出的容器
for i in `docker ps -a|grep -i exit|awk '{print $1}'`;do docker rm $i;done