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 ...    # 目录挂载正常

几点必须知道

  1. --platform linux/amd64 建议永远带上。不加也能跑(Docker 会先用模拟),但会打印警告: WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)

  2. 性能:这是 x86_64 镜像在 Apple Silicon 上通过 QEMU 模拟运行,CPU 密集任务会明显变慢(十几倍差距不奇怪)。若在 Docker Desktop → Settings → General 勾选 "Use Rosetta for x86_64/amd64 emulation",速度会好很多(需要重启 Docker)。

  3. 首次启动慢:模拟层初始化要十几秒,之后正常。

  4. 删除这个镜像(不需要时释放空间):

    docker rmi engine_test_ubuntu_20.04_x86_64:done
    
  5. 测试容器我已停掉并删除了,现在系统里只剩这个镜像本身和之前的 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
posted @ 2026-08-07 09:54  流年中渲染了微笑  阅读(12)  评论(0)    收藏  举报