Docker 学习
Docker 学习
之前一直听说容器可以免去配置环境的麻烦,但是一直没有机会接触,现在刚好有机会可以使用。
三大基础
镜像、容器、仓库
类比的话:镜像是类(iso),容器是实例(操作系统),仓库类似于git的仓库。
镜像的构建是一层层的继承而来的,镜像和容器都是文件,容器退出的时候容器文件依然存在。除非手动使用-rm指定,才会删除。
从仓库下载镜像,加载镜像后进入容器,容器保存后构成镜像,镜像推送至仓库。
命令
加载镜像,进入一个新的容器:docker run --name mydocker image:tag command
实例 摘自:https://yeasy.gitbooks.io/docker_practice/image/pull.html
1 | docker run -it --rm \ |
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