JetsonNano + Docker의 컨테이너를 호스트 컴퓨터와 동일한 세그먼트에 배치했을 때의 메모
6080 단어 네트워크도커JetsonNano
어렵게 생각했지만 아래 참고 기사 덕분에 상당히 쉽게 해결할 수 있었다.
어쩌면 이것이 없으면 해결할 수 없었습니다.
환경
만들고 싶은 것
Docker에서 Jetson Nano에 여러 서버를 구축하여 마치 호스트 머신과 같은 세그먼트에있는 것처럼 보이게하고 싶었고 격투했습니다.
단순히 포트 변환에서도 갈 수 있다고 생각합니다만, 그것이라고 그다지 이케하지 않구나-라고 느꼈으므로 싸워 보았습니다.
호스트의 네트워크 설정
먼저 Jetson Nano의 네트워크(eth0)를 확인합니다.
$ ifconfig
...
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 xxxx:xx:xxxx:xxxx:xxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x0<global>
inet6 xxxxxxxxxxxxxxxxxxxx prefixlen 64 scopeid 0x20<link>
ether xxxxxxxxxxxxxxxxx txqueuelen 1000 (Ethernet)
RX packets 138314 bytes 105082864 (105.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 42142 bytes 3724547 (3.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 151 base 0x5000
...
Docker 네트워크 설정(macvlan)
Docker의 network 명령을 사용하여 네트워크 목록을 볼 수 있지만 설치 중에 구성된 네트워크 설정에서는 위 그림의 환경을 만들 수 없습니다.
그래서 macvlan 인터페이스를 만들고 컨테이너를 시작할 때 네트워크를 사용하도록 설정합니다.
macvlan이란?
하나의 물리적 NIC에 대해 가상 NIC를 여러 개 만들 수 있는 기능인 것 같습니다. 자세한 내용은 다른 사람의 기사을 참조하십시오.
Docker 네트워크 생성
호스트의 네트워크 설정을 기반으로 Docker create에서 네트워크를 만듭니다. 다음 명령은 Jetson Nano의 eth0에 macvlan 네트워크를 만듭니다.
# ネットワークの作成
$ docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 shared_nw
# 作成したネットワークの確認
$ docker network inspect shared_nw
[
{
"Name": "shared_nw",
"Id": "552a5787314480bd94c43582f7a46968d7bea985b93d7a90f3923a859be32e73",
"Created": "2020-01-24T00:31:59.856134246+09:00",
"Scope": "local",
"Driver": "macvlan",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.1.0/24",
"Gateway": "192.168.1.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"parent": "eth0"
},
"Labels": {}
}
]
Docker 컨테이너 시작
네트워크를 작성할 수 있었으므로, 나머지는 이 네트워크를 이용한 컨테이너를 기동합니다.
예를 들어 기본 Apache 서버를 192.168.1.12로 시작합니다.
# Jetson Nanoと同じセグメント上のIP:192.168.1.12にWebサーバを起動
$ docker run -itd --net=shared_nw --ip=192.168.1.12 httpd
웹브라우저로 접속하면 자주 보는 "It Works!"를 볼 수 있습니다.
제한사항
이 방법으로 컨테이너를 시작하면 제한으로 Jetson Nano에서 컨테이너에 액세스 할 수 없습니다.
(이번 경우 예를 들어 Jetson Nano에서 Apache 서버로 웹 브라우저를 사용하여 액세스 할 수 없습니다)
이것은 macvlan의 기능상 피하는 방법은 없다고 합니다.
Reference
이 문제에 관하여(JetsonNano + Docker의 컨테이너를 호스트 컴퓨터와 동일한 세그먼트에 배치했을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Moo_Yohei/items/373e00fd4280d18f6942
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Jetson Nanoと同じセグメント上のIP:192.168.1.12にWebサーバを起動
$ docker run -itd --net=shared_nw --ip=192.168.1.12 httpd
이 방법으로 컨테이너를 시작하면 제한으로 Jetson Nano에서 컨테이너에 액세스 할 수 없습니다.
(이번 경우 예를 들어 Jetson Nano에서 Apache 서버로 웹 브라우저를 사용하여 액세스 할 수 없습니다)
이것은 macvlan의 기능상 피하는 방법은 없다고 합니다.
Reference
이 문제에 관하여(JetsonNano + Docker의 컨테이너를 호스트 컴퓨터와 동일한 세그먼트에 배치했을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Moo_Yohei/items/373e00fd4280d18f6942텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)