Docker安装
中国加油,武汉加油!
篇幅较长,配合目录观看
案例准备
- 一台Centos7的服务器或虚拟机
1. 什么是Docker
- Docker时Docker.Lnc公司开源的一个基于LXC(Linux Container容器是一种内核虚拟化技术)技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
- Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。
- 总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样
2. Docker术语
- 镜像(Image):只读模板,Docker 镜像是用于创建 Docker 容器的模板。
- 容器(Container):实例化的镜像,在只读层上增加了一层可写层,容器可以启动,停止, 删除和修改每个容器都是相互隔离的
- 仓库(Repository):集中存放镜像的地方,仓库分为公开仓库(Public)和私有仓库(Private) 两种形式世界上最大的公开仓库是Docker Hub,国内的公开仓库Docker Pool等。
3. 安装Docker
3.1 配置安装环境
yum install -y yum-utils device-mapper-persistent-data lvm2
3.2 安装docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.3 安装docker
yum -y install docker-ce
3.4 启动docker服务
systemctl start docker
3.5 配置镜像加速
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://prw94zmt.mirror.aliyuncs.com"]
}
systemctl restart docker
4. Docker的命令
命令 | 含义 | 备注 |
---|---|---|
docker --help | 万能的命令 | docker xx --help |
docker search hello-world | 去dockerhub查找镜像 | |
docker pull hello-world | 去dockerhub拉去镜像 | 不给版本默认拉取最新版 |
docker images | 查看所有镜像 | -q |
docker rmi hello-world | 删除镜像 | 可以名字或者id |
docker run hello-world | 运行容器 | –name xxx -d 后台运行 -i 交互运行 -t 伪终端操作 -p 宿主机和容器端口映射 8080:8080 -e 设置环境变量 |
docker -ps | 查看运行的容器 | -a 包含历史 -l 最近 -q 容器标识 |
docker stop xxx | 中止指定容器 | 名字/id ctrl+pq |
docker start xxx | 启动指定容器 | 名字/id |
docker kill xxx | 强制停止容器 | 名字/id |
docker rm xxx | 删除指定容器 | 名字/id -f 删除启动状态下 |
docker attach xxx | 进入指定容器 | 名字/id 如果是非交互式的容器会卡死 |
docker exec xxx [/bin/bash\ls] | 命令行模式运行容器 | |
docker inspect xxx | 查看容器详细信息 |
5. Docker容器卷
语法如下:
docker run -it --name mycentos -v /usr/local/mycentos1:/usr/local/mycentos2 centos
左边是宿主机地址,右边是容器地址,如果地址不存在容器会自动创建。
5.1 容器卷是什么
数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的,数据卷存在于宿主机的文件系统中,数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。
5.2 容器卷特点
- 容器卷可以在容器之间共享或者重用数据
- 容器卷中的更改可以直接生效
- 容器卷中的更改不会包含在镜像的更新中
- 容器卷的生命周期一直持续到没有容器使用它为止
- 一般都在创建容器的时候映射容器卷
6. 为什么要使用Docker
6.1 虚拟机的缺点:
- 资源占用多:虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1M,虚拟机依然需要几百MB的内容才能运行。
- 启动慢:启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。
6.2 Docker在一定程度上是Linux容器的增强版
- 启动快,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。
- 资源占用少,容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。
- 体积小,容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。
- 总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。
7. 虚拟机和容器的区别
7.1 虚拟机
- 完整的操作系统
- 占用资源大
- 拥有独立的内核
7.2 容器
- 轻量级
- 运行速度快
- 占用资源少
- 每个容器针对于宿主机而言是一个进程
- 占用的资源都是宿主机的