docker容器、镜像的基本操作

docker容器、镜像的基本操作


利用镜像创建一个新的容器

sudo docker run --shm-size="8g" --gpus all --net host -it -v /home:/home --name ubuntu-16.04-ly ubuntu:16.04
sudo nvidia-docker run -it -p 8888:8888 -v /home/luyang:/home --name luyang-deepo ufoym/deepo:all-jupyter-py36-cu90
sudo docker run -u 1000 -h ubt18_ly  --shm-size="8g" --gpus all  -it -p 8887:8887 --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -v /home:/home --name ubtDis-16.04-ly b7926e821da5

注意!!!如果要在容器中使用GPU,就必须使用nvidia-docker来创建容器。或者安装toolkits,详情见官网

  • nvidia-docker: 必须使用该命令创建才能使用显卡
  • -u: 以真实机的uid账户创建容器
  • -h: 容器内设备的名字
  • –net host: 和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
  • -p 8888:8888:端口映射,将本地的端口8888映射成docker容器中的端口8888
  • -v /home/luyang:/home:将本地的目录/home/luyang映射成docker容器中的目录/home
  • –name luyang-deepo:将容器命名成luyang-deepo
  • –shm-size=“8g”: /dev/shm的大小。格式为:。number必须大于0。unit可选,可以是b,k,m或g。如果不指定unit,系统默认使用字节。如果此参数不指定,默认使用64m。
  • –privileged:使用该参数,container内的root拥有真正的root权限。
    否则,container内的root只是外部的一个普通用户权限。
    privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
    甚至允许你在docker容器中启动docker容器。

进入容器出现 I have no name!

  • 重新以root进入容器
docker exec -it -u root ubt20_summer bash
  • 查看真实机的/etc/passwd, 找到summer用户信息,拷贝到容器中的/etc/passwd
summer:x:1001:1001::/home/summer:/bin/sh
  • 查看真是既的/etc/group, 找到summer的组信息,拷贝到容器中的/etc/group
summer:x:1001:
  • 退出后重新进入即可
docker exec -it ubt20_summer bash

查看删除容器

  • 查看正在运行的容器,以下两条命令皆可
sudo nvidia-docker ps
sudo docker ps

这里写图片描述

  • 查看所有容器,以下两条命令皆可
sudo nvidia-docker ps -a
sudo docker ps -a

这里写图片描述

  • 删除容器,假设要删除的容器的NAMES是 friendly_davinci
sudo nvidia-docker rm friendly_davinci

退出、运行容器

  • 在容器内部关闭容器

这里写图片描述

  • 在容器外部关闭容器
sudo docker stop luyang-deepo
  • 后台启动容器
sudo docker start luyang-deepo
  • 进入容器
    推荐使用exec命令,多个终端同时进入容器不会有干扰,如果多个终端使用attach同时进入容器,多个终端则会同步显示
sudo docker exec -it luyang-deepo bash
sudo docker attach luyang-deepo
  • 以交互模式启动容器
sudo docker start -i luyang-deepo

查看删除镜像

  • 查看镜像
sudo nvidia-docker images

这里写图片描述

  • 删除镜像

假设要删除的镜像是"hello-world",可以看到其ID是4ab4c602aa5e,在删除镜像前需要将相应的容器删除

sudo nvidia-docker rmi 4ab4c602aa5e

将容器提交镜像

当容器改动比较大时,可以将容器保存为镜像,容器列表如下
这里写图片描述
假设需要将ID为7b93b8ad4d4d的容器提交镜像,命令如下

sudo docker commit 7b93b8ad4d4d tensorflow:test

这里写图片描述


将镜像保存至本地

sudo docker save -o mytf.tar tensorflow:test

这里写图片描述
如上图所示,mytf.tar是镜像tensorflow:test被打包之后的文件,可以很方便的拷贝


将被打包的镜像导出

sudo docker load < mytf.tar

参考文章

此次下载的的docker镜像详细信息
docker镜像的导入和导出
docker基础知识之挂载本地目录
docker的常用命令汇总

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值