ubuntu虚拟机下制作docker镜像

1、安装docker

执行以下命令在Ubuntu虚拟机中安装Docker:

sudo apt update
sudo apt install docker.io

安装完成后docker服务默认是直接启动的:

可以查看当前的镜像和安装的容器均为空:

2、虚拟机平台的docker镜像制作

虚拟机最好用64位的,用32位的编写完Dockerfile拉取镜像失败了。。。

2.1 编写Dockerfile

新建一个目录,在目录下创建Dockerfile文件,文件内容如下:

# 指定平台
FROM ubuntu:latest

# 安装vim工具
RUN apt-get update && apt-get install -y vim

# 设置工作目录
WORKDIR /app

# 将程序文件复制到镜像中
COPY . /app

# 设置镜像的入口命令
CMD ["/bin/bash"]
2.2 制作image

Dockerfile文件表示创建一个和虚拟机同平台的ubuntu docker镜像,同时预装vim命令,执行以下命令创建镜像:

docker build -t pc_image .

制作完成后执行docker images查看镜像:

root@Katarina:/home/aka_li/linux/docker/MyDocker# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
pc_image     latest    0163c835ddc5   8 seconds ago   183MB
2.3 安装查看

执行docker run --name my-pc-container -it pc_image命令安装镜像,安装成功后自动进入容器,我们预装了vim也是可以使用的,使用exit可以退出:

root@Katarina:/home/aka_li/linux/docker/MyDocker# docker run --name my-pc-container -it pc_image
root@743325ef6a9f:/app# 
root@743325ef6a9f:/app# vim a.c

另起一个终端使用docker ps可以查看当前容器状态:

3、开发板平台的docker镜像制作

arm开发版和虚拟机是不同平台的,镜像制作需要指定平台。

3.1 编写Dockerfile

新建一个目录,在目录下创建Dockerfile文件,文件内容如下:

# 指定平台
FROM arm32v7/ubuntu:latest

# 设置工作目录
WORKDIR /app

# 将程序文件复制到镜像中
COPY . /app

# 设置镜像的入口命令
CMD ["/bin/bash"]
3.2 制作image

将之前给开发板使用的picocom也拷贝到当前目录,该串口工具在虚拟机系统下是无法运行的:

使用以下命令制作镜像:

docker build --platform linux/arm/v7 -t board-image .

使用以下命令安装镜像:

docker run --platform linux/arm/v7 -it board_image

很不幸,安装不上,在虚拟机上运行的话需要qemu-user-static提供不同架构之间的转换功能,同时还要装一个qemu-user-static的docker镜像,顺序执行以下命令:

sudo apt install -y qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

然后重新使用安装命令安装,安装成功后进入容器,此时可以picocom串口工具是可以使用的:

3.3 导出镜像至开发板

使用以下命令将镜像打包为tar包,将tar包拷贝至开发板即可:

docker save -o board-image.tar board-image
3.4 镜像使用

开发板上也要和虚拟机一样提前安装docker服务,安装命令不再赘述,在开发板上使用以下命令加载镜像:

docker load -i board-image.tar

在开发板上使用以下命令安装镜像:

docker run --device=/dev/ttySZ4:/dev/ttySZ4 --name myboard1 -it board-image

其中--device=/dev/ttySZ4:/dev/ttySZ4是映射宿主机下的一个串口驱动文件给容器内的程序使用,另起一个终端可以查看容器安装成功:

此时预装在容器中的串口调试工具也可以正常使用:

3.5 删除命令

前面主要是打包和安装的命令,补充几个删除命令:

# 查看当前容器(包括未启动)
docker ps -a
# 删除容器
docker rm 容器名
# 删除镜像
docker rmi 镜像名

  • 38
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 58
    评论
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值