01 docker概述及安装

目的

学会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

  1. 卸载软件

    sudo yum remove docker-ce docker-ce-cli containerd.io
    
  2. 删除掉Images, containers, volumes, or customized configuration files 的文件

    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd

 Windows安装步骤

  1. docker官网下载 Docker Desktop for Windows 在win10安装。
  2. 安装完成以后,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文件修改为你的版本号。
docker下载

2、下载docker compose离线包

下载地址:Releases · docker/compose · GitHub
选择对应系统架构的离线安装包:我下载的docker-compose-Linux-x86_64
docker compose下载

3.服务器上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,分钟级别。

参考资料

  1.  docker从入门到实践
  2.  docker 入门教程 阮一峰

  3. 视频【狂神说Java】Docker最新超详细版教程通俗易懂

  4. Docker 官网

  5. Docker文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值