文章目录
一、相关概念
1.1 什么是Docker
菜鸟教程: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
百度百科:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
个人理解:从Docker 图标中我们就可以发现,鲸鱼上面有很多集装箱。集装箱之间相互隔离,开发者可以讲一个应用的所有东西都打包进集装箱中,从而保证程序的完整性和可移植性。是一个容器虚拟化技术。
1.2 Docker解决的问题
以前的痛点: 开发环境的配置和测试等环境中配置进行工作时会存在环境不一致的问题,开发能跑,测试或运维程序跑不起来。系统需要扩容时各种配置问题,除开发外跑程序的环境安装麻烦,换一台机器就要重新安装依次等。
Docker解决的问题: 提出了标准化系统平移技术,容器化虚拟技术。将代码环境配置等版本打包成镜像文件复制过来,从而保证了环境一致。
1.3 Docker和虚拟机的区别
简单理解: docker等同于VMware,gmall.镜像文件 等同于虚拟机iso镜像文件。
传统虚拟机: 基于安装在主操作系统上的虚拟机管理系统,再从操作系统中安装部署各种应用。缺点:资源占用大,速度慢,复杂度高。
Docker容器: 不是模拟一个完整的操作系统,而是对进程进行了隔离,不同于虚拟机去需要捆绑一整套操作系统,利用linux内核进行支撑,容器中没有自己的内核且没有进行硬件虚拟。
1.4 Docker的优点
- 简化运维
- 一次镜像,多处运行。
- 跨平台,跨服务器。
- 更快速的应用交付和部署
- 更便捷的升级和扩容缩
- 高效率的计算资源利用
1.5 Docker 相关概念
- 镜像(image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。类似于Java中类模板。镜像名称一般分两部分组成:[repository]:[tag]。在没有指定tag时,默认是latest,代表最新版本的镜像
- 容器(container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。类似于Java中通过类模板形成的实例对象。/ 类似于简易版的linux环境。
- 仓库(repository):存放镜像的地方。(分为公库和私库)。
- 数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
- DockerHub:DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。
- Docker架构:Docker是一个CS架构程序,由两部分组成:
- 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等。
- 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。
二、Docker的安装
官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。
2.1 前提条件
Docker支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
-
查看当前系统内核版本
uname -r
-
查看操作系统版本
cat /etc/redhat-release
2.2 安装
-
如果之前安装过旧版本的Docker,可以使用下面命令卸载
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce
-
安装yum工具设置镜像源
安装工具:
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken
设置镜像源:
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
查看仓库中所有Docker版本
yum list docker-ce --showduplicates | sort -r
-
安装Docker(用一个命令即可)
# 直接安装 yum install docker-ce # 可视化安装 指定版本 yum install -y docker-ce 18.06.0.ce-3.el7 # yum install docker-ce docker-ce-cli containerd.io
-
启动并加入开机启动
systemctl start docker
systemctl enable docker
-
验证是否安装成功
docker version
出现如下图内容则表示Docker安装启动都成功了
三、Docker卸载
3.1 准备工作
-
杀死Docker有关的容器
docker kill $(docker ps -a -q)
-
删除所有Docker容器
docker rm $(docker ps -a -q)
-
删除所有Docker镜像
docker rmi $(docker images -q)
-
停止Docker服务
systemctl stop docker
-
删除相关存储目录
# 依次执行 rm -rf /etc/docker rm -rf /run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/docker # 删不掉时先输入下面解挂载命令再输入上方命令 umount /var/lib/docker/devicemapper
3.2 卸载
-
查看系统已安装的Docker文件
yum list installed | grep docker
-
卸载已安装文件
yum remove 文件名
-
检查是否卸载成功
docker -v
出现如下内容卸载成功
四、Docker常用命令
Docker基本命令
1.启动Docker
systemctl start docker
2.查看状态
systemctl status docker
3.查看版本
docker -v
Docker镜像操作
- docker --help 查看命令帮助文档
- docker search 搜索镜像
- docker build 构建镜像–》从Dockerfile文件中构建镜像到本地
- docker pull 从服务拉取镜像
- docker images 查看镜像
- docker rmi 删除镜像
- docker push 推送镜像到服务
- docker save 保存镜像为一个压缩包
- docker load 加载压缩包为镜像
Docker容器命令
- docker run 创建容器并运行
- docker pause 暂停运行
- docker unpause 恢复运行
- docker stop 停止容器
- docker start 运行容器
- docker logs 查看容器运行日志(-f 持续查看日志)
- docker ps 查看所有运行的容器及状态
- docker exec 进入容器执行命令
- docker rm 删除指定容器
- set -i -e 修改文件中的内容
- exit 退出容器
Docker数据卷
基本语法:docker volume [COMMAND]
- create 创建一个volume
- inspect 显示一个或多个volume信息
- ls 列出所有的数据卷
- prune 移除所有本地未使用的数据卷
- rm 删除指定的数据卷
- 挂载数据卷
常见参数
docker run命令的常见参数:
- –name:指定容器名称
- -p:指定端口映射
- -d:让容器后台运行
查看容器日志命令的常见参数:
- 添加 -f 参数可以持续查看日志
容器状态:
- 添加-a参数查看所有状态的容器
删除容器:
- 不能删除运行中的容器,除非添加 -f 参数