docker之构建镜像并使用

背景

docker太好用了,把自己使用的环境打包成镜像,随用随取,也不用担心把ubuntu折腾崩掉,新世界nice!

必须记录下docker构建镜像的步骤,防止自己忘掉!神器!

使用docker commit命令构建镜像

  1. 首先有一个已经在使用的容器,比如基于ubuntu20.04搭建的cpp编译环境:ubuntu_cpp
  2. 使用docker commit命令以ubuntu_cpp容器来构建镜像,如下所示。其中,-m用于描述提交信息,-a用于描述作者。用户仓库的命名由用户名、仓库名两部分组成,例如azhen/ubuntu_cpp_image,也可以只是用仓库名,例如:azhen/ubuntu_cpp_image.
# 创建镜像azhen/ubuntu_cpp_image, 其中tag为1.0
docker commit -m "base line" \
    -a "Azhen" \
    ubuntu_cpp azhen/ubuntu_cpp_image:1.0

至此一个包含cpp编译的镜像就已经构建完毕了,后续我们就可以直接通过该镜像来创建容器进行使用。

使用docker save将镜像保存到本地

创建好镜像后,有时候需要把log本地打包发给有缘人,这时候我们需要把镜像分批压缩到本地。

# 将docker镜像分批压缩
docker save azhen/ubuntu_cpp_image:1.0 |gzip - | split -b 2500m - ubuntu_cpp_image-1.0_0604.tar.gz

推送至Docker Hub

除了使用docker save把镜像分卷打包到本地, 还可以将镜像推送到Docker Hub,也可以很方便地共享给有缘人。需要注意的是,仓库名称(azhen/ubuntu_cpp_image)中的用户名(azhen)必须和Docker Hub账号的用户名保持一致,否则会推送失败。

# 登陆 Docker Hub 账号,并输入账号、密码
docker login

docker push azhen/ubuntu_cpp_image:1.0

使用docker run生成容器

#将镜像压缩分包组成azhen/ubuntu_cpp_image:1.0镜像压缩包

 cat ubuntu_cpp_image-1.0_0604.tar.gza* >> ./ubuntu_cpp_image-1.0_0604.tar.gz

挂载azhen/ubuntu_cpp_image:1.0 docker镜像

docker load -i ubuntu_cpp_image-1.0_0604.tar.gz

镜像运行启动容器,~/home/azhen/ws需修改成自己本地项目路径

docker run --gpus all -itd  --privileged --cap-add=SYS_ADMIN --device=/dev/dri -v /tmp/.X11-unix:/tmp/.X11-unix -p 7086:22 -v $HOME/.Xauthority:/root/.Xauthority -v ~/home/azhen/ws:/home/azhen/workspace -e TZ="Asia/Shanghai" -e DISPLAY=$DISPLAY --name  ubuntu_cpp_image-1.0_0604 azhen/ubuntu_cpp_image:1.0 /bin/bash

如果需要图形化界面,启用X server访问权限

xhost +

以root用户进入容器(docker exec 进入容器可以使用图形界面,ssh登录不能使用图形界面)

docker exec -it ubuntu_cpp_image-1.0_0604 bash

愉快的使用吧!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值