docker
第一步:加载镜像
sudo docker load -i /home/ubuntu/下载/docker/engine_test_ubuntu_20.04_x86_64.tar
第二步:确认镜像已加载
sudo docker images | grep engine_test
加载成功后镜像名为:engine_test_ubuntu_20.04_x86_64:done
第三步:运行容器
sudo docker run -it --name engine_test engine_test_ubuntu_20.04_x86_64:done /bin/bash
------------
sudo docker run -it --name engine_test engine_test_ubuntu_20.04_x86_64:done /bin/bash
[sudo] ubuntu 的密码:
docker: Error response from daemon: Conflict. The container name "/engine_test" is already in use by container "05b196742f80e6ad7c1e787caa2e69f489132884651cfb51865967a5edef481a". You have to remove (or rename) that container to be able to reuse that name.
Run 'docker run --help' for more information
如果已经有了就直接进入
sudo docker exec -it engine_test /bin/bash
如果容器已停止,先启动:
sudo docker start engine_test
第四步: 在宿主机器上传文件到docker
docker地址
docker cp /home/ubuntu/qiao/aodi/2026/PP01/06crash版本7-1-4.tar.xz **engine_test:/home/python_code**
第五步: docker传文件到宿主机器
sudo docker cp engine_test:/home/python_code/06crash版本7-1-4/hdmap_log1.tar.gz /home/ubuntu/下载/docker/
第六步:同一个镜像 运行多个 互相不干扰
sudo docker run -it --name engine_test_3 engine_test_ubuntu_20.04_x86_64:done /bin/bash
sudo docker run -it --name engine_test_4 engine_test_ubuntu_20.04_x86_64:done /bin/bash
第七步:停止
sudo docker stop engine_test engine_test_2 engine_test_3 engine_test_4
在mac上
命令 1:导入镜像(我已帮你执行完成)
docker load -i ./engine_test_ubuntu_20.04_x86_64.tar
# 输出:Loaded image: engine_test_ubuntu_20.04_x86_64:done
docker images
# engine_test_ubuntu_20.04_x86_64 done e05f66179232 ...
命令 2:运行它(你的 Mac 是 arm64,必须加 --platform linux/amd64)
① 交互式进入 bash(最常用,exit 退出即自动删除容器)
docker run -it --rm --platform linux/amd64 engine_test_ubuntu_20.04_x86_64:done
② 后台常驻 + 随时 exec 进去
docker run -dit --name ubuntu-test --platform linux/amd64 engine_test_ubuntu_20.04_x86_64:done
docker exec -it ubuntu-test bash
# 用完:docker stop ubuntu-test && docker rm ubuntu-test
③ 只跑一条命令就退出
docker run --rm --platform linux/amd64 engine_test_ubuntu_20.04_x86_64:done \
bash -c 'uname -m; . /etc/os-release; echo $PRETTY_NAME'
④ 挂载宿主机目录(把 Mac 的 ~/Downloads 映射到容器 /host)
docker run -it --rm --platform linux/amd64 \
-v /Users/joe/Downloads:/host \
engine_test_ubuntu_20.04_x86_64:done
⑤ 需要对外提供端口时(该镜像本身没声明暴露端口,按需自行映射)
docker run -it --rm --platform linux/amd64 -p 8080:80 engine_test_ubuntu_20.04_x86_64:done
我实测的结果(真实输出)
$ docker run --rm --platform linux/amd64 engine_test_...:done \
bash -c 'uname -m; . /etc/os-release && echo $PRETTY_NAME; ls /'
x86_64
Ubuntu 20.04.6 LTS
bin boot core crash dev etc figure_version home ...
$ docker exec ubuntu-test uname -m
x86_64 # 确认走的是 amd64 模拟
$ docker run --rm -v /Users/joe:/host ... bash -c 'ls /host'
Applications Documents Downloads ... # 目录挂载正常
几点必须知道
-
--platform linux/amd64建议永远带上。不加也能跑(Docker 会先用模拟),但会打印警告:WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) -
性能:这是 x86_64 镜像在 Apple Silicon 上通过 QEMU 模拟运行,CPU 密集任务会明显变慢(十几倍差距不奇怪)。若在 Docker Desktop → Settings → General 勾选 "Use Rosetta for x86_64/amd64 emulation",速度会好很多(需要重启 Docker)。
-
首次启动慢:模拟层初始化要十几秒,之后正常。
-
删除这个镜像(不需要时释放空间):
docker rmi engine_test_ubuntu_20.04_x86_64:done -
测试容器我已停掉并删除了,现在系统里只剩这个镜像本身和之前的
hello-world。
Auto-approve:Read, Commands, MCP
# 1) 先确认本地到底有没有,有就别再 load
docker images | grep engine_test
# 2) 直接运行(记住:不要 sudo,记得 --platform linux/amd64)
docker run -it --rm --platform linux/amd64 engine_test_ubuntu_20.04_x86_64:done
# 3) 万一真的要重新导入(先 cd 到 tar 所在目录)
cd "/Users/joe/ubuntu镜像"
docker load -i engine_test_ubuntu_20.04_x86_64.tar
# 1) 先确认本地到底有没有,有就别再 load
docker images | grep engine_test
# 2) 直接运行(记住:不要 sudo,记得 --platform linux/amd64)
docker run -it --rm --platform linux/amd64 engine_test_ubuntu_20.04_x86_64:done
# 3) 万一真的要重新导入(先 cd 到 tar 所在目录)
cd "/Users/joe/ubuntu镜像"
docker load -i engine_test_ubuntu_20.04_x86_64.tar

浙公网安备 33010602011771号