关于Docker入门
目录
1.Docker简介
2.Centos7安装Docker
3.Docker HelloWorld运行原理解析
4.阿里云镜像仓库
5.Docker命令
Docker基本命令
Docker镜像常用命令
Docker 容器常用命令
1.Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了
Docker官网:Docker: Accelerated, Containerized Application Development
Docker的应用场景
Web 应用的自动化打包和发布
自动化测试和持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应用
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
Docker 的优点
简化程序、避免选择恐惧症、节省开支
Docker的架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
Docker 容器通过 Docker 镜像来创建
容器与镜像的关系类似于面向对象编程中的对象与类:
Docker 和虚拟机的区别
Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好
下图是虚拟机的体系结构:
server - 表示真实电脑。
Host OS - 真实电脑的操作系统,例如:Windows,Linux
Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
App - 虚拟机操作系统上的应用,例如nginx
下图是Docker的体系结构:
server - 表示真实电脑
Host OS - 真实电脑的操作系统,例如:Windows,Linux
Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统
App - 所有的应用程序现在都作为Docker容器运行
这种体系结构的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好
2.Centos7安装Docker
#查看内核
uname -r
#更新yum源为最新
yum update -y
#安装Docker所需要的工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#下载安装Docker
yum install docker-ce docker-ce-cli containerd.io -y -y
#启动Docker并且设置开机自启动
systemctl start docker
systemctl enable docker
#检测Docker是否安装成功
docker version
我们可以参考:Install Docker Engine on CentOS | Docker Documentation 来安装
我们切换到root用户
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum update -y
3、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6,安装最新版本的Docker
$ yum install docker-ce docker-ce-cli containerd.io -y -y
如果出现下面问题:
1、没网,试着:ping www.baidu.com
如果显示没有连接的话,就说明没网,也就无法使用yum 命令。
2、ping通了的话,还是是用不了yum命令,说明是yum镜像没有了,那么就得下载一个来更新
启动Docker并设置开机启动
systemctl start docker
systemctl enable docker
Docker HelloWorld测试:
docker run hello-world
3.Docker HelloWorld运行原理解析
运行 docker run hello-world
本地仓库未能找到该镜像,然后去远程仓库寻找以及下载该镜像
我们具体来分析下 执行原理和过程:
从左到右 client客户端,Docker运行主机,远程仓库
docker build ,pull,run分别是 构建,拉取,运行命令,后面再细讲
中间Docker主机里有 Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例,(实例是从右侧Images镜像实例化出来的)Images是存储再本地的镜像文件,比如 Redis,Tomat这些镜像文件
右侧是Registry镜像仓库,默认远程镜像仓库 Docker 不过是国外主机,下载很慢,不稳定,所以我们后面要配置成阿里云仓库镜像地址,稳定快捷
执行 docker run hello-world的过程看如下图例:
4.阿里云镜像仓库
安装mysql:
1,登录进入阿里云镜像服务中心,获取镜像地址
进入阿里云容器镜像服务地址:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
这里我们获取镜像地址
在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
3,重启daemon
systemctl daemon-reload
4,重启docker服务
systemctl restart docker
5.Docker命令
Docker基本命令
启动Docker
systemctl start docker
停止Docker
systemctl stop docker
重启Docker
systemctl restart docker
开机启动Docker
systemctl enable docker
查看Docker概要信息
docker info
查看Docker帮助文档
docker --help
查看Docker版本信息
docker version
Docker镜像常用命令
查询
docker images …
docker search …
新增
docker pull …
docker push …
删除
docker rmi …
docker rmi -f …
1,docker images 列出本机所有镜像
docker images
列出本机所有镜像
2,docker search 搜索镜像
和 https://hub.docker.com/ 这里的搜索效果一样;
OPTIONS可选参数:
–no-trunc 显示完整的镜像描述
-s 列出收藏数不小于指定值的镜像
–automated 只列出Docker Hub自动构建类型的镜像
3,docker pull 下载镜像
docker pull 镜像名称:[TAG]
注意:不加TAG,默认下载最新版本latest
4,docker rmi 删除镜像
1,删除单个:docker rmi 镜像名称:[TAG]
如果不写TAG,默认删除最新版本latest
有镜像生成的容器再运行时候,会报错,删除失败;
我们需要加 -f 强制删除
2,删除多个:docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
中间空格隔开
3,删除全部:docker rmi -f $(docker images -qa)
Docker 容器常用命令
新增
docker run
docker run -di
docker run -it
docker run --name
查询
docker ps
docker ps -a
删除
docker rm
docker rm -f
进入容器
docker exec -it tomcat1 /bin/bash