赞
踩
Windows引入子系统是为了增强操作系统的兼容性。Windows子系统允许在Windows操作系统上运行其他操作系统的一些组件,最突出的是Windows Subsystem for Linux (WSL),它允许在Windows上运行Linux发行版。
步骤 1:Windows 11上启用 Hyper-V 和 Windows 虚拟化平台
步骤 2:列出计算机上当前已安装的WSL子系统
wslconfig /l |——— wslconfig |——— 管理 WSL 配置的命令行工具 |——— /l |——— wslconfig命令的一个参数, 表示列出已安装的WSL子系统。 # 效果 Microsoft Windows [版本 10.0.22621.2134] (c) Microsoft Corporation。保留所有权利。 C:\Users\LeeWentsao>wslconfig /l 适用于 Linux 的 Windows 子系统分发: CentOS7 (默认) Ubuntu C:\Users\LeeWentsao>wslconfig /unregister Ubuntu 正在注销。 操作成功完成。 C:\Users\LeeWentsao>wslconfig /l 适用于 Linux 的 Windows 子系统没有已安装的分发。 使用 'wsl.exe --list --online' 列出可用的分发 并使用 'wsl.exe --install <Distro>' 进行安装。 也可以通过访问 Microsoft Store 安装分发: https://aka.ms/wslstore Error code: WslConfig/WSL_E_DEFAULT_DISTRO_NOT_FOUND
步骤 3:打开Microsoft Store
步骤 4:搜索Ubuntu,并点击打开
第五步:设置用户名和密码(见黄色字体)
在Windows Subsystem for Linux (WSL) 中安装 CentOS 7 需要执行一下步骤:
步骤 1:打开 PowerShell 作为管理员,运行以下命令启用 WSL.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
步骤 2:启用虚拟机平台功能.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
步骤 3:下载文件CentOS镜像.
https://github.com/wsldl-pg/CentWSL/releases/tag/8.1.1911.1
步骤 4:解压CentOS压缩文件.
步骤 5:双击CentOS7.exe,进行安装.
步骤 6:按回车键,结束命令(按命令指示执行),安装后的文件目录:
步骤 7:双击CentOS7.exe,打开CentOS7系统.
步骤 8:上传windows文件到CentOS7系统.
步骤 1:打开WSL终端,确保已经安装适用于WSL的Linux发行版
步骤 2:更新系统的软件包列表和已安装的软件包:
sudo apt update
sudo apt upgrade
- sudo 英文全称为“Super User Do”, 表示以超级用户的身份执行指定命令
- apt 英文全称为“Advanced Package Tool”包管理工具,用于安装,更新和删除软件包。
步骤 3:安装docker的依赖:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- apt-tansport-https: 这个软件包允许在HTTPS协议下使用apt来进行软件包的下载和更新
- ca-certificates: 用于验证HTTPS链接中的SSL证书,以确保安全连接。
- curl: 在命令中进行网络请求和数据传输工具。
- software-properties-common: 用于管理软件源和软件包的常用工具。
步骤 4:添加docker官方GPG密钥:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- apt-tansport-https: 这个软件包允许在HTTPS协议下使用apt来进行软件包的下载和更新
- ca-certificates: 用于验证HTTPS链接中的SSL证书,以确保安全连接。
- curl: 在命令中进行网络请求和数据传输工具。
- software-properties-common: 用于管理软件源和软件包的常用工具。
步骤 5:添加docker软件源:
echo "deb [arch=amd64 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
步骤 6:更新软件包列表并安装docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
步骤 7:验证docker安装是否成功:
docker --version
步骤 8:不需使用sodo运行docker:
sudo usermod -aG docker $USER
步骤 1:更新系统包:
在安装Docker之前,建议首先更新系统包,以确保系统上的软件包列表是最新的:
sudo yum update
步骤 2:添加Docker仓库:
官方仓库包含了最新的Docker软件包,可以提供更好的支持和可靠性。官方仓库还会处理Docker所需的依赖关系,确保你的系统上安装了必要的库和工具。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
步骤 3:安装Docker:
安装Docker CE(社区版)。
sudo yum install docker-ce
步骤 4:验证安装:
运行以下命令来验证Docker是否已成功安装。
sudo docker --version
步骤 5:启动docker应用:
在WSL2中无法使用systemd启动服务,因此一般是手动启动服务,如docker,安装完docker后可通过如下命令启动,其他服务也是类似的启动方式。
nohup /usr/bin/dockerd &
|—— nohup
用于运行一个命令,并且不会受到终端关闭的影响。它将命令的输出重定向到一个名为nohup.out的文件,以便你可以在后台运行它而不会中断。
|—— /usr/bin/dockerd
这是要运行的命令,它是Docker守护进程的可执行文件路径,dockerd负责管理Docker容器和镜像。
|—— &
用于将命令置于后台运行。这意味着命令会在后台运行,你可以继续使用终端输入其他命令,而不必等待dockerd命令完成。
步骤 1:创建base_image.dockerfile文件,文件内容如下:
FROM python:3.6.5-slim # 指出构建Docker镜像时使用的基础镜像
WORKDIR /app # 设置工作目录,即在容器内部执行命令的默认目录
COPY ./requirements.txt /app/ # 将当前目录下的算法文件复制到容器目录下
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 置换镜像
RUN pip install --upgrade pip # 升级pip
RUN pip install -r /app/requirements.txt # 批量安装python依赖
其中,requirements.txt文件内容如下:
joblib==1.0.0
numpy==1.19.5
gmssl==3.2.1
xlrd==1.1.0
pandas==1.1.5
scipy==1.5.4
scikit-learn==0.23.1
flask == 2.0.3
gevent == 22.10.2
xgboost==1.3.1
statsmodels
pyyaml
步骤 2:构建基础镜像:
docker build -t base_image:0.0.0 -f base_image.dockerfile .
步骤 3:验证镜像:
docker images
该命令列出所有已安装的镜像,可以看到base_image的名称以及标签0.0.0。
docker run -it --rm base_image:0.0.0 /bin/bash
|—— docker run
该命令告诉Docker启动一个新的容器。
|—— -it
-i 或 --interactive: 允许与容器的标准输入(stdin)进行交互,也就是说,你可以向容器发送输入。
-t 或 --tty: 分配一个伪终端(TTY),这样你可以在容器内部启动一个交互式终端会话。
|—— --rm
这个选项告诉Docker在退出容器时自动删除容器。
|—— base_image:0.0.0
运行的容器的名称和标签。在这个命令中,base_image是之前构建的基础镜像的名称,0.0.0是标签(版本号)。
|—— /bin/bash
这是在容器内运行的命令。具体来说,这个命令告诉Docker在容器内启动Bash shell(终端)。
步骤 4:创建update.dockerfile文件,文件内容如下:
FROM base_image:0.0.0
|—— 该指令使用了之前创建的base_image:0.0.0作为基础镜像。这意味着在基于base_image构建一个新的镜像,后续步骤将在这个基础上进行。
COPY ./<算法目录名称>/ /app
|—— 这行指令将本地文件从<算法目录名称>复制到了容器内的/app目录中。这是将算法文件添加到容器的一种方式,使得容器中可以运行算法。
CMD ["python", "/app/service.py", "0.0.0.0", "8000"]
|—— 这是Docker容器的启动命令。它告诉Docker在容器内运行Python脚本/app/service.py,并将参数0.0.0.0和8000传递给脚本。
步骤 5:构建算法镜像:
docker build -t xx_image:0.0.0 -f update.dockerfile .
步骤 6:启动镜像:
docker run -itd -p 8080:8080 --name efi xx_image:0.0.0
|—— -itd
|—— -i
以交互模式运行容器.
|—— -t
为容器分配一个终端.
|—— -d
在后台以守护进程模式运行容器.
|—— -p 8080:8080:
将容器端口映射到主机端口,这样就可以通过主机端口访问容器内部的服务,右边为容器端口.
|—— --name efi:
给容器指定一个名称.
|—— xx_image:0.0.0:
使用镜像及版本号.
步骤 7:查看日志:
docker logs -f efi
|—— docker logs
查看容器的日志.
|—— -f
该选项表示 "follow",它告诉Docker跟踪容器的日志输出。也就是说,它会持续显示新的日志内容,就像 tail -f 命令一样。
|—— efi
查看日志的容器的名称或容器ID。
步骤 8:将 Docker 镜像打包成tar归档文件:
docker save -o algorithm-image.tar xx_image:0.0.0
|—— docker save:
将Docker镜像保存为tar文件
|—— -o algorithm-image.tar:
-o: 输出选项
algorithm-image.tar: 输出文件名称
|—— xx_image:0.0.0
镜像和版本号
步骤 9:更改文件权限,并下载:
sudo chmod 777 algorithm-image.tar
ef@ef-AI:Anhui_project$ docker run -itd -p 8080:5000 --name ef7 efalgorithm_pl:1.0.0.0
dfa377b4715efc364a807e7a8a39311cb75e86fdbd214270c50f1c90ba635088
docker: Error response from daemon: driver failed programming external connectivity on endpoint ef7 (240183f85d772733c0986676ab829c5c7344c4a5b1c71e6e74746833ea0cea08): Bind for 0.0.0.0:8080 failed: port is already allocated.
docker ps --all docker stop ef7 或 docker rm ef7 ## 4.2 加载docker镜像 1. 问题描述:如何将别人发的docker镜像加载到服务器上, 并查看docker目录,将docker目录文件copy到本地。 ```bash # 加载docker镜像 docker load -i henan_image0.0.0.tar |—— docker 用于执行各种 Docker 相关操作; |—— load 用于加载(导入)一个镜像; |—— -i: 这是一个选项,表示接下来的参数是一个输入文件(input file); |—— henan_image0.0.0.tar 这是要加载的 Docker 镜像的 .tar 压缩文件的路径. # 启动docker服务(详见步骤6) # 查看docker目录 docker exec -it <容器名称或id> ls /app |—— docker 用于执行各种 Docker 相关操作; |—— exec 用于在容器中执行命令; |—— -it 它们一起用于创建一个交互式的终端会话(TTY) |—— -i(--interactive) 允许你在容器中输入命令; |—— -t(--tty) 分配一个伪终端(TTY),使得你可以与容器中的命令进行交互。 |—— 容器名称或id 容器名称或ID。 |—— ls /app 用于列出容器内的文件和目录。/app 是要列出的目标目录。 # 拷贝docker目录 docker cp <容器名称或id>:/app ./ |—— docker 用于执行各种Docker相关操作; |—— cp 用于复制文件或目录。 |—— <容器名称或ID> 复制文件的 Docker 容器的名称或容器 ID; |—— /app :/app 表示要复制的容器内路径,即容器内的 /app 目; |—— ./ 将文件或目录复制到当前工作目录。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
(2) 重启电脑
(3) 更新wsl
PS C:\Users\ef_lee> wslconfig /l
适用于 Linux 的 Windows 子系统没有已安装的分发版。
可以通过访问 Microsoft Store 来安装分发版:
https://aka.ms/wslstore
PS C:\Users\ef_lee> wsl --update
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
liwenchao@DESKTOP-3DHSO32:~/workspace/中冶$ docker build -t base_image:0.0.0 -f base_image.dockerfile .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=base_image.dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=base_image%3A0.0.0&target=&ulimits=null&version=1": dial unix /var/run/docker.sock: connect: permission denied
liwenchao@DESKTOP-3DHSO32:~/workspace/中冶$ sudo docker build -t base_image:0.0.0 -f base_image.dockerfile .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。