背景
最近开发cicd项目,在流水线中需要自定义一些镜像进行特殊业务处理。所以需要构建自定义镜像。
本文是Docker中安装Ubuntu容器,然后在这个Ubuntu容器中再安装Docker
系统环境
centos7
docker 20.10.8
步骤
- 拉取镜像、启动容器、复制文件到容器内
# 1. 下载官方ubuntu
docker pull ubuntu:20.04
# 2. 运行容器 ub1
docker run -it --name ub1 ubuntu:20.04
# 按下 Ctrl + P + Q 让容器后台运行
# 3. 将家目录下的必要文件复制到容器中
docker cp .bash_logout ub1:/root
docker cp .bashrc ub1:/root
docker cp .profile ub1:/root
- 安装必备软件、配置容器
# 4. 进入容器
docker attach ub1
# 5. 更新软件源并安装必备软件
apt update & apt install -y vim curl net-tools iproute2 iputils-ping
# 6. 进入家目录
cd ~
# 7. 修改复制进来的文件的所有者
chown root.root .bash* .profile
# 8. 设置用户名高亮:进入 .bashrc,追加下面内容
vim ~/.bashrc
# ================ 追加的内容 start ===============
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34;40m\]\u\[\033[00;00;40m\]@\[\033[01;33;40m\]\h\[\033[00;31;40m\]:\[\033[00;00;40m\]\w \[\033[01;32;40m\]\$ \[\033[01;36;40m\]'
# ================ 追加的内容 end ===============
# 8. 更新配置信息
source ~/.bashrc
- 安装Docker
# 9. 安装Docker
# 9.1 移除旧版本
apt-get remove docker docker-engine docker.io containerd runc
# 9.2 安装工具包
apt update & apt-get install -y ca-certificates curl gnupg lsb-release
# 9.3 添加 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 9.4 设置Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 9.5 安装 Docker Engine
apt update & apt-get install -y docker-ce docker-ce-cli containerd.io
# 9.6 安装后需要选时区
选择亚洲-----再选择上海
# 10. 查看Docker
# 发现只有 Docker Engine
docker version
时区选择
此时可能会出现一下问题
bash: sudo: command not found
容器内避免使用root,建立新用户执行命令 使用sudo ,提示如下
bash: sudo: command not found
解决办法
apt-get update
apt-get install sudo
执行docker命令会出现这样的问题
- 打包镜像、重新启动容器,挂载/var/run/docker.sock路径
# 11. 先保存当前镜像
docker commit -a "peishunwu" -m "add docker and tools" d5884406725a dockerubuntu
# 12. 运行新的容器
docker run -itd --name ubuntu_trivy2 -v /var/run/docker.sock:/var/run/docker.sock b18056c8c1f6 /bin/bash
-a:创建者名字,自定义
-m:提交内容