【Docker】
Dock概述
常用地址
文档地址:https://docs.docker.com/ 炒鸡详细!!
仓库地址:https://hub.docker.com/ 类似于Github
为什么会出现Docker
一款产品要经过开发、测试、上线等过程,在不同的阶段可能会使用不同的环境、不同的应用配置。
故经常会有人发出这样的疑问:我这电脑上运行都整挺好的,怎么到你这就拉跨了呢?!
这就关系到环境配置问题了,环境配置十分麻烦,得一个机器一个机器配置、部署,费时费力。
一般一个项目成型后要打成一个 jar包 ,环境得自己配,这时候docker就出现了
docker 把 [ jar包、Redis、Mysql、jdk、ES、……] (项目 + 环境)打包在一起,就可以解决这样的问题了。
docker核心思想:隔离!
docker通过隔离机制,可以将服务器利用到极致!
Docker能干嘛
传统的虚拟机技术
传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
缺点:
- 资源占用十分多
- 冗余步骤多
- 启动慢
容器化技术
容器化技术不是模拟的一个完整的操作系统
容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
容器间相互隔离,每个容器内有自己的文件系统,互不影响!
DevOps(开发、运维)
应用更快的交付和部署
传统:开发写好一堆帮助文档交给运维,运维根据帮助文档安装程序测试运行
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
更简单的系统运维
在容器化后,开发、测试环境都是高度一致的
更高效的计算机资源利用
Docker 是内核级别的虚拟化,可以在一个物理机上运行很多容器实例!服务器性能可以压缩至极致。
Docker安装
Docker的基本组成
镜像(image)
Docker 镜像就好比是一个模板,可以通过这个模板创建容器服务
容器(container)
Docker 利用容器技术,独立运行一个或一组应用,通过镜像来创建
基本命令:启动、停止、删除……
可以简单理解为一个简易的 Linux 系统
仓库(repository)
存放镜像的地方
分为公有仓库和私有仓库
安装Docker
环境准备
Docker需要搭建到 Linux 系统上
我们这里用自己购买的阿里云服务器上的 CentOS 7 系统,使用Xshell进行远程连接
没有的也可以用 Vmware 代替~
环境查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Welcome to Alibaba Cloud Elastic Compute Service !
系统内核是 3.10 以上的
[admin@iZuf6iwj4bpbjtsf1yoaqlZ ~]$ uname -r
3.10.0-514.26.2.el7.x86_64
系统版本
[admin@iZuf6iwj4bpbjtsf1yoaqlZ ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"正式安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
351.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.需要的安装包
yum install -y yum-utils
3.设置镜像仓库
国外的仓库,下载缓慢,不推荐
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
3.5.更新yum软件包索引
yum makecache fast
4.安装 docker 相关的内容 docker-ce:社区版 docker-ee:企业版
yum install docker-ce docker-ce-cli containerd.io
5.启动docker
systemctl start docker
6.查看docker是否安装成功
docker version
测试
运行hello-world
docker run hello-world
查看下载的镜像
docker images
梳理流程
卸载Docker
1 | 1.卸载依赖 |
阿里云镜像加速
登录阿里云,找到容器镜像服务
找到镜像加速地址
配置使用
1
2
3
4
5
6
7
8
9
10sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ljk3xy6r.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
底层原理
1. Docker时怎么工作的?
Docker 是一个 Client-Server 结构的系统,Docker 的守护进程运行在主机上,通过 Socket 从客户端访问
Docker-Server 收到 Docker-Client 的指令,就会执行这个命令!
2. Docker 为什么比 VM 快?
Docker 有比虚拟机更少的抽象层
Docker 利用的是宿主机的内核,VM 需要的是Guest OS
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载 Guest OS,分钟级别的,而daocker 利用宿主机的操作系统,省略了这个复杂的过程,是秒级别的!
Docker常用命令
帮助命令
1 | docker version # 显示docker的版本信息 |
帮助文档的地址:https://docs.docker.com/reference/
镜像命令
docker images
1 | 列举镜像 |
docker search
1 | 搜索镜像 |
docker pull
1 | 下载镜像 |
docker rmi
1 | 删除镜像 |
容器命令
说明:我们有了镜像才可以创建容器,先要下载一个 CentOS 镜像来学习
1 | docker pull centos |
新建容器并启动
1 | docker run [可选参数] image |
列出正在运行的容器
1 | 列出容器 |
退出容器
1 | 容器之间停止并退出 |
删除容器
1 | 指定id删除容器,不能删除正在运行的容器,如果要强制删除,用 -f 参数 |
启动和停止容器的操作
1 | 启动容器 |
常用其他命令
后台启动容器
1 | docker run -d 镜像名 |
查看日志
1 | docker logs -tf --tail 行数 容器id |
查看容器中的进程信息
1 | docker top 容器id |
查看镜像元数据
1 | docker inspect 容器id |
进入当前正在运行的容器
1 | 我们通常容器都是后台方式运行的,有时需要进入容器修改一些配置 |
从容器内拷贝文件到主机上
1 | docker cp 容器id:容器内路径 目的的主机路径 |