Docker容器
一、什么是Docker?
官方介绍,Docker是一个开源的应用容器引擎,基于Go语音遵循Apache2.0开源协议。这句话的后半句不管,跟入门码农没有太大关系。主要是前面那句“Docker是一个开源的应用容器引擎”,什么是应用容器引擎?都知道引擎是一个发动机的核心,比如汽车引擎一般之汽车发动机,是让一个汽车能跑起来的核心技术所在。应用容器引擎就是让应用容器跑起来的一个“发动机”,这个“发动机“就是docker技术。那么应用容器又是什么呢?简单理解应用容器就是一个安装软件(应用)的环境(容器)。比如windows能安装软件,可以说windows是一个应用容器。但是docker不是一个操作系统,docker是基于操作系统之上的环境虚拟技术。比如:docker可以虚拟一个操作系统,完全独立和隔离于物理机的操作系统。类似虚拟机技术,但是比虚拟机轻量和便捷。看到这里,如果还不太明白docker是干什么的,可以先简单理解为docker是一个小型轻量的虚拟机。
二、为什么使用Docker?
微服务架构中,一个服务器上只能部署一台数据库,如果想部署多台数据库,只能再买一台服务器,这样太费钱。
1、高效充分利用硬件资源。
2、一致的开发环境,减少环境不同造成的额外维护成本。
3、快速继承部署,高效复用。
三、Docker的组成
1、镜像仓库
2、镜像
3、容器
三者的关系图如下:
四、Docker的基本操作
1. 安装Docker.
1.1 安装Docker需要的依赖.
# (Linux,网)
# 安装需要的依赖.
yum -y install yum-utils device-mapper-persistent-data lvm2
1.2 设置一个Docker的镜像源并安装.
# (安装的速度更快)
# 如果上面依赖安装失败,重试一下.
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 开始安装Docker
yum makecache fast
yum -y install docker-ce
1.3 启动docker并测试.
# 启动docker
systemctl start docker
# 开机自动启动docker
systemctl enable docker
# 测试docker
docker run hello-world (hello-world是docker提供的测试镜像)
2. 镜像的操作.
2.1 如何拉取镜像.
# 拉取镜像到本地.
docker pull 镜像[:tag]
# 拉取tomcat镜像到本地.
docker pull daocloud.io/library/tomcat:8.5.15-jre8
2.2 操作本地的镜像.
# 查看全部的镜像.
docker images
# 删除本地镜像.
docker rmi 镜像id
2.3 镜像的导入导出.
# 将本地的镜像导出成一个文件.
docker save -o 导出的路径 镜像id
# 镜像的导入.
docker load -i 文件
# 不推荐使用,但是可以实现docker镜像的迁移.
3. 操作Docker容器.
3.1 运行容器.
# 直接运行容器. (docker run hello-world -> 在镜像不存在时,会自动下载,并且下载最新的版本)
docker run 镜像的id|镜像名称[:tag]
# 后台运行容器.
docker run -d 镜像的id|镜像名称[:tag]
# 完整运行容器命令
docker run -d -p 宿主机端口:容器端口 -v 数据卷:容器路径 -e 环境名称=值 --name 容器名称 镜像id
3.2 查看容器.
# 查看正在运行的容器.
docker ps
# 查看全部的容器.
docker ps -a
# 查看容器运行时的日志
docker logs -f 容器id
# 进入到容器内部的shell.
docker exec -it 容器id bash # 如果想退出 exit
3.3 停止容器
# 停止正在运行的容器
docker stop 容器的id
# 运行容器.
docker start 容器id
# 删除容器
docker rm 容器id
# 启动|停止|删除全部容器.
docker start|stop|rm $(docker ps -qa)