目的
学会Docker开发流程
配置好大数据的Docker镜像。 Hadoop Spark ES Kafka Flume等。
Docker教程
Docker概述
Docker命令
Docker镜像
容器数据卷
DockerFile
Docker网络原理
IDEA整合Docker
Docker Compose
Docker Swarm
Docker概述
Docker为什么会出现
环境配置十分麻烦,每一个机器都要部署环境(比如集群Redis、ES、Hadoop...),费时费力。
发布一个项目,传统上都是生成jar包,然后在服务器部署好Redis、MySQL、jdk、ES等需要的环境,然后将jar部署到服务器。项目不能带依赖的环境一块安装打包。
之前在服务器配置一个应用的环境Redis、MySQL、jdk、ES等,配置很麻烦,而且不能够跨平台。
传统上开发者开发jar,环境部署运维来做;有了docker以后,开发、打包、部署上线一整套流程只需要开发者来做即可。
自结:程序和他依赖的环境同时打包。 这样就不在需要配置环境。
Docker核心思想来自于集装箱,多个箱子互相隔离。比如多个程序,可能会发生端口冲突,隔离以后就不会。
隔离是Docker核心思想。
Docker通过隔离机制,可以将服务器利用到极致,充分利用硬件资源。
Docker开发流程(以java为例)
java程序开发+依赖的环境 ---> 打包项目生成镜像 --->Docker仓库--->需要的服务器下载镜像--->直接运行即可
比如redis集群、mysql集群,可以一键安装,因为仓库已经有配置好环境的镜像可使用。
Docker的历史
2010年,几个搞IT年轻人,在美国成立了一家公司,研究pass云计算服务 、LXC有关的容器技术,并且将这种容器化技术命名为Docker。
2013年开源,开始火了。
2014年,Docker1.0版本发布。
Docker为什么火?十分轻巧。
在容器化技术之前,我们使用虚拟机技术模拟linux系统。
虚拟机:在windows装VMware等虚拟机软件,通过这个软件模拟出1个或多个完整的系统,很笨重,占硬件资源;但是容器化技术,不占用多余硬件资源,十分轻巧。
虚拟机和docker都是一种虚拟化技术。
vm:centos原生镜像,如果要隔离,需要开启多个虚拟机。 大小需要几个G,启动需要几分钟。
docker:镜像只包括centos最核心的环境(比如命令行也就4M) ,需要jdk就加上jdk,需要mysql就加上mysql,十分小巧。大小也就几M,秒级启动。
Docker安装
本文基于如下环境 centos版本3.10.0以上
Mac安装 MacOS Docker 安装 | 菜鸟教程
Centos7安装步骤(同官网)
官网 Install Docker Engine on CentOS | Docker Documentation
1.卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2.安装提供 yum-config-manager功能的yum-utils包,同时指定下载速度快的镜像仓库地址。
sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
不要配置官网镜像,国外的镜像太慢,推荐配置阿里云镜像:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
配置阿里云镜像加速器
(1)注册登录 阿里云,进入控制台
(2)选择容器服务。弹性计算--容器镜像服务--镜像加速器
(3)根据系统版本配置加速器
1.安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce 2. 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://uoj1bjd7.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
3.更新yum软件包
yum makecache fast
4.安装docker相关文件。 ce 社区版 ee 企业版
sudo yum install docker-ce docker-ce-cli containerd.io
5.测试docker安装成功
docker version
6.启用 Docker.
sudo systemctl start docker
7..通过运行
hello-world
image.测试docker是否运行成功sudo docker run hello-world
hello-world镜像的运行流程
8.查看本机下载的镜像
docker images 或者 docker image ls
卸载docker
卸载软件
sudo yum remove docker-ce docker-ce-cli containerd.io
删除掉Images, containers, volumes, or customized configuration files 的文件
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
Windows安装步骤
- docker官网下载 Docker Desktop for Windows 在win10安装。
- 安装完成以后,docker便已经安装成功,可通过此程序操作镜像、容器等;如果需要运行docker命令,通过本机的命令行来执行。
镜像(
Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类
和实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。一个 Docker Registry 中可以包含多个 仓库(
Repository
);每个仓库可以包含多个 标签(Tag
);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过
<仓库名>:<标签>
的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest
作为默认标签。Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。
麒麟系统安装
基于Kylin V10 x86_64
系统架构 cat /etc/lsb-release、uname -a 查看
一、自己安装
1、下载docker离线包
下载地址:Index of linux/static/stable/
选择对应的系统架构,我选择的x86_64 。docker的版本选择最新社区版,目前版本是:docker-18.06.3-ce.tgz。如果版本不同,记得下面的install.sh文件修改为你的版本号。2、下载docker compose离线包
下载地址:Releases · docker/compose · GitHub
选择对应系统架构的离线安装包:我下载的docker-compose-Linux-x86_643.服务器上vi docker.service 新建系统配置文件,写如下内容
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
4、准备docker的安装脚本文件 vi install.sh 写入如下内容#!/bin/sh # # 说明:离线安装 docker 和 docker-compose # 日期:2023-01-06 # 作者:zhb echo '解压tar包...' tar -xvf docker-18.06.3-ce.tgz echo '将docker目录移动/usr/bin目录下...' cp -p docker/* /usr/bin/ rm -rf docker/ echo '将docker-compose文件复制到/usr/local/bin/目录下,并重命名为docker-compose' cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose echo '添加docker-compose文件权限' chmod +x /usr/local/bin/docker-compose echo '将docker.service 移到/etc/systemd/system/ 目录...' cp docker.service /etc/systemd/system/ echo '添加文件权限...' chmod +x /etc/systemd/system/docker.service echo '重新加载配置文件...' systemctl daemon-reload echo '启动docker...' systemctl start docker echo '设置开机自启...' systemctl enable docker.service echo 'docker安装成功...' docker -v
5、准备docker的卸载脚本文件 vi uninstall.sh#!/bin/sh # # 说明:卸载离线安装的 docker 和 docker-compose # 日期:2023-01-06 # 作者:zhb echo '删除docker.service...' rm -f /etc/systemd/system/docker.service echo '删除docker文件...' rm -rf /usr/bin/docker* echo '删除docker-compose文件' rm -f /usr/local/bin/docker-compose echo '重新加载配置文件' systemctl daemon-reload echo '卸载成功...'
6、安装 docker 和 docker compose 离线包
“docker-18.06.3-ce.tgz” (docker压缩包)、“docker-compose-linux-x86_64” (docker compose文件)将这 2 个文件上传到服务器。并和“docker.service” (docker服务文件)、“install.sh” (安装脚本) 、 “uninstall.sh” (卸载脚本放在一个文件夹下
7.运行 install.sh 文件进行安装sh install.sh
运行 uninstall.sh 文件可以进行卸载 sh uninstall.sh
8、验证安装是否成功
docker -v # 验证docker是否安装成功 # 显示 docker 的版本信息,表示安装成功 Docker version 18.06.3-ce, build d7080c1 docker-compose -v #验证docker compose是否安装成功 # 显示 docker compose 的版本信息,表示安装成功 Docker Compose version v2.15.0
上面的资源包 https://download.csdn.net/download/qq_22310551/87473844
二、直接下载压缩包,运行install.sh即可完成安装
https://download.csdn.net/download/lyklinse/87421311
Docker底层原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问。
DockerServer执行从Docker-Client接收的指令。
Docker 为什么比虚拟机快
1.Docker比虚拟机更少的抽象层
Hypervisor软件是虚拟机最主要的部分,它通过硬件虚拟化功能,模拟出了运行一个操作系统需要的各种硬件,比如CPU、内存、I/O设备等等,然后,它在这些虚拟的硬件上安装了一个新的操作系统,即Guest OS,vm运行在Guest OS之上。
Docker没有模拟硬件,Docker引擎直接运行在宿主机内核上。
docker新建容器时,不需要想vm一样重新加载一个操作系统内核,直接运行在宿主机操作系统之上,秒级;虚拟机需要加载Guest OS,分钟级别。
参考资料
- docker从入门到实践
-
docker 入门教程 阮一峰
-
视频【狂神说Java】Docker最新超详细版教程通俗易懂