史上较全docker镜像制作流程(有基础镜像,非docker build)


用以记录docker镜像制作过程中遇到的问题

一、安装docker

参照这篇文档安装docker,并使docker可以非sudo运行

Ubuntu16.04 docker干净卸载与安装

#通过该命令查看docekr是否成功安装
docker --version
Docker version 19.03.2, build 6a30dfc

二、拉取Ubuntu16.04基础镜像

Ubuntu16.04 amd64

docker pull ubuntu:16.04
#运行容器,i:交互式操作,t:终端
docker run -it ubuntu:16.04
#进入已经运行的容器
docker exec -it [id] /bin/bash

Ubuntu16.04 aarch64

Docker Hub 上可以找到各种非 x86_64 平台的镜像,但是在x86上直接运行会报错

在 x86_64 平台上缺少运行 arm32v7 的 Python 解释器所需要的“环境依赖”,值得庆幸的是在 Linux 上我们可以用 QEMU 来做到跨平台运行,QEMU 的 User-mode emulation 对于容器技术来说是最适合的模式

#在 https://github.com/multiarch/qemu-user-static/releases 下载qemu-xxx-static文件,注意要根据自己平台选择,如arm64是qemu-aarch64-static,arm32是qemu-arm-static,选错文件后面的步骤会失败
sudo cp qemu-aarch64-static /usr/bin/
chmod +x /usr/bin/qemu-aarch64-static
docker run --rm --privileged multiarch/qemu-user-static:register
docker run -it -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/ubuntu
#指定Ubuntu16.04 host网络
docker run -it --net host --name u16_aarch64 -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/ubuntu:16.04

docker容器重命名

# docker rename 原ID/NAME 新NAME
docker rename angry_dirac arm64

启动进入容器

docker start arm64
docker exec -it arm64 bash

三、如果docker内部ping不通网络

  • 在docker内提示错误 bash: ping: command not found 或 bash: ifconfig: command not found的解决方法
apt-get update
apt install iputils-ping
apt install net-tools

四、环境搭建

安装python

#直接安装会报错
#E: Unable to locate package python
apt-get install python-software-properties  
apt-get install software-properties-common
add-apt-repository ppa:jonathonf/python-3.6
apt-get update

apt-get install vim gcc g++

apt-get install ncurses-dev //menuconfig 依赖

yum install ncurses-devel // centos 下menuconfig 依赖

apt-get install lsb-core //解决arm-linux- 找不到

apt-get install u-boot-tools //mkimage 工具

apt-get install autoconf automake libtool //.autogen.sh 失败

apt-get install lzop //recipe for target ‘arch/arm/boot/compressed/piggy.lzo’ failed

sudo apt-get install lib32c-dev

sudo apt-get install lib32stdc++6 //make_ext4fs libstdc++.so.6:

安装sudo

docker基础容器中bash: sudo: command not found问题解决

apt-get install sudo

五、提交镜像

#OPTIONS说明:
#-a :提交的镜像作者;
#-c :使用Dockerfile指令来创建镜像;
#-m :提交时的说明文字;
#-p :在commit时,将容器暂停
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
#镜像重命名
# 命令格式:
 docker  tag  镜像id  仓库:标签
#或:
 docker  tag  旧镜像名  新镜像名

六、删除docker镜像

# 删除一个或多个image
docker rmi <image ID>
#强制删除
docker rmi -f <image ID>
#删除所有镜像
docker rmi $(docker images -q)
#删除所有未运行的docker容器
docker rm $(docker ps -a -q)
#删除所有停止运行的容器
docker container prune

七、查看dockerlog

 ubuntu(16.04)   journalctl -u docker.service

补充:

目前想到的Docker构建ARM镜像方法有如下几种。第三种就类似交叉编译。

  1. 使用ARM主机,安装ARM版本的Docker,docker build出来的就是ARM版本的镜像。
  2. 使用Linux的虚拟化软件,模拟ARM芯片+ Linux,例如qemu。
  3. 使用Docker试验功能buildx,可以构建多平台的镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值