目录
一.初识Docker
1.1 为什么使用Docker
(1)Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
1.Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
2.Docker应用运行在容器中,使用沙箱机制,相互隔离
(1)Docker如何解决开发、测试、生产环境有差异的问题
1.Docker镜像中包含完整运行环境、包括系统函数库,仅以依赖系统的Linux内核,因 此可以在任意Linux操作系统上运行。
小结:
Docker是一个快速交付应用、运行应用的技术,具备下列优势:
可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
运行时利用沙箱机制形成隔离容器,各个应用互不干扰
启动、移除都可以通过一行命令完成,方便快捷
1.2 Docker和虚拟机的差异
docker是一个系统进程;虚拟机是在操作系统中的操作系统
docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
1.2 Docker架构
镜像:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。
容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见 。就是将镜像文件中编写的程序、函数加载到内存中,形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。
DockerHub:DockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry。类似Gitee的作用。
Docker是一个CS架构的程序,由两部分组成:
服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。
1.3 安装Docker
(1)如果之前安装旧版本Docker,卸载旧版本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
(2)安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
(3)更新本地就像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
(4)安装Docker
yum install -y docker-ce
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
# 关闭 systemctl stop firewalld # 禁止开机启动防火墙 systemctl disable firewalld
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
(5)配置镜像加速器
sudo mkdir -p /etc/docker #创建文件夹
sudo tee /etc/docker/daemon.json <<-'EOF' #新建daemon.json并且在文件中输入以下内容
{
"registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload #重新加载文件
sudo systemctl restart docker #重启Docker
二.Docker命令
命令总纲:
docker --help
2.1 Docker镜像
命名规范:
镜像名分为两部分:[repository(镜像名)]:[tag(镜像版本)]
docker build | 构建镜像 |
docker images | 查看镜像 |
docker rmi | 删除镜像 |
docker push | 把镜像推送到服务器 |
docker pull | 从服务器拉取镜像 |
docker save | 把镜像保存为压缩包 |
docker load | 加载压缩包为镜像 |
2.2 Docker容器
docker ps | 查看所有运行容器及状态 |
docker logs | 查看容器日志 |
docker exec | 进入容器执行命令 |
docker run | 使用镜像生成容器 |
docker pause | 暂停运行的容器 |
docker unpause | 恢复暂停运行的容器 |
docker stop | 停止容器 |
docker start | 运行容器 |
docker rm | 删除指定容器 |
2.3 Docker数据卷
数据卷:一个虚拟目录,指向宿主机文件系统中的某个目录。
注:数据卷和容器关系类似java与MySQL。
docker volume create | 创建一个数据卷 |
docker volume inspect | 显示一个或多个数据卷信息 |
docker volume ls | 列出所有数据卷 |
docker volume prune | 删除未使用的数据卷 |
docker volume rm | 删除一个或多个指定的数据卷 |
三.自定义镜像
指令 | 说明 |
---|---|
FROM | 指定基础镜像 |
EVN | 设置环境变量,可在后面指令使用 |
COPY | 拷贝本地文件到镜像指定目录 |
RUN | 执行Linux的shell命令,一般是安装过程的命令 |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 |
1.dockerfile的本质是一个文件,通过指令描述镜像的构建过程
2.dockerfile的第一行必须是FROM,从一个基础镜像来构建
3.基础镜像可以是操作系统。如:Contos。也可以是其他制作好的镜像,如:java:8-apline
四.DockerCompose集群部署
DockerCompose可以基于Compose文件帮助快速的部署分布式应用
Compose文件是一个文本文件,通过指令定义集群中每个容器如何运行(docker run指令转化)