配置tensorflow2.8可供远程连接的docker容器

1. 从docker hub上下载官方镜像

docker hub网站

docker pull tensorflow/tensorflow:2.8.0-gpu-jupyter
#或者
docker pull tensorflow/tensorflow:2.8.0

2. 运行镜像

  • 添加-it 参数交互运行
  • 添加-d参数后台运行
docker run -dit --rm tensorflow/tensorflow:2.8.0-gpu-jupyter bash
#或者
docker run -dit --rm tensorflow/tensorflow:2.8.0 bash

3. 进入docker容器内部

比如CONTAINER ID为:c96d56145259

docker exec -it c96d56145259 bash

3.1 查看Ubuntu系统版本

cat /etc/issue

在这里插入图片描述

3.2 给Ubuntu设置国内源

设置apt-get国内源是为了加快下载速度,访问镜像站页面,选择对应版本制作new_sources.list文件。
在这里插入图片描述
将new_sources.list文件粘贴于容器 /etc/apt/sources.list.d目录内。在Ubuntu下软件源的文件是/etc/apt/sources.list,而sourdces.list.d目录下的文件是第三方软件的源,可以分别存放不同的第三源地址,只需“扩展名”为list即可。

docker cp new_sources.list c96d56145259:/etc/apt/sources.list.d/new_sources.list 

在这里插入图片描述

3.3 给Ubuntu安装vim编辑器

apt-get update
apt-get install vim

3.4 给Ubuntu安装ssh服务

3.4.1 下载openssh-server

若下载的镜像内没有ssh,则pycharm远程连接访问不了(容器内没有22端口),需要给镜像配置ssh服务。

#安装ssh
apt-get update
apt-get install openssh-server
#查看ssh服务状态
service ssh status
#查看ssh版本
ssh -V

3.4.2 配置密码

为容器配置管理员密码(外部连接ssh服务时会用到),此处设置密码为123456,默认用户名为root

# 终端输入以下命令
passwd
# New password: 输入密码123456
# Retype new password:再次输入密码123456
# passwd: password updated successfully 表示密码设置成功

3.4.3 修改配置文件

修改容器内ssh的配置文件/etc/ssh/sshd_config(注意,不是ssh_config)

# 修改如下两个地方
PermitRootLogin yes
UsePAM no

在这里插入图片描述

3.4.3 启动ssh服务

service ssh restart

在这里插入图片描述

3.4.4 设置开机自启动ssh服务

容器重启后,ssh服务并不能跟着重启,需要手动进入容器执行命令才可以重启。我们使用脚本的形式将ssh设为自启,只不过这个的这个脚本和我们使用Dockerfile的脚本不一样。

  • 在 /root 目录下新建一个 start_ssh.sh文件,并给予该文件可执行权限。
touch /root/start_ssh.sh
chmod +x /root/start_ssh.sh
vim /root/start_ssh.sh
  • start_ssh.sh 脚本的内容,如下:
#!/bin/bash
 
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log
service ssh start >>/root/start_ssh.log
#service mysql start >>/root/star_mysql.log   //其他服务也可这么实现
  • 将start_ssh.sh脚本添加到启动文件中
vim /root/.bashrc
  • 在 .bashrc 文件末尾加入如下内容:
# startup run
if [ -f /root/start_ssh.sh ]; then
      . /root/start_ssh.sh
fi

注意. /root中间有空格
原文链接:https://blog.csdn.net/qq_38603541/article/details/124028994

3.5 配置jupyter notebook

jupyter notebook在此容器内已经安装好了。如果没安装,使用下面命令安装。

pip3 install jupyter
  • 生成jupyter配置文件:/root/.jupyter/jupyter_notebook_config.py
#生成配置文件
jupyter notebook --generate-config
#使用ipython生成密码
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: 123456
Verify password: 123456
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$blILhJPwrQi4cINiIoHIHw$ylvBE3m2OyIdCjnP5l/FPGvvLXu1SXTVrCeIFa1EsAw'
#去配置文件.jupyter/jupyter_notebook_config.py中修改以下参数
c.NotebookApp.notebook_dir = '/tf'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.allow_root = True
c.NotebookApp.port = 8888
c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=8$blILhJPwrQi4cINiIoHIHw$ylvBE3m2OyIdCjnP5l/FPGvvLXu1SXTVrCeIFa1EsAw'

原文链接:https://blog.csdn.net/leng_yan/article/details/87208363

3.6 使用pip安装OpenCV

  • opencv-python: 只包含opencv库的主要模块,一般不推荐安装。
  • opencv-contrib-python: 包含主要模块和contrib模块,功能基本完整,推荐安装。
pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple

验证是否可用。如果成功导入opencv包并打印相应opencv的版本就说明安装成功了。

import cv2
print(cv2.__version__)

如果报如下错误,其实就是新容器缺少依赖,安装一下就行了。
在这里插入图片描述

apt-get update
apt-get install libgl1-mesa-glx

3.7 使用pip安装scipy

pip3 install scipy

3.8 使用pip安装pandas

pip3 install pandas

3.9 使用pip安装matplotlib

matplotlib在此容器内已经安装好了。如果没安装,使用下面命令安装。

pip3 install -U matplotlib

-U参数等同于--upgrade,表示如果已安装,则升级到最新版本。

3.10 使用pip安装sklearn

pip3 install -U sklearn

-U参数等同于--upgrade,表示如果已安装,则升级到最新版本。

3.11 使用pip安装jieba

中文分词

pip3 install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

3.12 使用pip安装nltk

外文分词

pip3 install nltk -i https://pypi.tuna.tsinghua.edu.cn/simple

4. 提交为新的镜像

比如CONTAINER ID为:c96d56145259

docker commit -a "dpc" -m "tensorflow2.8_add_ssh, passwd=123456" c96d56145259 dpc_tensorflow2.8_env:001

-a指定作者信息,-m指定描述信息,新镜像名称为 dpc_tensorflow2.8_env:001

5. 用PyCharm连接远程开发环境,并启用jupyter notebook

5.1 启动容器

docker run -dit --rm -p 5023:22 -p 5024:8888 --name my_tf_env dpc_tensorflow2.8_env:001

--rm表示容器停止时,会自动删除容器

5.2 PyCharm远程连接

启动容器后,用PyCharm专业版远程连接宿主机ip的5023端口。
在这里插入图片描述
在这里插入图片描述
启动docker的宿主机ip为192.168.18.192,宿主机5023端口映射docker内22端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功啦!
在这里插入图片描述

5.3 启用jupyter notebook

进入容器内(此时CONTAINER ID为:a048eb77fbaa)

docker exec -it a048eb77fbaa bash

在容器内运行以下命令,启动jupyter notebook服务

jupyter notebook

运行服务

5.4 登陆jupyter notebook

浏览器访问xxx.xxx.xxx.xxx:5024
(xxx.xxx.xxx.xxx为docker宿主机的ip地址)
输入密码:123456
输入密码
启动成功

6. 补充

6.1 几种docker启动的方法

6.1.1 普通启动支持CPU

#启动容器的同时,在容器中打开bash shell会话
docker run -it --rm tensorflow/tensorflow:2.8.0 bash
#启动容器的同时,在容器中启动Jupyter Notebook服务
docker run -it --rm -p 8888:8888 tensorflow/tensorflow:2.8.0-gpu-jupyter
#启动容器的同时,在容器中运行tf_practice_2.py程序
docker run -it --rm -v /home/tarena/hello/tf/ceshi:/tmp -w /tmp tensorflow/tensorflow:2.8.0 python ./tf_practice_2.py

备注:

  1. tensorflow/tensorflow:2.8.0是在docker hub网站上下载的镜像,没有自己添加配置新内容。
  2. -w指定容器中的工作目录

6.1.2 支持GPU的docker启动方式

  • 查看显卡型号
lspci |grep -i nvidia
#或者
lspci |grep -i vga

备注: -i是忽略大小写;一第条命令是查看NVIDIA显卡,第二条命令是查看显卡,都可以用。

  • 查看linux系统有没有安装NVIDIA驱动(查看NVIDIA驱动是否安装成功)
nvidia-smi
  • 运行tensorflow的GPU映像
docker run --gpus all -it --rm tensorflow/tensorflow:2.8.0-gpu-jupyter bash
#或者
docker run --runtime=nvidia -it --rm tensorflow/tensorflow:2.8.0-gpu-jupyter bash
#或者

备注:

  1. docker在19.03版本之后,可以不用安装nvidia-docker,就能获得GPU的计算支持。
  2. 若出现报错,需要按顺序执行以下代码,安装nvidia-container-toolkit来解决。
#添加nvidia-docker的源,否则安装nvidia-container-toolkit时会报错
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
#安装nvidia-container-toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker

原文链接:https://blog.csdn.net/u013685264/article/details/123206768
原文链接:https://segmentfault.com/a/1190000038726907

  • 验证nvidia-docker效果
docker run --gpus all --rm nvidia/cuda nvidia-smi
备注:
v2版本使用 --runtime=nvidia 替换 --gpus all
v1版本使用 nvidia-docker 替换 --gpus all

6.2 验证容器内tensorflow2.8是否可执行

import tensorflow as tf
res=tf.reduce_sum(tf.random.normal([10,10]))
print(res)

在这里插入图片描述

6.3 查找tensorflow2.8官方文档,搭建深度学习模型

tensorflow2.8官方文档网站,也可以选择查看不同版本的文档

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在 VS Code 中进行远程连接Docker 容器,您可以使用 Remote Development 扩展程序来实现。以下是简要的步骤: 1. 安装 Remote Development 扩展程序:在 VS Code 中搜索 Remote Development 扩展程序,并安装。 2. 启动 Docker 容器:使用 Docker 命令启动您要连接的容器。 3. 打开远程窗口:在 VS Code 中,按下 F1 键,然后搜索 Remote-Containers: Attach to Running Container,并选择该选项。 4. 选择容器:在弹出的菜单中,选择要连接的容器。 5. 连接到容器:VS Code 将连接到您的容器,并在一个新的窗口中打开一个远程窗口。 现在,您可以像在本地机器上一样在 VS Code 中编写代码并运行它们,它们将在 Docker 容器中运行。 ### 回答2: 随着云计算技术的发展,Docker已经成为了一个非常流行的容器化技术,它能够帮助我们在不同的应用之间隔离开来,保证程序的安全性和可移植性。而vscode是一款非常流行的代码编辑器,它拥有丰富的扩展能力,可以帮助我们更加高效地编写代码,进行调试和代码管理,广泛应用于各种类型的编程领域。那么,如何在vscode中进行远程连接Docker容器呢? 首先,我们需要在本地安装Docker,如果你还没有安装,可以去官网下载并安装:https://www.docker.com/get-started。接下来,我们需要在Docker中创建一个新的容器,这个容器可以用来运行我们的代码,在创建容器时,我们需要将容器端口映射到主机端口。这可以通过在命令行中使用docker run命令实现。例如: ``` docker run -it --rm -v "$(pwd)":/workspace -p 8080:80 --name myapp nginx ``` 这个命令可以创建一个名为myapp的容器,将本地8080端口映射到容器的80端口。我们将会在这个容器中运行一个Nginx服务器。 接下来,我们需要使用vscode中的Remote Development扩展来远程连接到我们的容器中。这可以通过在vscode中使用Ctrl+Shift+P来调出命令面板,然后选择Remote-Containers:Attach to Running Container选项。在弹出的命令面板中,我们需要输入我们创建的容器的名称,然后按下回车键即可。接下来,vscode会在Docker镜像中创建一个新的容器,并在其中运行vscode。 对于Java开发者而言,vscode也提供了非常好的支持。Java开发者可以使用vscode中的Java扩展来开发Java应用程序。在远程连接Docker容器后,我们只需要在vscode中安装Java扩展,并配置好Java运行环境就可以开始在容器中开发Java应用程序了。 在vscode中进行远程连接Docker容器,可以帮助我们在本地进行开发,极大地提高了我们的开发效率,同时也能够保证程序的运行安全性。而随着云计算技术的不断发展,Docker容器化技术的应用也将越来越广泛。因此,掌握在vscode中进行远程连接Docker容器的技能,将会是未来云计算领域的必备技能之一。 ### 回答3: VS Code 远程连接 Docker 容器可让用户在容器内部开发和调试,而无需离开本地计算机。本文将介绍如何安装必备的软件和扩展,以及设置 Docker 和 VS Code。 步骤一:安装软件 安装 DockerDocker Compose。如果您已经在计算机上安装了这些软件,可以跳过此步骤。 步骤二:配置 Docker 首先,需要为 Docker 创建一个新的网络。在终端中运行以下命令: ``` docker network create <network-name> ``` 例如: ``` docker network create my-net ``` 然后,需要启动一个 Docker 容器。对于此示例,我们将使用 Node.js 映像。运行以下命令来启动容器: ``` docker run -itd --name <container-name> --network <network-name> <image> ``` 例如: ``` docker run -itd --name my-node --network my-net node ``` 此命令将创建并启动一个名为 my-node 的容器,并将其添加到名为 my-net 的网络中。 步骤三:安装 VS Code 扩展 在 VS Code 中安装 Remote Development 扩展,该扩展允许用户远程连接容器。 步骤四:连接到容器 打开 VS Code 并单击左下角的“远程 Window”按钮。选择“连接到主机...”然后选择“SSH target”。通过“+ Add new SSH Target”按钮创建 SSH 目标。 在“主机”输入框中输入 Docker 容器的 IP 地址。在“端口”输入框中输入 SSH 基础映像的端口(默认为 22)。在“用户名”输入框中输入 SSH 用户名(默认为 root)。 在“密码”输入框中输入 Docker 容器的密码(如果已经设置了密码)。单击“连接”。 步骤五:开始开发 VS Code 现在将建立与远程 Docker 容器的连接。完成后,用户可以通过 VS Code 完成端到端开发。 结论: 通过 VS Code 远程连接 Docker 容器使得开发和调试变得更加便利。遵循上述步骤,用户可以在 Docker 容器内部进行开发和测试,而无需离开本地计算机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值