Ubuntu22.04安装使用Docker (参考:完成Dock中的企业微信安装)

news2024/11/28 6:52:23

Ubuntu22.04安装使用Docker

  • 概述
    • 什么是Docker ?
    • Docker 的优点
  • Docker的安装
    • (1) 安装 Docker 依赖项
    • (2) 启用 Docker 官方存储库
    • (3) 使用 Apt 命令安装 Docker
    • (4) 验证和测试 Docker
  • 安装 Docker Compose
    • 1. 使用二进制文件安装 Docker Compose
    • 2. 使用 Pip 安装 Docker Compose
  • 使用Docker搭建开发环境
    • 一、建立Ubuntu22.04 的基础docker环境
    • 二、简单部署一下docker的开发环境
  • 测试:使用Docker安装企业微信
    • 问题1:企业微信关闭后如何重新打开?
    • 问题2:企业微信中接收到的文件存放位置?

概述

什么是Docker ?

Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),用社区版就可以。

Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

Github Docker 源码:https://github.com/docker/docker-ce

Docker的安装

(1) 安装 Docker 依赖项

登录到 Ubuntu 22.04系统,并运行以下 APT 命令:

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

安装 Docker 依赖项。

(2) 启用 Docker 官方存储库

虽然 docker 包在默认的包存储库中可用,但建议使用 docker 官方存储库:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

(3) 使用 Apt 命令安装 Docker

Docker 有两个版本:社区版和企业版。在这里可以运行下面的命令安装社区版:

sudo apt-get update #不能少了这一步
sudo apt install docker-ce docker-ce-cli containerd.io -y

docker 包安装完成后,请将本地用户加入 docker 组,以便该用户无需 sudo 即可执行 docker 命令

sudo usermod -aG docker $USER
newgrp docker

通过执行以下命令验证 Docker 版本

docker version

在这里插入图片描述
验证 docker 守护进程服务状态,执行 systemctl 命令:

在这里插入图片描述
确认 docker 守护进程服务已启动并正在运行。

(4) 验证和测试 Docker

使用下面的 docker 命令启动一个 hello-world 容器:

docker run hello-world

将下载 hello-world 容器镜像,然后将启动一个容器。如果容器显示提示:

在这里插入图片描述

那么docker 安装成功了。

安装 Docker Compose

1. 使用二进制文件安装 Docker Compose

下载最新 Docker Compose 。

运行下列命令安装最新稳定的 Docker Compose 文件:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

如果是:docker-compose-linux-armv7,
那么命令就是:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-e-linux-armv7" -o /usr/local/bin/docker-compose

如果有更新版本,只需要将上述命令中的 v2.6.1 替换为最新的版本号即可。请不要忘记数字前的 “v” 。

最后,使用下列命令赋予二进制文件可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

运行下列命令检查安装的 Docker Compose 版本:

docker-compose version
    Docker Compose version v2.6.1

2. 使用 Pip 安装 Docker Compose

使用 Pip 安装 Docker Compose 。Pip 是 Python 包管理器,用来安装使用 Python 编写的应用程序。

参考链接安装 Pip

安装 Pip 后,运行以下命令安装 Docker Compose。下列命令对于所有 Linux 发行版都是相同的:

pip install docker-compose
  1. 安装 Docker Compose 后,使用下列命令检查版本:
docker-compose --version
  1. 你将会看到类似下方的输出:
docker-compose version 2.6.1, build 8a1c60f6

则安装了 Docker 社区版和 Docker Compose 。

如果是 CentOS 系统,参考 CentOS 系统安装 Docker。

使用Docker搭建开发环境

一、建立Ubuntu22.04 的基础docker环境

  1. 先建立一个本地工作目录duo,方便在docker内外交换文件:
mkdir duo
cd duo
  1. 拉取ubuntu22.04的docker官方镜像:
docker pull ubuntu:22.04
  1. 拉取完成后,进一步启动docker环境:
docker run --name duo -it -v /dev:/dev --privileged -v $(pwd):/root/duo -w /root/duo ubuntu:22.04

duo为项目名称。

注意:如果没有-v /dev:/dev --privileged,则在后续执行pack_sd_image打包镜像的时候会出错。

上述具体操作过程如下:

在这里插入图片描述

现在,基础的Ubuntu22.04环境,已经建立。

PS:如退出或者重启过docker服务,可通过如下方式重新进入:

# 进入对应docker的bash环境:
docker exec -it duo bash

# 如上一步执行没有进入,或者提示duo没有启动,那就执行下一步好了:
docker start duo -i

二、简单部署一下docker的开发环境

  1. 先更新系统,安装基础的工具包:
apt update
apt install dialog python3-dev make git bc gcc flex bison ninja-build libssl-dev \
      rsync pkg-config device-tree-compiler squashfs-tools parted dosfstools cpio unzip wget \
      curl sudo fdisk udev
  1. 检查cmake版本:
    官方安装指导中,需要手动下载cmake3.19版本安装,但上述环境启用后,直接使用apt install cmake即可,安装完检查版本即可,具体命令如下:
apt install cmake
cmake --version
  1. 安装conda:

下载链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

bash ./Anaconda3-2023.07-1-Linux-x86_64.sh

配置环境变量:
打开环境配置文件:

# vim或者gedit都可以
vim ~/.bashrc
# 或者
gedit ~/.bashrc
export PATH="/dir/anaconda3/bin:$PATH"

使之生效:

source ~/.bashrc

测试:使用Docker安装企业微信

使用sudo apt install com.qq.weixin.work.deepin方式无法安装企业微信,所以用docker的方式来解决。

在ubuntu22.04下只能使用fcitx,不然输入法无法输入中文。

拷贝以下代码:

  docker run -d --name wechat --device /dev/snd --ipc host \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v $HOME/WXWork:/WXWork \
    -v $HOME:/HostHome \
    -v $HOME/wine-WXWork:/home/wechat/.deepinwine/Deepin-WXWork \
    -e DISPLAY=unix$DISPLAY \
    -e XMODIFIERS=@im=fcitx \
    -e QT_IM_MODULE=fcitx \
    -e GTK_IM_MODULE=fcitx \
    -e AUDIO_GID=`getent group audio | cut -d: -f3` \
    -e GID=`id -g` \
    -e UID=`id -u` \
    -e DPI=96 \
    -e WAIT_FOR_SLEEP=1 \
    boringcat/wechat:work

保存为.sh脚本,chmod +x xxx.sh 增加执行权限,执行脚本(前提是已安装好docker)。

问题1:企业微信关闭后如何重新打开?

  1. docker ps -a 查看所有容器进程

  2. 找到企业微信对应进程,拿到其对应的容器ID(CONTAINER ID列),执行docker rm

  3. 重新执行上面的.sh脚本,即可重新呼出企业微信

问题2:企业微信中接收到的文件存放位置?

整体目录在wine-WXWork/drive_c/users/wechat/,下面仍然会有 Desktop,Download…等文件夹,这里的文件夹是在企业微信里点击接收的文件“另存为”时弹出的目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年高教社杯 国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

LC34. 在排序数组中查找元素的第一个和最后一个位置(JAVA)

二分查找 在排序数组中查找元素的第一个和最后一个位置二分查找 上期经典算法 在排序数组中查找元素的第一个和最后一个位置 难度 - 中等 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定…

unity中Game视图绘制XYZ坐标轴

Game视图显示XYZ坐标轴 功能一:仅显示XYZ坐标轴前期准备设置箭头模型的材质1、在“Assets”中,新建一个名为“Materials”文件夹,专门用于放置材质。选中“Materials”文件夹,鼠标右键->“创建”->“材质”2、重命名为“Red…

# 【三维重建】【深度学习】NeRF代码Pytorch实现--数据加载(中)

【三维重建】【深度学习】NeRF代码Pytorch实现–数据加载(中) 论文提出了一种5D的神经辐射场来作为复杂场景的隐式表示,称为NeRF,其输⼊稀疏的多⻆度带pose的图像训练得到⼀个神经辐射场模型。简单来说就是通过输入同一场景不同视角下的二维图片和相机位…

GCNet论文总结和代码实现

GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond(当非局部网络遇到挤压激励网络) 论文:GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond 源码:https://gitcode.net/mirrors/xvji…

【LeetCode】227. 基本计算器 II

227. 基本计算器 II(中等) 方法:双栈解法 思路 我们可以使用两个栈 nums 和 ops 。 nums : 存放所有的数字ops :存放所有的数字以外的操作 然后从前往后做,对遍历到的字符做分情况讨论: 空格 …

爬虫逆向实战(二十三)--某准网数据

一、数据接口分析 主页地址:某准网 1、抓包 通过抓包可以发现数据接口是api_to/search/company_v2.json 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现b参数和kiv参数是加密参数 请求头是否加密? 无响应是否加…

torch.mul()函数使用说明,含高维张量实例及运行结果

torch.mul函数使用说明,含实例及运行结果 torch.mul() 函数torch.mul() 函数定义参数及功能高维数据实例解释 参考博文及感谢 torch.mul() 函数 对输入的张量或数做点积运算,如果维度不统一会想进行维度统一(广播机制)&#xff0…

PConv : Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

摘要 为了设计快速的神经网络,**许多研究都集中在减少浮点运算(FLOPs)**的数量。然而,我们观察到这种FLOPs的减少并不一定会导致相同程度的延迟减少。这主要是由于浮点运算每秒效率较低的问题所致。为了实现更快的网络,我们重新审视了流行的操作算子,并证明这种低FLOPS主…

docker高级(DockerFile解析)

1、构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运行容器实例 2、DockerFile构建过程解析 Dockerfile内容基础知识 1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2:指令按照从上到下,顺序执行…

异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle ​ 小月糖糖主页 在强者的眼中,没有最…

SolidWorks软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SolidWorks是一款由达索系统(Dassault Systmes)开发的三维计算机辅助设计(CAD)软件,被广泛应用于机械、电子、建筑和航空航天等领域。它以易学易用、强大的功能和良好的…

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol 0. 版本0.1 SignatureChecker.sol 1. 目标合约2. 代码精读2.1 isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) 0. 版本 [openzeppelin]:v4.8.3,[for…

华为OD机试 - 云短信平台优惠活动 - 回溯(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

教师如何有效地发放开学通知并收集签名回执?

老师在即将开学时,希望能够向家长发送开学通知,并确认家长已经收到通知。接下来教给各位老师如何完成这个需求的步骤: 好消息!博主给大家争取到的易查分福利,只需要在注册时输入邀请码:xmt66,就…

从AD迁移至AAD,看体外诊断领军企业如何用网络准入方案提升内网安全基线

摘要: 某医用电子跨国集团中国分支机构在由AD向AzureAD Global迁移时,创新使用宁盾网络准入,串联起上海、北京、无锡等国内多个职场与海外总部,实现平滑、稳定、全程无感知的无密码认证入网体验,并通过合规基线检查,确…

CAD的清除命令如何使用?CAD的清除命令使用方法

CAD广泛应用于土木建筑、装饰装潢、城市规划、园林设计、电子电路、机械设计、服装鞋帽、航空航天、轻工化工等诸多领域,因此CAD越来越成为一项基本技能,很多用人岗位都会要求会使用CAD,为帮助更多人快速学会CAD,而且CAD的使用本身…

taobao.trade.fullinfo.get(获取单笔交易的详细信息)天猫国际站店铺订单接口方法

淘宝交易API taobao.trade.fullinfo.get(获取单笔交易的详细信息) 获取单笔交易的详细信息 1. 只有单笔订单的情况下Trade数据结构中才包含商品相关的信息 2. 获取到的Order中的payment字段在单笔子订单时包含物流费用,多笔子订单时不包含物…

STM32--SPI通信与W25Q64(2)

STM32–SPI通信与W25Q64(1) 文章目录 SPI外设特征 SPI框图传输模式主模式全双工连续传输 非连续传输硬件SPI读写W25Q64 SPI外设 STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担。 特…

leetcode 496. 下一个更大元素 I

2023.8.28 这题提供暴力解法和单调栈法两种方法。 暴力解&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> ans(nums1.size(),-1);for(int i0; i<nums1.size…