Raspberry Pi 3 Model B + Camera V2.1 docker クロス開発 [プログラミング]
前回は、ラズパイでdockerを動作させるところまで記録した。今回は、Windowsでラズパイのdockerコンテナを開発することに挑戦する。
肝はこれだと思う。
docker buildx build . -t pxosdk:0.1 --platform linux/arm64 -o type=docker,dest=- > myimage.tar
しかし、このtarをラズパイにコピーし、docker loadしてもエラーが起きてしまう。
$ docker load < myimage.tarError processing tar file(exit status 1): archive/tar: invalid tar header
dest=-として標準出力にtarの中身を吐き出しているようだが、windowsでは標準エラーも同じところに出力してしまうので、tarにゴミが混じると推測した。そこで、destに直接ファイル名を指定することで解決した。
>docker buildx build . -t hello_rp:0.1 --platform linux/arm64 -o type=docker,dest=hello_rp.tar[+] Building 2.8s (8/8) FINISHED docker-container:mybuilder=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 101B 0.0s=> [internal] load metadata for docker.io/library/python:3.9-slim-buster 2.3s=> [auth] library/python:pull token for registry-1.docker.io 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load build context 0.0s=> => transferring context: 25B 0.0s=> [1/2] FROM docker.io/library/python:3.9-slim-buster@sha256:320a7a4250aba4249f458872adecf92eea88dc6abd2d76dc5c0f01cac9b53990 0.0s=> => resolve docker.io/library/python:3.9-slim-buster@sha256:320a7a4250aba4249f458872adecf92eea88dc6abd2d76dc5c0f01cac9b53990 0.0s=> CACHED [2/2] COPY a.py 1.py 0.0s=> exporting to docker image format 0.4s=> => exporting layers 0.0s=> => exporting manifest sha256:17d61a2254f3fdfc7419608ac1a60a7e3b67c7a91e98ea6cc696a8d36bf5e2de 0.0s=> => exporting config sha256:1fc37e61be263a22d171472e011a7a9e5d92625f12ae3b94a52c3052dcbeec0a 0.0s=> => sending tarball
ラズパイに転送して、実行できることを確認した。
$ docker load < hello_rp.tarLoaded image: hello_rp:0.1$ docker run hello_rp:0.1Hello, world!
ちなみに、おなじtarをwindowsにloadしても実行できた。
>docker load < hello_rp.tar87bc36f72cf5: Loading layer [==================================================>] 25.92MB/25.92MBdcbd2252343f: Loading layer [==================================================>] 2.647MB/2.647MB6e4f4f2a1b40: Loading layer [==================================================>] 11.13MB/11.13MBcd49bcee103a: Loading layer [==================================================>] 242B/242Be563f3050990: Loading layer [==================================================>] 3.136MB/3.136MBd107005ea74e: Loading layer [==================================================>] 128B/128BLoaded image: hello_rp:0.1>docker run hello_rp:0.1WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v3) and no specific platform was requestedHello, world!!
WARNINGが出ているので、ラズパイ用であることは間違いなさそうだが、動くのはなぜだろう?
pythonスクリプトが動いたので、次回は外部ライブラリが動くことを目指す。
2023-10-14 00:00
nice!(0)
コメント(0)
コメント 0