ubuntu 使用docker以及在X86上交叉编译arm版本ubuntu

您所在的位置:网站首页 ubuntudocker启动 ubuntu 使用docker以及在X86上交叉编译arm版本ubuntu

ubuntu 使用docker以及在X86上交叉编译arm版本ubuntu

2023-08-20 09:28| 来源: 网络整理| 查看: 265

目录 前言在ubuntu中一键安装docker在docker中安装ubuntudocker免sudo docker容器操作启动容器启动已停止运行的容器查看容器进入容器重新启动停止的容器多个终端进入容器导出和导入容器删除容器容器挂载 docker 镜像列出镜像列表删除镜像设置镜像标签基于已有的容器创建自己需要的image导出镜像 在x86上交叉编译arm/ubuntu使用模拟器修改bash文件 参考

前言 在ubuntu中一键安装docker curl -sSL https://get.daocloud.io/docker | sh 在docker中安装ubuntu docker pull ubuntu docker免sudo 创建一个docker组 sudo groupadd docker 添加当前用户到docker组 sudo usermod -aG docker $USER 登出验证docker命令是否可以运行 docker run hello-world docker容器操作 启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it ubuntu /bin/bash

参数说明:

-i: 交互式操作。 -t: 终端。 ubuntu: ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 --rm,容器退出时自动清理容器内部的文件系统 -v : 挂载

要退出终端,直接输入 exit:

root@ed09e4490c57:/# exit 启动已停止运行的容器

查看所有的容器命令如下:

docker ps -a

使用 docker start 启动一个已停止的容器:

docker start b750bbbcfd88 ## 停止一个容器 停止容器的命令如下: ```c docker stop

停止的容器可以通过 docker restart 重启:

docker restart 查看容器 docker ps [-a] [-l]

省略 列出正在运行的容器

-a all 列出所有容器

-l latest 列出最近的容器

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

docker attach docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

attach 命令

下面演示了使用 docker attach 命令。

docker attach 1e560fca3906 重新启动停止的容器 docker start [-i] 容器名

实际使用时,没必要每次都重新启动一个新的容器,我们可以重新启动之前创建的容器,现实情况也需要我们这样使用。

docker start -i haha 多个终端进入容器

对于已经开启的容器cd3b79a85d7e

使用docker exec -it 容器id /bin/bash命令进入容器即可

docker exec -it cd3b79a85d7e /bin/bash 导出和导入容器 导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

docker export 1e560fca3906 > ubuntu.tar 导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

cat docker/ubuntu.tar | docker import - test/ubuntu:v1 删除容器

删除容器使用 docker rm 命令:

docker rm -f 1e560fca3906 容器挂载

docker挂载本地目录的方法总结:

Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。

譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:

docker run -it -v /test:/soft centos /bin/bash

这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

docker 镜像 列出镜像列表

我们可以使用 docker images 来列出本地主机上的镜像。

各个选项说明:

REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小 删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world 设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

docker tag 860c279d2fec runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

基于已有的容器创建自己需要的image sudo docker commit -m "Imformation" -a "Author" 0b2616b0e5a8 ouruser/sinatra:v2

其中,-m表示一个commit message,-a 表示author的信息,指定创建的new image来自于container id 0b2616b0e5a8,此外还为新建的image定义一个组合名称ouruser/sinatra:v2。

使用docker images可以看到新建的images

docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MB ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB 导出镜像 docker save -o centos-httpd-docker-image.tar centos:httpd

使用加载本地镜像

docker load -i centos-httpd-docker-image.tar 在x86上交叉编译arm/ubuntu 使用模拟器

x86 无法运行 arm 平台程序,可以通过 qemu-arm-static 可以达到目的。在 ubuntu 上安装:

sudo apt install qemu-user-static

容器内: 下载arm版本的基础镜像,使用上节方式运行容器,再在其中进行编译,至于源码及压缩包,使用docker cp命令即可。

# 64位的: docker run -it --rm -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/ubuntu:16.04 bash # 32位的: docker run -it --rm -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static arm32v7/ubuntu:16.04 bash

进入容器后用 getconf LONG_BIT 可确诊系统位数。在此容器中安装gcc、make等均为arm版本,此时无须再指定 CROSS_COMPILE 变量。

容器外 :编写 Dockerfile 文件,基于arm版本的基础镜像,其它如apt-get install无须修改。

创建文件 Dockerfile.arm,以示区别:

ARG BUILD_FROM=arm64v8 FROM ${BUILD_FROM}/ubuntu:16.04 RUN apt-get update RUN ...

注意,此处为了兼容不同版本的arm,因而使用了参数。

首先运行 qemu-user-static 镜像,否则无须执行 arm 版本的构建:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes docker build -t metaverse -f Dockerfile.arm --build-arg BUILD_FROM=arm64v8 . 修改bash文件 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下 wget http://voipac.com/downloads/pxa/toolchain/bin/arm-linux-gcc-3.4.1.tar.gz

或者直接通过网址下载 http://voipac.com/downloads/pxa/toolchain/bin/arm-linux-gcc-3.4.1.tar.gz

解压 arm-linux-gcc-3.4.1.tar.bz2 tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下 cd usr/local/ cp -rv arm /usr/local/

现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了    4. 修改环境变量,把交叉编译器的路径加入到PATH。

vim /etc/bash.bashrc

在最后加上:

export PATH=/usr/local/arm/3.4.1/bin:$PATH export PATH 立即使新的环境变量生效,不用重启电脑: source /root/bash.bashrc 检查是否将路径加入到PATH: echo $PATH

显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

测试是否安装成功 arm-linux-gcc -v7.

报错的话执行以下命令再试一次

sudo apt-get install lib32z1 参考

https://www.latelee.org/docker/armdocker-cross-comiple-for-arm-on-x86.html https://www.cnblogs.com/gary-guo/p/6085094.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3