Docker
Windows Docker 安装
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。
Win10 系统
Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。
Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!
安装 Hyper-V
Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。
但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
开启 Hyper-V
程序和功能
启用或关闭Windows功能
选中Hyper-V
也可以通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 PowerShell,执行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
安装 Docker Desktop for Windows
点击 Get started with Docker Desktop,并下载 Windows 的版本,如果你还没有登录,会要求注册登录:
运行安装文件
双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。
安装完成后,Docker 会自动启动。通知栏上会出现个小鲸鱼的图标,这表示 Docker 正在运行。
桌边也会出现三个图标,如下图所示:
我们可以在命令行执行 docker version 来查看版本号,docker run hello-world 来载入测试镜像测试。
如果没启动,你可以在 Windows 搜索 Docker 来启动:
启动后,也可以在通知栏上看到小鲸鱼图标:
如果启动中遇到因 WSL 2 导致地错误,请安装 WSL 2。
安装之后,可以打开 PowerShell 并运行以下命令检测是否运行成功:
docker run hello-world
在成功运行之后应该会出现以下信息:
win7、win8 系统
win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
安装比较简单,双击运行,点下一步即可,可以勾选自己需要的组件:
docker toolbox 是一个工具集,它主要包含以下一些内容:
- Docker CLI - 客户端,用来运行 docker 引擎创建镜像和容器。
- Docker Machine - 可以让你在 Windows 的命令行中运行 docker 引擎命令。
- Docker Compose - 用来运行 docker-compose 命令。
- Kitematic - 这是 Docker 的 GUI 版本。
- Docker QuickStart shell - 这是一个已经配置好Docker的命令行环境。
- Oracle VM Virtualbox - 虚拟机。
下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,如下图所示:
点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。
如果系统显示 User Account Control 窗口来运行 VirtualBox 修改你的电脑,选择 Yes。
$ 符号那里可以输入以下命令来执行。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository hello-world
91c95931e552: Download complete
a8219747be10: Download complete
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker Engine CLI client contacted the Docker Engine daemon.
2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
(Assuming it was not already locally available.)
3. The Docker Engine daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
For more examples and ideas, visit:
https://docs.docker.com/userguide/
MacOS Docker 安装
使用 Homebrew 安装
macOS 我们可以使用 Homebrew 来安装 Docker。
Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:
$ brew install --cask --appdir=/Applications docker
==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password: # 输入 macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺 docker was successfully installed!
在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标
手动下载安装
如果需要手动下载,请点击以下链接下载 Install Docker Desktop on Mac 。
如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。
从应用中找到 Docker 图标并点击运行。可能会询问 macOS 的登陆密码,输入即可。
点击顶部状态栏中的鲸鱼图标会弹出操作菜单。
第一次点击图标,可能会看到这个安装成功的界面,点击 "Got it!" 可以关闭这个窗口。
启动终端后,通过命令可以检查安装后的 Docker 版本。
docker --version
Docker version 17.09.1-ce, build 19e2cf6
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。
之后我们可以通过 docker info 来查看是否配置成功。
$ docker info
...
Registry Mirrors:
http://hub-mirror.c.163.com
Live Restore Enabled: false
Docker 命令
命令 | 描述 |
docker compose build | 构建或重建服务 |
docker compose convert | 将撰写文件转换为平台的规范格式 |
docker compose cp | 在服务容器和本地文件系统之间复制文件/文件夹 |
docker compose create | 为服务创建容器。 |
docker compose down | 停止和移除容器、网络 |
docker compose events | 从容器接收实时事件。 |
docker compose exec | 在正在运行的容器中执行命令。 |
docker compose images | 列出创建的容器使用的图像 |
docker compose kill | 强制停止服务容器。 |
docker compose logs | 查看容器的输出 |
docker compose ls | 列出正在运行的撰写项目 |
docker compose pause | 暂停服务 |
docker compose port | 打印端口绑定的公共端口。 |
docker compose ps | 列出容器 |
docker compose pull | 拉取服务镜像 |
docker compose push | 推送服务镜像 |
docker compose restart | 重启容器 |
docker compose rm | 移除停止的服务容器 |
docker compose run | 在服务上运行一次性命令。 |
docker compose start | 启动服务 |
docker compose stop | 停止服务 |
docker compose top | 显示正在运行的进程 |
docker compose unpause | 取消暂停服务 |
docker compose up | 创建和启动容器 |
docker compose version | 显示 Docker Compose 版本信息 |
【Docker 模块】使用手册
Docker
Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 快速交付、测试和部署代码的方法,您可以显着减少编写代码和在生产环境中运行之间的延迟。
Dockerfile
Docker 可以通过读取 Dockerfile 中的指令自动构建镜像,Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
Docker Compose
Docker Compose 是一种用于帮助定义和共享多容器应用程序的工具。使用 Compose,我们可以创建一个 YAML 文件来定义服务,并且使用一个命令或操作,可以启动所有内容或将其全部关闭。
安装:
测试版本的面板:在左侧菜单 "Docker" 界面安装
正式版本的面板:需要先在"面板设置"中的 面板菜单栏隐藏 将 "Docker" 打开,按F5刷新界面,在左侧菜单 "Docker" 界面安装
安装后界面如下:点击图片可看大图
产品功能列表与详解:
一、镜像
Docker 镜像是容器的基础。镜像没有状态,它永远不会改变。
二、容器
容器是Docker 镜像的运行实例。
三、Compose
Compose是一个使用 Docker 定义和运行复杂应用程序的工具。
四、Compose模板
Compose模板 定义构成Compose 项目的yaml文件。
五、网络
容器网络是由 Docker 为容器创造的虚拟环境的一部分,能让容器从宿主机的网络环境中独立出来。
六、存储卷
存储卷是一个或多个容器中的一个特别指定的目录,存储卷旨在数据持久化,独立于容器的生命周期。因此删除容器时,Docker 永远不会自动删除卷。
七、仓库
仓库是用来存放Docker镜像。
八、设置
Docker 服务的状态。
一、镜像:
镜像界面预览:点击图片可看大图
- 从仓库拉取:从Docker官方库、第三方库拉取镜像
例:
从docker官方仓库拉取镜像:mysql:5.7
mysql:5.7 解释; mysql是镜像的名称,5.7是标签,采用英文“:”分隔
从第三方仓库拉取镜像:registry.cn-shenzhen.aliyuncs.com/star7th/showdoc
解释:第三方仓库/用户/镜像的名称,没有标签默认为:latest - 导入镜像:从本服务器导入镜像
- 构建镜像:通过Dockerfile文件构建镜像
查看构建镜像例子:点我直达 Dockerfile 构建镜像例子 - 推送:将镜像推送到指定的仓库
注意:需要先设置你自己仓库,才能进行推送
标签填写格式:镜像名:标签,镜像名要与仓库名相同才能正常推送。如图: - 导出:导出镜像到本服务器
- 删除:删除镜像,删除镜像后无法恢复请注意相关的备份
- ID:镜像的sha256指纹信息,也是镜像的ID
- 镜像名:镜像的名称和标签,Docker镜像唯一的标识,如果”构建/导入镜像”有相同”镜像名称:标签”将会覆盖旧的镜像
- 大小:镜像的大小
- 创建时间:镜像创建的时间
二、容器:
容器界面预览:点击图片可看大图
- 添加容器:通过镜像创建容器、通过Compose模板创建容器编排
例:我们以“mysql:5.7”镜像为例创建容器
在命令行中一般这样创建容器:- docker run -d --name mysql_test -p 3361:3306 -v /docker/mysql_data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=my-passwd mysql:5.7
在面板中可以这样创建容器:run:使用mysql:5.7镜像创建容器 -d:容器后台运行 --name:设置容器名为:mysql_test -p 3361:3306:映射宿主机3361端口到容器3306端口 -v /docker/mysql_data/:/var/lib/mysql/:映射宿主机/docker/mysql_data/ 目录到容器/var/lib/mysql/ 目录,用于数据的持久化(宿主机目录如果不存在会自动创建) -e:MYSQL_ROOT_PASSWORD=my-passwd:指定环境变量,并设置MySQL root用户密码为 my-passwd,在mysql镜像中如果不指定这条环境变量将无法运行容器
界面解释:容器:对应 --name,填写容器名称 镜像:选择mysql:5.7 创建容器 暴露端口:对应 -p 3361:3306 ,注意:填写完成后要点+号图标,才会生效 启动命令:可留空 容器停止后自动删除容器:勾上后容器停止将自动删除这个容器,请注意数据的备份删除后无法恢复 限制CPU、内存:限制容器使用的资源 挂载卷:对应 -v /docker/mysql_data/:/var/lib/mysql/ ,也可以在 “存储卷界面” 添加并且选择存储卷名做数据的持久化,注意:填写完成后要点+号图标,才会生效 标签:用于标识容器的用处,可留空 环境变量:对应 -e MYSQL_ROOT_PASSWORD=my-passwd 重启规则: 不重启:重启服务器/重启Docker服务不会启动容器 关闭时重启:重启服务器/重启Docker服务自动启动容器 错误时重启(默认5次):容器出错时将重启,超过5次后不再重启,请查看容器日志进行排查错误 面板默认已经使用 run -d 后台运行 公共镜像的容器如何使用,请查看其官方的资料 - 实时监控:实时监控容器的 CPU、内存、硬盘IO、网络IO 资源的使用
- 终端:终端模式进入容器
注意:需要容器是启动状态才能进入容器,否则将退出到宿主机 - 目录:通过文件管理器进入容器目录
- 日志:查看容器的运行日志
- 删除:删除容器,删除容器后数据无法恢复请注意数据的备份,如果容器有做数据持久化,存储卷是不会被删除
- 容器名:可以点击进去使用“容器配置”,“生成镜像”功能
(1) 容器配置:点击“容器名”查看容器配置,可点击“…”可以查看更多配置
(2) 生成镜像:将当前容器生成镜像、生成镜像后导出压缩包 - 状态:可以选择 启动、停止、暂停、取消暂停、重启、重载容器
- 镜像:容器使用的镜像
- IP:容器的IP地址
- CPU使用率:容器的CPU使用率
- 端口 (主机-->容器):宿主机映射到容器的端口,左边为宿主机
- 启动时间:第一次启动容器的时间
- 批量操作:选择1个及以上对容器进行批量操作:启动、停止、暂停、取消暂停、重启、重载、删除容器
三、Compose:
Compose界面预览:点击图片可看大图
- 添加Compose项目:从Compose模板中建立容器
查看Docker Compose例子:点我直达 Docker Compose例子 - 容器列表:
(1) Compose操作:可选择 启动、停止、暂停、取消暂停、重启整个Compose项目
(2) 状态:可以选择 启动、停止、暂停、取消暂停、重启、重载容器
(3) 终端:终端模式进入容器
(4) 目录:通过文件管理器进入容器目录
(5) 日志:查看容器的运行日志
(6) 删除:删除单个容器,删除后数据无法恢复请注意数据的备份,如果容器有做数据持久化,存储卷是不会被删除 - 删除:删除整个Compose项目的容器,将删除项目内所有的容器,删除后数据无法恢复请注意数据的备份,如果容器有做数据持久化,存储卷是不会被删除
- Compose项目名称:项目名称
- 容器数量:项目内的容器数量
- 启动时间:第一次启动容器的时间
- 描述:用于描述此项目的用处
- 批量操作:选择1个及以上对项目进行批量操作:删除Comose项目
四、Compose模板:
Compose模板界面预览:点击图片可看大图
- 添加:添加Compose模板、搜索本地模板
- 编辑:编辑Compose模板
- 拉取镜像:根据Compose模板的配置拉取镜像
- 删除:删除Compose模板,删除后无法恢复请注意模板内容的备份
- 模板名:模板的名称
- 路径:模板的存储路径
- 描述:用于描述此模板的用处
- 批量操作:选择1个及以上对模板进行批量操作:删除Compose模板
五、网络
网络界面预览:点击图片可看大图
- 添加网络:添加新的网络到Docker
- 删除:删除容器网络
- 网络名:网络的名称
- 显示:网络驱动类型
(1) none:none模式不使用网络
(2) host:host模式直接使用宿主机的网络
(3) bridge:bridge模式与宿主机桥接,容器默认使用的网络 - 网络号:容器网络的IP范围
- 网关:容器网络子网的网关IP地址
- 标签:用于标识容器网络的用处
- 创建时间:创建容器网络的时间
- 批量操作:选择1个及以上对网络进行批量操作:删除网络
六、存储卷
存储卷界面预览:点击图片可看大图
- 添加存储卷:添加新的存储卷
可先添加存储卷,再到 添加容器界面 选择存储卷 - 删除:删除存储卷,删除存储卷后数据无法恢复请注意数据的备份
- 存储卷:容器数据持久化的存储卷名称
- 挂载点:存储在宿主机的路径
- 所属容器:目前那个容器在使用这个存储卷
- 设备:存储卷所存储的设备
- 创建时间:创建存储卷的时间
- 标签:用于标识存储卷的用处
- 批量操作:选择1个及以上对存储卷进行批量操作:删除存储卷,删除存储卷后数据无法恢复请注意数据的备份
七、仓库
仓库界面预览:点击图片可看大图
- 添加仓库:添加docker官方库、第三方仓库
docker官方库添加如下:
添加仓库可参考:https://www.bt.cn/bbs/thread-80965-1-1.html - 编辑:编辑仓库
- 删除:删除仓库
- URL:镜像仓库链接
- 用户:登录仓库用户
- 仓库名:仓库名称/镜像名称
- 描述:用于标识仓库的用处
- 批量操作:选择1个及以上对仓库进行批量操作:删除仓库
八、设置
设置界面预览:点击图片可看大图
- Docker服务:当前Docker服务状态,可开启、重启、停止。启动Docker服务后,容器是否启动根据重启规则来启动
- 容器监控:开启、关闭。关闭后CPU使用率将不再监控
- 监控天数:设置容器页面监控保存天数。默认为30天
- 加速URL:设置加速URL,设置加速后需要手动重启Docker。Docker默认仓库在国内下载较慢,建议使用加速URL
常用的国内镜像仓库:
科大:- https://docker.mirrors.ustc.edu.cn/
- https://hub-mirror.c.163.com/
【Docker 模块】使用手册---2022/7/5 第一版
本使用手册编写时使用的环境:
操作系统:CentOS7.9.2009 x86_64,内核3.10.0
面板版本:7.9.2(当前最新正式版)
面板Python环境:3.7.9
【Docker 模块】使用Dockerfile构建自己的tomcat镜像
使用Dockerfile构建自己的tomcat镜像
- 首先建立目录存放构建镜像需要用到的文件。
如图:
我的文件存放在 /www/mydockerfile/tomcat 目录,dockerfile 文件,测试项目apptest目录,tomcat,jdk
建立目录,进入目录,下载tomcat,jdk,创建测试页面- mkdir -p /www/mydockerfile/tomcat/apptest
- cd /www/mydockerfile/tomcat
- echo "Tomcat test app1" > /www/mydockerfile/tomcat/apptest/index.jsp
- wget http://dg1.bt.cn/install/src/apache-tomcat-9.0.62.tar.gz && wget http://dg1.bt.cn/install/src/jdk-8u121-linux-x64.rpm
建立 dockerfile 文件内容如下:请直接使用终端或者SSH工具建立。
cat > dockerfile << EOF
FROM centos
## FROM 从 centos镜像,开始构建新的镜像
ADD apache-tomcat-9.0.62.tar.gz /usr/local
## ADD 添加文件并且自动解压到 /usr/local/apache-tomcat-9.0.62
COPY apptest /usr/local/apache-tomcat-9.0.62/webapps/apptest
## COPY 复制 apptest 下的所有文件到容器,容器目录不存在时会自动建立 apptest 目录
COPY jdk-8u121-linux-x64.rpm /tmp/
## COPY 复制 jdk-8u121-linux-x64.rpm 文件到 /tmp/
ENV MYPATH=/usr/local/apache-tomcat-9.0.62
## ENV 设置容器环境变量
WORKDIR \$MYPATH
## WORKDIR 设置工作目录,也就是进入容器的默认目录
EXPOSE 8080 8009
## EXPOSE 容器的暴露端口
RUN rpm -ivh /tmp/jdk-8u121-linux-x64.rpm && rm -f /tmp/jdk-8u121-linux-x64.rpm
## RUN 指令安装 jdk,安装完成后删除文件
CMD ["/usr/local/apache-tomcat-9.0.62/bin/catalina.sh", "run"]
## CMD 指定要在容器中运行的命令,启动tomcat。
EOF
- 构建 tomcat 镜像:
Docker 界面 --> 镜像 --> 构建镜像
Dockerfile:/www/mydockerfile/tomcat/dockerfile
标签:tomcat_test:1.0
构建镜像完成 - 使用构建的镜像创建容器:
容器 --> 添加容器 注:本次添加的容器没有设置数据持久化,有需要请在挂载卷处设置
容器创建成功 - 访问容器的tomcat,如无法访问,请在安全组界面开启8080端口
使用浏览器访问,查看效果:http://ip:8080/apptest/访问容器的tomcat.png (9.47 KB, 下载次数: 3)
访问容器的tomcat.png
更多 dockerfile 指令使用方法,请查看Docker官方文档: