XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


Docker使用

目录

Docker

应用打包, 分发, 部署的工具

你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要, 而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

性能比较好, 稳定性好

打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包 分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装 部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。

Docker 部署的优势

常规应用开发部署方式:自己在 Windows 上开发、测试 –> 到 Linux 服务器配置运行环境部署。

问题:我机器上跑都没问题,怎么到服务器就各种问题了

用 Docker 开发部署流程:自己在 Windows 上开发、测试 –> 打包为 Docker 镜像(可以理解为软件安装包) –> 各种服务器上只需要一个命令部署好

优点:确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。

例如 易文档SVNBucket 的私有化部署就是用 Docker,轻松应对客户的各种服务器。

Docker 通常用来做什么

  • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
  • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK
  • 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
  • Windows 上体验/学习各种 Linux 系统

重要概念:镜像、容器

镜像:可以理解为软件安装包,可以方便的进行传播和安装。 容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

安装

桌面版:https://www.docker.com/products/docker-desktop 服务器版:https://docs.docker.com/engine/install/#server

命令行安装 Linux 内核 wsl.exe --install -d Ubuntu

设置开机启动 Hypervisor bcdedit /set hypervisorlaunchtype auto

注意要用管理员权限打开 PowerShell

设置默认使用版本2 wsl.exe --set-default-version 2

查看 WSL 是否安装正确 wsl.exe --list --verbose 应该如下图,可以看到一个 Linux 系统,名字你的不一定跟我的一样,看你安装的是什么版本。 并且 VERSION 是 2 image.png

确保 BIOS 已开启虚拟化,下图检查是否已开启好

如果是已禁用,请在开机时按 F2 进入 BIOS 开启一下,不会设置的可以网上搜索下自己主板的设置方法,Intel 和 AMD 的设置可能稍有不同

image.png

镜像加速源

镜像加速器 镜像加速器地址
Docker 中国官方镜像 https://registry.docker-cn.com
DaoCloud 镜像站 http://f1361db2.m.daocloud.io
Azure 中国镜像 https://dockerhub.azk8s.cn
科大镜像站 https://docker.mirrors.ustc.edu.cn
阿里云 https://ud6340vz.mirror.aliyuncs.com
七牛云 https://reg-mirror.qiniu.com
网易云 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com
"registry-mirrors": ["https://registry.docker-cn.com"]

1.png

实际使用

  • 一个命令就可以安装好,快速方便
  • 有大量的镜像,可直接使用
  • 没有系统兼容问题,Linux 专享软件也照样跑
  • 支持软件多版本共存
  • 用完就丢,不拖慢电脑速度
  • 不同系统和硬件,只要安装好 Docker 其他都一样了,一个命令搞定所有

Docker 官方镜像仓库:https://hub.docker.com/

docker run -d -p 6379:6379 --name redis redis:latest

运行一个软件, -d在后台运行, -p容器里面的端口暴漏, –name给容器命名, 使用的源为最新版本

制作自己的镜像

docker ps 查看当前运行中的容器 docker images 查看镜像列表 docker rm container-id 删除指定 id 的容器 docker stop/start container-id 停止/启动指定 id 的容器 docker rmi image-id 删除指定 id 的镜像 docker volume ls 查看 volume 列表 docker network ls 查看网络列表