ubuntu docker 安装
wget http://fishros.com/install -O fishros && . fishros
# 一定要是英伟达版本的docker nvidia-docker
sudo apt-get install -y nvidia-docker2
加载镜像
|如果需要从u盘中加载镜像,终端的路径需要切换至u盘
sudo docker load -i [image_]
docker load
: 这是 Docker 的一个命令,用于从一个 tar 存档文件(tarball)中加载一个镜像。-i
: 这是docker load
命令的一个选项,代表 input(输入)。
查看系统上可用镜像
sudo docker images
docker images
: 这是 Docker 的一个命令,用于显示当前系统上所有的 Docker 镜像。- 这个命令会列出所有已下载或构建的镜像,包括它们的仓库名、标签、镜像 ID、创建时间和大小。
- 如果没有镜像,这个命令将不会显示任何内容。
启动容器
sudo docker run -it --privileged --runtime nvidia -v ~/share:/root/share:rw --net=host --volume=/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name [container_name] [image_name:[tag]] bash
用于启动一个具有图形界面支持、GPU 加速、以及对主机资源(如文件系统)有较高访问权限的 Docker 容器
sudo docker run
:这是 Docker 的基本命令,用于运行一个新的容器。-it
:这两个选项通常一起使用。-i
表示交互式操作,-t
分配一个伪终端或终端。--privileged
:这个选项赋予容器内的根用户几乎所有的权限,这通常是出于访问主机系统硬件等特定需求。--runtime nvidia
:这指定了容器使用的运行时环境是 NVIDIA,常用于需要 GPU 支持的应用,比如深度学习。-v ~/share:/root/share:rw
:这是一个卷挂载的命令。它将主机上的~/share
目录映射到容器中的/root/share
目录。rw
表示可读写。--net=host
:这个选项让容器共享主机的网络堆栈,容器将直接使用主机的 IP 和端口。--volume=/tmp/.X11-unix
:这是另一个卷挂载,用于图形界面的应用,让容器可以访问 X11 的 Unix 套接字。--env="DISPLAY=$DISPLAY"
:设置环境变量,这里是将主机的DISPLAY
环境变量传递给容器,通常用于 GUI 应用。--name [container_name]
:为新创建的容器指定一个名称,替换[container_name]
。[image_name]
:指定要使用的 Docker 镜像的名称,替换[image_name]
。bash
:这是容器启动后将要运行的命令,这里是启动 Bash shell。
启动一个之前已经创建但当前处于停止状态的容器
sudo docker start [container_name]
docker start
: 用于启动一个或多个已经停止的容器。[container_name]
: 这里需要替换为想要启动的容器的名称或者 ID。容器名称或 ID 是在创建容器时指定或自动生成的。
打开交互式命令行界面
sudo docker exec -it [container_name] bash
docker exec
: 用于在运行中的容器内执行命令。
创建快速启动别名
编辑shell配置文件
sudo gedit ~/.bashrc
添加alias
命令
alias startmycontainer='sudo docker start mycontainer && sudo docker exec -it mycontainer /bin/bash'
保存文件,使更改生效
source ~/.bashrc
为了图形化界面,需要xserver
输出当前设置的 DISPLAY
值
echo $DISPLAY
echo
是一个常用的命令行工具,用于在标准输出(通常是终端)上显示其后的参数。$DISPLAY
是一个环境变量,它包含了用于定位 X 服务器的地址。在图形界面的 Unix 系统中,$DISPLAY
环境变量通常会被自动设置。- 例如,
DISPLAY=:0
通常表示本地机器上的第一个 X 服务器。数字0
是 X 服务器的显示号码。 - 在使用 SSH 远程连接到其他机器时,如果使用了 X11 转发(通过
-X
或-Y
选项),$DISPLAY
将被设置为指向远程机器的 X 服务器。
- 例如,
当容器里与主机的输出值不同时,无法在主机的显示器看到docker的图形化界面
为了能够看到docker的图形化界面,
需要修改docker里面DISPLAY值
1. 临时修改(当前终端会话)
要在当前终端会话中临时修改 DISPLAY
值,使用 export
命令。
export DISPLAY=:1
这会将 DISPLAY
设置为 :1
,但只在当前的终端会话中有效。关闭终端或打开新的终端会话后,这个设置将不再有效。
2. 修改 .bashrc
或 .bash_profile
如果想让 DISPLAY
的修改在每次登录时自动应用,可以将 export
命令添加到 .bashrc
文件中。例如:
echo 'export DISPLAY=:1' >> ~/.bashrc
然后重新加载配置文件:
source ~/.bashrc
这种方法会在每次新开一个终端时自动设置 DISPLAY
3. 修改全局配置(适用于所有用户)
如果需要为所有用户修改 DISPLAY
,可以将 export
命令添加到全局配置文件,如 /etc/profile
或 /etc/environment
。这需要管理员权限。
例如,在 /etc/environment
中添加:
DISPLAY=":1"
这种修改需要重新启动或重新登录才能生效。
之后
startx
重启服务
配置VNC
1 TX2下载tightvnc
2 配置TX2的VNC
地面站需要通过VNC链接TX2,需要在TX2上进行如下操作。(在TX2终端操作,而非docker中)
mkdir -p ~/.config/autostart
cp /usr/share/applications/vino-server.desktop ~/.config/autostart/.
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n ' '|base64)
之后将TX2设置为免密登录,并重启即可。
3 TX2添加显示
在TX2不连着显示器时,TX2默认使用低分辨率显示,通过VNC访问时会严重影响使用。为此,进行如下设置(在TX2终端操作,而非docker中)
# 进入设置文档
sudo gedit /etc/X11/xorg.conf
# 将以下内容添加至结尾
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Default Device"
SubSection "Display"
Depth 24
Virtual 1920 1080
EndSubSection
EndSection
之后重启即可