开始Docker使用速成之旅吧
- Docker 速用教程
- 多种方法---找到你心仪的镜像并安装它
- 如何将本地拉取的镜像打包上传到没网的服务器上?
- 开始容器使用之旅吧
- 查看已经安装的镜像
- 找到已经运行的容器
- 进入已有container容器
- 容器里和容器外的如何数据互通(数据映射)
- 删除我们不需要的容器和镜像
- 保存更新对容器的操作
- 容器中使用gpu
- Reference
Docker 速用教程
最近在使用Docker,写个简单易懂的文章,希望能帮到别人,快速上手docker。
多种方法—找到你心仪的镜像并安装它
我总结了三种方法
1.在DockerHub网页里搜索,页面里会有docker的详细介绍,可以直接通过命令进行拉取安装。比如下图,使用右下方里的命令docker pull hello-world,就可以把这个镜像拉下来啦,是不是很简单。
2.还可以用docker search + dockerName命令,寻找你需要的镜像。如下图所示。
3.使用你找到项目里的dockerfile, 自己去build一个镜像吧。
- 使用当前目录的 Dockerfile 创建镜像,镜像名字为mm/detection:v1,命令如下。
```bash
| docker build -t mm/detection:v1
```
- 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
```bash
| docker build github.com/file/docker-firefox
```
- 也可以通过 -f Dockerfile 文件的位置:
```bash
| docker build -f /path/to/Dockerfile
```
如何将本地拉取的镜像打包上传到没网的服务器上?
保存镜像
(如果以上步骤完成完美,可以忽略次条及下一条)
有时候会遇到网不好,或者没网的情况,那么直接用命令拉起镜像变得很难。便可以在别的网好的地方,下好镜像,传到需要的地方。用下面的命令,docker save -o 加上要保存成的镜像名称,后面加上镜像名字,就可以把镜像存下来啦。
| docker save -o ImageFileName.tar ImageName
载入镜像
用docker load 命令将刚刚保存下的镜像,进行导入吧。命令如下:
$ sudo docker load --input ImageFileName.tar
或者可以用到
$ sudo docker load < ImageFileName.tar
开始容器使用之旅吧
查看已经安装的镜像
- docker images可以查看我们已经安装的Image镜像
| docker images
使用例子如下:
在列出信息中,可以看到几个字段信息:
- 来自于哪个仓库,比如 bitxiong/tsn
- 镜像的标记,比如 latest
- 它的 ID 号(唯一)
- 创建时间
- 镜像大小
其中镜像的 ID 唯一标识了镜像
启动Container,开始运行我们的镜像吧
- 使用命令docker run 加上镜像名称,可以运行我们的镜像,产生container。命令如下图所示:
docker run -t -i imageName /bin/bash
使用例子如下:
在这里解释一下’-i’ 和’-t’. ‘-t’是加了tag. 这里加了这两个,可以让我们在terminal里交互式的操作container。可以看到容器里的文件,对其进行操作。
找到已经运行的容器
使用命令docker ps ,可以看到已经运行的容器,这里CONTAINER ID是唯一的,同一个镜像可以有多个已经运行的容器,用来区别。
| docker ps
使用例子如下:
docker ps -a 可以看到更详细的运行容器情况。
| docker ps -a
进入已有container容器
进入已经运行的容器吧。这里就用到了CONTAINER ID,可以唯一表示容器,在docker exec -it 后加上CONTAINER_ID 加上/bin/bash,便可以重新进入容器里拉。
| docker exec -it CONTAINER_ID /bin/bash
使用例子如下:
容器里和容器外的如何数据互通(数据映射)
想要在容器里使用容器外的数据,那么就需要让容器找到容器以为的数据路径。这里用到了docker run -v 这个命令,-v 后面加上<(我们想要放到容器里的)宿主机目录>:<容器目录>,这样宿主机目录就会放到容器目录下了,在交互模式里,就可以在容器目录下看到宿主机目录的文件了,是不是很方便啊,没懂的可以看以下例子:
比如,我们想把主机里/root/data/picture里的文件在容器里运行,但是容器和主机是隔离的,我们在容器里找到我们想放这些文件的目录,比如是/app/data下吧,我们就可以用上么的命令,把/root/data/picture 的文件都放到/app/data 里拉。命令例子如下:
docker run -v /root/data/picture:/app/data /bin/bash
删除我们不需要的容器和镜像
使用docker rm 加上容器ID便可以删除我们不需要的容器了,当删除不掉的时候,可以加上–force强制删除哦。
删除container
docker rm CONTAINER_ID
强制删除container
docker rm --force CONTAINER_ID
保存更新对容器的操作
当我们对容器里进行更新后,希望保存这些操作到镜像,可以commit操作到原有的镜像或者新的镜像,用如下命令。若想保存更改到原有镜像,在REPOSITORY[:TAG]中可以填写原有镜像。若想保存为新的镜像,可在这里写成心仪的镜像名和Tag。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
容器中使用gpu
使用如下代码,可以把gpu映射到容器中使用:
docker run --gpu all imageName