Docker从安装到后续的基本使用

粗犷的理解,docker可以看为更加高级的virtual machine

Docker的安装

official guide

Official Install docker engine
配合理解使用Docker install from CSDN

免sudo使用docker

sudo groupadd docker
sudo gpasswd -a $(USER) docker
sudo service docker restart

最后登入注册好的docker hub账号

docker login

Docker的images和container的粗犷理解和使用

粗犷的理解:
images就是创造的环境,layer by layer,可通过dockerfile来搭建的环境,可以理解为一个class,也就是一个类
container就是运行这个images环境的,可以看成类的实例化,赋值给images这个类
各个部分可以进行的基本操作的overview图,摘选自知乎老范
各个部分可以进行的基本操作

images的基本操作

1. usually,images都是从编写的dockerfile来创建,dockerfile可以理解成编写的cmake file

docker build -t (image name) .

后面需要接一个 . 意思是找到该目录下的dockerfile,more details can be found 菜鸟教程

2. 删除images

# list images
docker images
# remove images
docker rmi (image id)

3. image的发布

# make sure login in docker
docker push (dockerhub id)/(image name)
# Sometimes, you need rename image name
docker tag imageid (dockerhub id)/(image name)
# remove original tag, here the tag mush be specified. otherwise, it will fail
docker rmi (imagename):tag

Container的基本操作

1. 列举container

docker ps
docker ps -a

2. 运行一个container

docker run -it (image name)

这里 -i 是指交互模式运行,-t是指重新分配一个伪输入终端

通常为了让docker在后台也能运行,exit的时候不会停止运行,我们用另一种方式来run container

# run container
docker run -itd (image name) /bin/bash

# check running docker
docker ps

# enter container
docker exec -it (container ID) /bin/bash

更多的解释可查看Docker Run 命令

3. start/stop/rm/restart container

docker start (container ID)

docker stop (container ID)

docker restart (container ID)

docker rm -r (container ID)

# remove all conatiners
docker rm $(docker container ls -aq)

More details:
Docker的镜像和容器的基本操作

Dockerfile的编写

Dockerfile的编写是创建docker环境的最重要一步,基本需要的package之类的都是在这一层一层的搭建起来的,可以通过pip ,apt-get等等来搭建环境。
一般通常来说,都是建立在官方的一些base image来进一步搭建。

1. dockerfile的基本结构

下面是一个带pytorch的环境的dockerfile

FROM nvcr.io/nvidia/pytorch:19.05-py3

LABEL maintainer="xxx@qq.com"
LABEL version="1.0"
LABEL description="hello docker"

WORKDIR /workspace

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3-tk python-pip git tree

RUN python -m pip install --upgrade pip
RUN python -m pip install numpy
RUN python -m pip install torch==1.4.0

COPY path/to/localfile path/to/dockerdir

FROM

第一行必须是from来import一个base image。可以通过在docker hub中找一些base image. 通常还有什么ubuntu

LABEL

就是一个docker创造人的相关信息

WORKDIR

设置的工作目录

RUN

一层一层的执行一些命令,有点类似在terminal中的command line
这里的DEBIAN_FRONTEND=noninteractive 是说,执行的时候自动同意,最快速的执行命令
安装了pip,后面的层就可以用pip来打包上去

COPY

这里是指复制local目录的文件到container中

2. 运行

2.1 build image

docker build -t hello-test .

#OR
docker build -t hello-test -f path/to/dockerfile

2.2 GPU container toolkit

因为我想用的是gpu based pytorch,所以还需要安装一个nvidia container toolkit

# Add the package repositories
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

检查是否安装好,出现你的gpu就可以了

sudo docker run -it --rm --gpus all ubuntu nvidia-smi -L

2.3 docker run

docker run --rm -it --gpus=all hello-test

Finally done!!

More details:
编写dockerfile

Docker的磁盘挂载

参考
作者说这是bind mounting挂载的方式进行数据同步,操作同一个目录,很方便

docker run -v /home/xxx:/root/yyy

Okay! 目前记录的docker的一些基本操作,对于我的意义还主要是设置好的环境容器。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值