Docker 学习

之前一直听说容器可以免去配置环境的麻烦,但是一直没有机会接触,现在刚好有机会可以使用。

三大基础

镜像、容器、仓库

类比的话:镜像是类(iso),容器是实例(操作系统),仓库类似于git的仓库。

镜像的构建是一层层的继承而来的,镜像和容器都是文件,容器退出的时候容器文件依然存在。除非手动使用-rm指定,才会删除。

从仓库下载镜像,加载镜像后进入容器,容器保存后构成镜像,镜像推送至仓库。

命令

加载镜像,进入一个新的容器:docker run --name mydocker image:tag command

实例 摘自:https://yeasy.gitbooks.io/docker_practice/image/pull.html

1
2
3
docker run -it --rm \
ubuntu:18.04 \
bash

docker run 就是运行容器的命令 从镜像中新建一个容器

  • -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
  • --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
  • ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。
  • bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash
  • --name 后面跟创建的容器的名字。

退出: 在容器中exit

进入容器:

docker exec 进入一个已有的容器。 (容器需要已经运行)

容器的复制dcoker cp

docker ps 列出启动容器 docker ps -a 列出所有容器包括关闭的。

启动之前关闭的容器docker start container-name

需要先启动容器,才能执行docker exec -it container-name bash

列出所有镜像 docker images

删除镜像 docker rmi img-name

数据挂载 docker run --mount type=bind,source=/src/webapp,target=/opt/webapp

容器保存为镜像 docker commit hash_id img_name

实例

sudo docker run -it --rm --gpus all -v /home/test/:/home/test aibench/pytorch:v1 bash

需要注意的是所有参数都应放在启动的镜像之前,不然报错。

端口映射

https://blog.csdn.net/wanglei_storage/article/details/48471753

参考

https://juejin.im/entry/5b19e350e51d45069f5e1d66

https://yeasy.gitbooks.io/docker_practice/basic_concept/container.html

https://blog.csdn.net/u010246789/article/details/53958662