Dockerの構築
Info
本ドキュメントはJetson Orin Nanoで起動するJetPack5.1.1が対象となります。
Docker更新
古いdockerコンテナが起動中の場合は削除します。
コンテナIDを確認
起動中のdockerコンテナを停止
dockerコンテナを削除
新しいdockerイメージをpullします。
| sudo docker pull faborobot/jetson-jp511-aicar
|
run.shを実行します。(JetRacer用のDockerを構築 を参照)
JetRacer用のDockerを構築
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 | #!/bin/bash
########################################
# Rerun the script with root
########################################
if [ "$EUID" -ne 0 ]; then
sudo "$0" "$@" # execute script with root
exit # exit this user script
fi
XAUTH_FILE=.Xauthority
HOST_USER=$(getent passwd 1000 | cut -d: -f1)
HOST_USER_GROUP=$(getent group 1000 | cut -d: -f1)
HOST_USER_HOME=/home/$HOST_USER
HOST_USER_XAUTH=$HOST_USER_HOME/$XAUTH_FILE
HOST_MOUNT_PATH=$HOST_USER_HOME/data
DOCKER_USER=jetson
DOCKER_USER_HOME=/home/$DOCKER_USER
DOCKER_USER_XAUTH=$DOCKER_USER_HOME/$XAUTH_FILE
DOCKER_MOUNT_PATH=$DOCKER_USER_HOME/data
########################################
# DISPLAY
########################################
DISPLAY=`echo $DISPLAY`
if [ -z $DISPLAY ]; then
# localhost display
# Ubuntu 18.04: :0
# Ubuntu 20.04: :0
# Ubuntu 22.04: :0
DISPLAY=:0
fi
########################################
# make .Xauthority
########################################
if [ ! -f $HOST_USER_HOME/$XAUTH_FILE ]; then
touch $HOST_USER_HOME/$XAUTH_FILE
chown $HOST_USER:$HOST_USER_GROUP $HOST_USER_HOME/$XAUTH_FILE
chmod 600 $HOST_USER_HOME/$XAUTH_FILE
su $HOST_USER -c "xauth generate $DISPLAY . trusted"
fi
########################################
# make ~/data/ localhost <-> docker shared directory
########################################
if [ ! -d "$HOST_MOUNT_PATH" ]; then
mkdir $HOST_MOUNT_PATH
chown $HOST_USER:$HOST_USER_GROUP $HOST_MOUNT_PATH
fi
########################################
# docker image
########################################
IMG=faborobot/jetson-jp511-aicar
PORT=8888
NAME="jetracer"
docker run \
--runtime=nvidia \
--restart=always \
-itd \
--mount type=bind,source=$HOST_USER_XAUTH,target=$DOCKER_USER_XAUTH \
--mount type=bind,source=$HOST_MOUNT_PATH,target=$DOCKER_MOUNT_PATH \
-e DISPLAY=$DISPLAY \
-e OPENBLAS_CORETYPE=ARMV8 \
-e QT_GRAPHICSSYSTEM=native \
-e QT_X11_NO_MITSHM=1 \
-e SHELL=/bin/bash \
-v /run/user/1000/:/run/user/1000/:ro \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro \
-v /usr/bin/tegrastats:/usr/bin/tegrastats \
-v /usr/sbin/nvpmodel:/usr/sbin/nvpmodel \
-v /etc/localtime:/etc/localtime:ro \
-v /dev/:/dev/ \
-v /tmp/:/tmp/ \
-v /etc/nvpmodel.conf:/etc/nvpmodel.conf \
-v /sys/devices/gpu.0:/sys/devices/gpu.0 \
-u $DOCKER_USER \
--privileged \
--network=host \
--name="${NAME}" \
$IMG \
bash -c "source /virtualenv/python3/bin/activate && jupyter lab --ip=0.0.0.0 --port=$PORT --no-browser --ServerApp.root_dir=/ --LabApp.default_url=/lab?file-browser-path=$HOST_USER_HOME"
|
run.shファイルを作成してください。
で、 faborobot/jetson-jp511-aicar
のDockerコンテナを起動します。
OLED付きの基盤の場合
OLEDにIPアドレスを表示するdockerを起動します。
run-ip.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 | #!/bin/bash
########################################
# Rerun the script with root
########################################
if [ "$EUID" -ne 0 ]; then
sudo "$0" "$@" # execute script with root
exit # exit this user script
fi
XAUTH_FILE=.Xauthority
HOST_USER=$(getent passwd 1000 | cut -d: -f1)
HOST_USER_GROUP=$(getent group 1000 | cut -d: -f1)
HOST_USER_HOME=/home/$HOST_USER
HOST_USER_XAUTH=$HOST_USER_HOME/$XAUTH_FILE
HOST_MOUNT_PATH=$HOST_USER_HOME/data
DOCKER_USER=jetson
DOCKER_USER_HOME=/home/$DOCKER_USER
DOCKER_USER_XAUTH=$DOCKER_USER_HOME/$XAUTH_FILE
DOCKER_MOUNT_PATH=$DOCKER_USER_HOME/data
########################################
# DISPLAY
########################################
DISPLAY=`echo $DISPLAY`
if [ -z $DISPLAY ]; then
# localhost display
# Ubuntu 18.04: :0
# Ubuntu 20.04: :0
# Ubuntu 22.04: :0
DISPLAY=:0
fi
########################################
# make .Xauthority
########################################
if [ ! -f $HOST_USER_HOME/$XAUTH_FILE ]; then
touch $HOST_USER_HOME/$XAUTH_FILE
chown $HOST_USER:$HOST_USER_GROUP $HOST_USER_HOME/$XAUTH_FILE
chmod 600 $HOST_USER_HOME/$XAUTH_FILE
su $HOST_USER -c "xauth generate $DISPLAY . trusted"
fi
########################################
# make ~/data/ localhost <-> docker shared directory
########################################
if [ ! -d "$HOST_MOUNT_PATH" ]; then
mkdir $HOST_MOUNT_PATH
chown $HOST_USER:$HOST_USER_GROUP $HOST_MOUNT_PATH
fi
########################################
# docker image
########################################
IMG=faborobot/jetson-jp511-aicar
NAME="ip_address"
docker run \
--runtime=nvidia \
--restart=always \
-itd \
--mount type=bind,source=$HOST_USER_XAUTH,target=$DOCKER_USER_XAUTH \
--mount type=bind,source=$HOST_MOUNT_PATH,target=$DOCKER_MOUNT_PATH \
-e DISPLAY=$DISPLAY \
-e OPENBLAS_CORETYPE=ARMV8 \
-e QT_GRAPHICSSYSTEM=native \
-e QT_X11_NO_MITSHM=1 \
-e SHELL=/bin/bash \
-v /run/user/1000/:/run/user/1000/:ro \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro \
-v /usr/bin/tegrastats:/usr/bin/tegrastats \
-v /usr/sbin/nvpmodel:/usr/sbin/nvpmodel \
-v /etc/localtime:/etc/localtime:ro \
-v /dev/:/dev/ \
-v /tmp/:/tmp/ \
-v /etc/nvpmodel.conf:/etc/nvpmodel.conf \
-v /sys/devices/gpu.0:/sys/devices/gpu.0 \
-u $DOCKER_USER \
--privileged \
--network=host \
--name="${NAME}" \
$IMG \
bash -c "~/bin/oled_ip.sh"
|
run-ip.shファイルを作成してください。
で、OLEDにIPアドレスを表示するDockerコンテナを起動します。