【Docker】使用指南

本文目标

介绍docker基本知识
学会打包一个自定义的docker并让其他人可以成功使用
docker进阶知识积累

参考资料

docker基本概念

docker诞生背景

docker诞生就是为了解决开发环境和多软件版本不一致的问题。


docker不是虚拟机

docker安装

sudo wget -qO- https://get.docker.com | sh
sudo usermod -aG docker usernamexxx

docker基本概念

docker总体架构:
注意docker daemon,负责管控命令执行


image.png

docker中有这样几个概念:

  • dockerfile:
  • image:
  • container:

实际上你可以简单的把image理解为可执行程序,container就是运行起来的进程。

那么写程序需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是"编译器"。

因此我们只需要在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

具体的使用方法就不在这里赘述了,大家可以参考docker的官方文档,那里有详细的讲解。

实战

docker常用指令

docker pull # 获取docker image

docker run -p... #运行container 端口映射

docker run -v xxx(local path):xxx(docker 内部目录)# 目录挂载

docker run -it # -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。

docker commit # 保存改动为新的image

docker build # 创建docker image

docker create # 

docker attach # 进入容器(不是进入image)

docker rm [docker id] # 删除docker container

docker rmi [docker image id] # 删除docker image

docker ps # 查看正在运行的docker

docker ps -a # 查看docker运行的历史

docker images # 查看本地已有的docker镜像

docker inspect # 查看image内部具体信息

docker cp # 在host和container之间拷贝文件

docker stop # 停止container

docker search # 在远程仓库docker hub搜索镜像

docker login # 登录docker hub

docker push # 将本地镜像上传到docker hub


build自定义docker

除了用docker commit命令,还可以编写Dockerfile(约定俗称是这种写法)来定义和保存自己的docker。

FROM xxx # 设置基础镜像

MAINTAINER xxxx # 著名文件作者/维护者

RUN xxx # 执行命令

COPY xxx # 拷贝文件

ADD xxx # 添加文件

ENTRYPOINT xxx # 给container指定执行入口

EXPOSE xxx # 暴露端口

CMD xxx # 执行命令,给container指定执行入口

WORKDIR # 指定运行命令的路径

ENV # 为container里面环境的设置环境变量

USER # 指定执行container的用户

VOLUME # 指定container执行时挂在的卷

Dockerfile中的每一行都产生一个新的层,也就是说每一行的命令都会产生一个新的docker id。

Docker镜像为深度学习训练模型提供了一个方便的环境,用户可以在不影响系统环境的情况下实现自己任意的环境搭建,这里展示基本docker环境搭建过程。

  • 任务需求:比如我现在想要在torch1.7的docker(这里简称它为base docker)基础上再安装一些自己想要安装的包,构建出一个新的docker。
  • 大致逻辑:先把想要的base docker pull到本地,在本地进入此docker,再在这docker里安装自己想要的包,都安装好后,退出当前docker,把这个docker commit到一个新的docker(自己的docker)上,再push自己的docker到dockerhub repo。
  • 具体步骤:

1)去dockerhub上找一个torch1.7的docker,pull下来,比如我们从torch官方的docker tags里面找到我们想要的torch1.7 develop版本。找到后,在本地运行:

docker pull pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel

上述操作是将这个docker先拉到本地。

2)进入docker:

docker run --runtime=nvidia -it --name=test --ipc=host --net=host pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel

3)进入docker后就可以尽情地配置自己的环境了。

4)配置完后,“exit”退出docker。

5)将配置好的docker commit到自己的docker(相当于复制了一份到自己的docker)。

 docker ps -a    # 查看并找到配置好的docker的id
docker commit [docker id] geekyutao/foresee-rl:v0    # geekyutao/foresee-rl:v0是我自己在dockerhub上创建的repo

6)在本地登录dockerhub,再把本地的自己的docker push到dockerhub上。

docker login -u [username] -p [password]    # 如果报错的话,很可能是因为机器默认使用了一个docker证书
# 如果报错:删除/usr/local/bin/下的docker证书再登录
# sudo rm /usr/local/bin/docker-credential-pass

docker push geekyutao/foresee-rl:v0

7)完成!再把操作期间遗留的docker和docker image都删了。(借助docker基本操作)

image

docker进阶

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342