小阿轩yx-Docker 初识
Docker 概述
特性
- 轻便
- 快速
- 使应用达到快速迭代目的
- 小的变更就可以马上看到效果
- 每次变更一小部分其实是一种非常安全的方式
Docker 容器
- 能够帮助开发人员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作
- 指定一套容器标准能够使系统管理员更改容器时,程序员不用关心容器变化,隔离了开发和管理,简化了开发和部署成本
什么是 Docker
- 创建运行在云平台上的应用
- 脱离底层的硬件
- 任何时间、地点可获取这些资源
- 可以在一台主机上轻松为任何应用创建一个轻量级、可移植的、自给自足的容器
- 容器打包应用程序,简化了重新部署、调试的重复工作,极大提高工作效率
Docker 的优势
- 运行速度很快
- 启动和停止可以秒级实现,比传统虚拟机要快很多
- 基本不消耗额外的系统资源
- 保证应用性能同时减小了系统开销,使得一台主机可同时运行数千个 Docker 容器
- 操作方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署
核心解决的问题
- 利用容器来实现类似虚拟机的功能
- 从而利用更加节省的硬件资源提供给用户更多的计算资源
Docker 容器与传统虚拟机的区别
- 传统虚拟机需要额外的虚拟机管理程序和虚拟机操作系统层
- Docker 容器则是直接在操作系统层面之上实现的虚拟化
Docker 与传统虚拟机架构图
镜像
Docker 三大核心概念
- 镜像
- 容器
- 仓库
Docker 镜像
- 创建容器的基础
- 类似虚拟机的快照,可理解为一个面向 Docker 容器引擎的只读模版
- 提供了简单的机制来创建和更新现有的镜像
容器
- 从镜像创建的运行实例
- 可以被启动、停止和删除
- 创建的每个容器都是相互隔离、互不可见,以保证安全性的平台
可将容器看作是一个简易版的 Linux 环境,Docker 利用容器来运行和隔离应用
仓库
用来集中保存镜像的地方
- 公有仓库(Public)
- 私有仓库(Private)
仓库注册服务器(Registry)
- 存放仓库的地方
- 包含多个仓库
- 每个仓库集中存放某一类镜像,并且使用不同的标签(tag)区分
目前最大的公共仓库是 docker Hub,存放了数量庞大的镜像供用户下载使用
安装 Docker
支持在主流的操作系统平台上使用
- Windows 系统
- Linux 系统
- Mac 系统
默认自带 Docker 包的最新系统官方软件源有
- RHEL
- CentOS
- Ubuntu
CentOS 系统安装 Docker 有两种方式
- 使用 CURL 获得 Docker 的安装脚本
- 使用 YUM 仓库
目前 Docker 只支持 64 位系统
设置好阿里巴巴YUM仓库
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# yum clean all
关闭防火墙、内核机制并永久关闭
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/selinux
//修改配置
SELINUX=disabled
使用阿里巴巴开源镜像站
https://mirrors.aliyun.com/docker-ce/
# step 1: 安装必要的一些系统工具
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
[root@localhost ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
[root@localhost ~]# sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
[root@localhost ~]# sudo yum makecache fast
[root@localhost ~]# sudo yum -y install docker-ce
也可以将国内的镜像站改为阿里镜像加速器,Docker镜像加速地址可以在阿里上申请
https://cr.console.aliyun.com/cn-hangzhou/mirrors
进入 docker 目录
[root@localhost ~]# cd /etc/docker
优化镜像
添加配置文件
[root@localhost docker]# vim daemon.json
//添加优化配置
{
"exec-opts":["native.cgroupdriver=systemd"],
//使用代理可以访问到国外的
"registry-mirrors":["https://cf-workers-docker-io-8jv.pages.dev"],
"insecure-registries":["192.168.10.106"]
}
启动 docker 镜像并设置永久启动
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
查看 docker 版本
[root@localhost docker]# docker version
Client: Docker Engine - Community
Version: 26.1.4
API version: 1.45
......省略部分内容
Server: Docker Engine - Community
Engine:
Version: 26.1.4
API version: 1.45(minimum version 1.24)
......省略部分内容
退出到家目录并修改 conf 配置文件
[root@localhost docker]# cd
[root@localhost ~]# vim /etc/sysctl.conf
//设置支持ipv4和ipv6网络
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
让策略立即生效同时检查语句是否有错
[root@localhost ~]# sysctl -p
Docker 镜像操作
搜索镜像
[root@localhost ~]# docker search lamp
获取镜像
可以选择星级较高的镜像
[root@localhost ~]# docker pull mattrayner/lamp
查看镜像信息
[root@localhost ~]# docker images
修改镜像标签(老名字+新名字)
[root@localhost ~]# docker tag mattrayner/lamp lamp:lamp
修改标签时可以只设置新的镜像名称,不要标签TAG,此时的标签会使用默认的latest当做标签名
再次查看镜像信息
[root@localhost ~]# docker images
上传镜像
[root@localhost ~]# docker tag mattrayner/lamp XiaoAXuanyx-CSDN/lamp:lamp
[root@localhost ~]# docker login
输入账号密码后即可登录成功
[root@localhost ~]# docker push XiaoAXuanyx-CSDN/lamp:lamp
[root@localhost ~]# docker search XiaoAXuanyx-CSDN
注册 Docker 账号,登录网址
删除镜像
用镜像名删除
[root@localhost ~]# docker rmi lamp:lamp
如果标签名为latest,删除时只用镜像名即刻
用 ID 删除
[root@localhost ~]# docker rmi c15
用ID删除时,不能有同ID的镜像,比如修改镜像标签而生成的新的镜像,该镜像的ID和原始镜像是相同的,此时不能用ID删除
保存镜像
[root@localhost ~]# docker save -o lamp mattrayner/lamp
载入镜像
[root@localhost ~]# docker load < lamp
Docker 容器操作
创建容器
[root@localhost ~]# docker create -it mattrayner/lamp
- -i:让容器的输入保持打开状态
- -t:让 Docker 分配一个伪终端
- -d:以守护进程得到方式运行该容器
此命令只是把容器创建了出来,并没有运行
查看容器状态
[root@localhost ~]# docker ps -a
启动容器
[root@localhost ~]# docker start 5a
- 每个容器的名字都不一样,这里的5a是某一个容器名字
启动容器时持续启动容器
[root@localhost ~]# docker run centos:7 /usr/bin/bash -c "while true;do echo aaa;done"
或
[root@localhost ~]# docker run -dit centos:7 /bin/bash
终止容器
[root@localhost ~]# docker stop b18
进入容器
[root@localhost ~]# docker exec -it 03f /bin/bash
退出
[root@03f062851c52 /]# exit
导出容器
[root@localhost ~]# docker export 03f >centos7
导入容器生成镜像
[root@localhost ~]# docker import centos7 centos7:test
导出的容器再导入之后就成镜像了
查看状态
[root@localhost ~]# docker images
小阿轩yx-Docker 初识