WSL/Ubuntu+Docker配置

这篇具有很好参考价值的文章主要介绍了WSL/Ubuntu+Docker配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. Docker 是什么

1. 背景

  在聊 Docker 是什么之前,我们先来回顾一下传统的产品开发上线涉及到的难点。一款产品从开发到上线,经历了开发环境、测试环境、生产环境等不同的操作系统、运行环境和应用配置等环境。在项目管理中,还涉及到不同版本以及不同版本之间兼容性等问题。
  这些问题对开发人员和运维人员都是极大的考验,同时对各方的协作也有一定的要求。不然就会出现 ”代码在我这里运行的好好的啊“,这种尴尬的局面。而 Docker 的出现就是提供了一套用来解决此类问题的标准解决方案。

—— Java烟雨

  Docker 的口号是 ”一次创建或配置,可以在任意地方正常运行“。如口号所说,Docker 的出现对于开发和运维人员是一大福音,基于 Docker 可以方便地搞定标准化的发布流程,再也不用纠结不同环境导致的问题了。

  Docker 的使用可以理解为软件是带环境安装的,即安装的时候把原始环境一模一样的复制过来一份。这样也就消除了不同机器运行结果不同的问题。Docker 本质是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源。它可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,可用于开发应用、交付应用、运行应用等场景。

2. 相关概念

  Docker 的架构如图所示,主要由镜像(image)、容器(container)和仓库(repository)构成:
wsl docker,工具,docker,ubuntu

2.1 镜像

  Docker 中的镜像是一个只读的模板,是文件与 meta data 的集合。它可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

  镜像是基于分层的实现的,每一层都可以添加删除文件,从而形成新的镜像。镜像可以理解为是一个树状结构,每一个镜像都会依赖于另一个镜像。镜像可以用来创建 Docker 容器,一个镜像可以创建多个容器。

2.2 容器

  容器是用镜像创建的运行实例,是在 image 的最后一层上面再添加一层。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是 可读可写 的。当我们把容器与镜像作对比时,可以看到镜像负责存储和分发,容器则负责运行。容器可以被启动、开始、停止、删除,并且每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境和运行在其中的应用程序。

2.3 仓库

  仓库是集中存放镜像文件的场所,它有点类似于 Maven/Git 的仓库,当我们需要镜像文件时,可以从远程仓库中拉取。仓库和仓库注册服务器(Registry)是有区别的。仓库注册服务器上存放着多个仓库,每个仓库中包含了多个镜像,每个镜像有不同的标签(tag)。

3. Docker 的优点

  在没有使用 Docker 时,如果开发完毕一个项目,需要打包成 war 或者 jar 包。然后在服务器上进行各种环境的安装、配置以及应用程序维护,比如:JDK、Tomcat、数据库等。而且,上述的配置在开发环境、测试服务器、生产服务器(通常会有很多个),都需要进行一遍同样的操作,工作量相当繁重。在使用了 Docker 之后,我们可以自己创建一个空的镜像从头构建,也可以使用公共仓库中已经构建好的镜像,直接使用。当需要在不同环境中进行部署时,直接使用构建好的镜像即可,一次构建,多环境多次使用,方便快捷:
wsl docker,工具,docker,ubuntu

总的来说,Docker 具有以下优势:

  • 更高效地利用系统资源;
  • 更快的启动时间;
  • 一致的运行环境;
  • 持续交付和部署;
  • 更轻松迁移;
  • 更轻松的维护和拓展;

4. Docker VS 虚拟机

  Docker 容器与虚拟机很相似,但它们之间又有着很大的区别。

  虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。创建虚拟机时,会将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存,每个虚拟机都有独立的硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。因此,虚拟机会消耗大量系统资源和开销,尤其是当多个虚拟机在同一物理服务器上运行时,每个虚拟机都有自己的子操作系统,大量精力以及资源被用于虚拟化的部署和运行上。

  Docker 容器虽然功能上类似于虚拟机,但容器并不是完整的操作系统,通常只包含必要的操作系统包和应用程序,这就是它们轻量级的原因。在一个机器上,十几个甚至几十个容器共享一个操作系统核心,占用资源少,启动速度快。并且容器都完全使用沙箱机制,相互之间不会有任何接口,保证了系统的安全性和稳定性。Docker 允许用户将基础设施中的应用单独分割出来,形成更小的部分容器,从而提高软件交付速度。
wsl docker,工具,docker,ubuntu

  由此可以看出,传统的虚拟机是在宿主机之上,又添加了一个新的操作系统,这就导致了虚拟机的臃肿,不适合迁移。而 Docker 是直接寄存在宿主机上,避免了大部分虚拟机带来的困扰。Docker 是一个黑盒的进程,区别于传统的进程,Docker 可以独立出一个自己的空间,不会使得在 Docker 中的行为以及变量溢出到宿主机上。

  容器与虚拟机的各项对比如下:
wsl docker,工具,docker,ubuntu

二. 环境检查

  1. Ctrl+Shift+Esc 打开任务管理器确保 CPU 的虚拟化已启用:
    wsl docker,工具,docker,ubuntu

  2. 打开:控制面板->程序->程序和功能->启用或关闭 Windows 功能,打开 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台”:
    wsl docker,工具,docker,ubuntu
    点击 “确定” 后等待搜索完命令后需要 重启

三. 安装 WSL + Ubuntu

  1. 搜索 Windows PowerShell,用管理员权限打开,执行 wsl --install 指令下载 wsl:
    wsl docker,工具,docker,ubuntu

  2. 在 Microsoft Store 中下载 Ubuntu 22.04.2 LTS,这种方法比 Windows PowerShell 中安装更快,还可以省去 wsl 装 Ubuntu 后需要 20.04 转 22.04 的操作;

  3. 下载完 Ubuntu 后直接打开会出现问题,需要先下载内核:https://aka.ms/wsl2kernel,下载完成后双击安装即可;

  4. 安装好内核后再打开 Ubuntu,可以设置用户名和密码:
    wsl docker,工具,docker,ubuntu
    Ubuntu 22.04.2 LTS 中只接受 包含小写字母、数字和特定字符 的 UNIX 用户名,不然就会报错:
    wsl docker,工具,docker,ubuntu
    后续输入密码时请切换成 英文输入法,否则会出错!

  5. 设置密码后,WSL + Ubuntu 安装完成:
    wsl docker,工具,docker,ubuntu

  6. 由于 Ubuntu 中经常用到 CMake 工具,顺手装上:

    # 添加 Kitware APT 仓库到系统中方便地获取 CMake
    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main'
    # 更新软件包列表
    sudo apt update
    # 安装最新的 CMake 版本
    sudo apt install cmake
    # 安装成功后可以查看 CMake 版本号
    cmake --version
    

    注意,第二条指令中的 jammy 是 Ubuntu 22.04 的版本代号,其他版本的代号可以使用指令 lsb_release -cs 得到;

  7. 以及 python:

    # 更新系统软件包
    sudo apt update
    sudo apt upgrade
    # 安装 python3
    sudo apt install python3
    # 安装成功后可以查看 python 版本号
    python3
    

四. 安装 Docker

  1. 在 VS Code 的扩展中安装 WSL,安装成功后在远程资源管理器中选择 Ubuntu-22.04 连接到 WSL:
    wsl docker,工具,docker,ubuntu
    连接到 WSL 后可以看到这是运行在 Ubuntu 上的;

  2. 在 WSL 终端使用 sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common 指令安装 Ubuntu 常用的软件包和依赖项。安装时需要输入密码,切记要 切换成英文输入法,否则密码错误!如果密码忘记了可以参考 windows系统下的ubuntu子系统(WSL)忘记密码的解决方案;

  3. 使用 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 指令在 Ubuntu 系统上添加 Docker 的官方 GPG 密钥;使用 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 指令向 /etc/apt/sources.list.d/docker.list 文件中写入 Docker 软件源的配置;

  4. 更新软件包:sudo apt-get update

  5. 安装 Docker:sudo apt-get install docker-ce 或者 sudo apt install docker.io
    wsl docker,工具,docker,ubuntu
    至此 Docker 安装完成,可以使用 docker version 指令验证 Docker 是否已正确安装并能正常工作。但为了能够在 Linux 中不通过 root 用户(sudo)就能直接访问 Docker,以及在运行于用户权限的 VSCode 中直接使用 Docker,还需要配置 Docker 组的用户权限;

  6. 配置 Docker 的用户组权:sudo usermod -aG docker $USERnewgrp docker,然后 重启电脑,否则后面将无法执行 docker 的指令;

  7. 在 VS Code 中安装 Docker 和 Dev Container 扩展,然后关闭全部 VS Code 窗口;

  8. 打开 Windows PowerShell 切换操作系统至 Ubuntu 界面:
    wsl docker,工具,docker,ubuntu

  9. 输入 newgrp dockercode,可自行打开 VS Code 窗口:
    wsl docker,工具,docker,ubuntu

  10. 连接 WSL,查看 Docker 状态:
    wsl docker,工具,docker,ubuntu
    wsl docker,工具,docker,ubuntu
    发现 Docker 没有自动打开,需要手动关闭后再打开;

  11. Windows PowerShell 中输入 wsl --shutdown,然后关闭所有命令行,并重新加载 Ubuntu 上的 VS Code 窗口;

  12. 在 Ubuntu 上的 VS Code 终端输入 sudo service docker startdocker ps 后发现 Docker Daemon 没有启动。如果出现 docker: unrecognized service 的报错,请重启电脑;

  13. 执行以下命令:

    sudo apt install iptables
    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
    sudo service docker start
    

    wsl docker,工具,docker,ubuntu
    wsl docker,工具,docker,ubuntu
    如上图则表示 Docker 启动成功

五. Docker 的使用

1. 基础命令

  • 启动 Docker:systemctl start docker
  • 关闭 Docker:systemctl stop docker
  • 重启 Docker:systemctl restart docker
  • 设置自启动:systemctl enable docker
  • 查看运行状态:systemctl status docker
  • 查看版本号:docker version

2. 镜像命令

  • 拉取镜像:docker pull 镜像名[:tag] (tag 为版本号);
  • 运行镜像:docker run 镜像名
  • 删除镜像:docker rmi -f 镜像名/镜像ID

3. 容器命令

  • 运行容器:docker start 容器ID
  • 停止容器:docker stop 容器ID
  • 删除容器:docker rm -f 容器ID
  • 展示容器列表:docker ps -a

更多 Docker 指令可参考 docker 常用命令大全。文章来源地址https://www.toymoban.com/news/detail-773164.html

到了这里,关于WSL/Ubuntu+Docker配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows10 安装WSL2, Ubuntu,docker

    阅读时长:10分钟 本文内容: window上安装ubuntu虚拟机,并在虚拟机中安装docker,通过docker部署数字人模型,通过vscode链接到虚拟机进行开发调试.调试完成后,直接部署在云端即可. WSL2(Windows Subsystem for Linux)是windows系统默认支持的功能,也就是Windows Linux子系统,类似于一台

    2024年02月12日
    浏览(42)
  • ubuntu中 sudo: docker: command not found,使用wsl

    下面解决步骤也许会有帮助,但是不是所有小伙伴的情况是一样的,请选择使用。 第一步 win+R打开cmd.exe执行以下命令 wsl -l -o 这一步是查找Linux版本的 第二步 继续在cmd.exe执行下面命令  wsl --set-default Linux版本 例如:wsl --set-default Debian 如果出现报错:不存在具有所提供名称的

    2024年01月16日
    浏览(37)
  • WSL2模式下,将Ubuntu、Docker迁移出C盘并解除Ubuntu、Docker对C盘的空间占用

    windows用户以前如果需要使用linux,一般是远程linux服务器或者使用虚拟机,更有甚者是把系统换成linux。相较于以上方式,对于体验用户或者本机需要使用容器创建服务的用户来说,这是很不方便的。但是近年来,微软也开发了wsl,在windows里集成了linux服务,启用wsl后,从微软

    2024年02月09日
    浏览(29)
  • 在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

    今天突然想尝试一下在 wsl-ubuntu 里通过 docker 启动支持 gpu 的 jupyter,那就开始着手干吧。 在 wsl-ubuntu 里面安装 docker-ce,先运行以下命令卸载所有冲突的包, 使用 apt 存储库安装,设置 Docker 的 apt 存储库。 安装 Docker 软件包。 通过运行 hello-world 映像来验证 Docker 引擎安装是否

    2024年01月20日
    浏览(44)
  • window11系统基于 wsl2 安装Linux发行版ubuntu,并安装docker及vscode

    WSL是“Windows Subsystem for Linux”的缩写,顾名思义,WSL就是Windows系统的Linux子系统,其作为Windows组件搭载在Windows10周年更新(1607)后的Windows系统中。 既然WSL是“子系统”,那么WSL的地位我们能大概推测出—— “子系统”作为系统层的一部分,相较于应用层(虚拟机)会消耗

    2024年02月13日
    浏览(48)
  • Ubuntu WSL Docker 踩坑记录:Cannot connect to the Docker daemon at unix:///var/run/docker.sock

    如果之前好好的, 从来没有出过问题, 也没有更新过什么东西, 那么重启试试是一个非常可行的方法, 记得重启的是Docker Desktop, 直到   1. 错误信息Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?拉过去搜索一下, 当初的默认搜索引擎是bing. 搜索到第一条

    2023年04月18日
    浏览(35)
  • 解决WSL2的ubuntu20.04中安装docker出现无法连接的问题(Cannot connect to the Docker daemon)

    wsl2的ubuntu20.04系统安装docker可以参考官网教程操作,我个人喜欢参考其中的离线安装方式:Install from a package。只需要按照官网一步步操作即可,跟普通的ubuntu20.04的安装是一样的步骤。 在安装完以后,发现一旦使用docker相关命令会出现下述问题: 说明docker没有正常启动。这

    2024年04月23日
    浏览(40)
  • Docker Desktop启动错误:WSL integration with distro Ubuntu18.xx unexpectedly stopped with exit code 1.

    具体原理不详,只是记录一下我解决的方法。(Docker Engine v20.10.8) 启用/关闭Windows功能中的Hyper-v和“适用于Linux的Windows子系统”是打开的。 尝试点击了Docker Desktop中的这两个按钮。Clean/Purge data 的执行时间很长,没等执行完我就重启了。另一个Restart执行完成之后显示Docker

    2024年02月19日
    浏览(36)
  • WSL安装Ubuntu及配置Pytorch

    参考: https://www.bilibili.com/video/BV1Fx4y1j7yy/?spm_id_from=333.337.search-card.all.click https://www.gongsunqi.xyz/posts/3c995b2a/#wsl%E5%AE%89%E8%A3%85anaconda%E5%B9%B6%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83 在深度学习中经常会用到linux环境,但是相对于windows,对于作者这样的小白,使用linux肯定不是首选,但是最近用

    2024年02月15日
    浏览(22)
  • Windows WSL配置ubuntu环境并登录

    wsl即适用于Windows的Linux子系统(Windows subsystem for Linux)。 1、管理员运行cmd,执行以下命令启用“适用于 Linux 的 Windows 子系统” 2、管理员运行cmd,执行以下命令启用“虚拟机功能” 重启电脑,等待配置生效 3、下载Linux内核更新包 https://wslstorestorage.blob.core.windows.net/wslblob/w

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包