Docker日常
安装
参考之前的文章
常用命令
运行
1 | docker run -itd <your_container_name> |
其中
-i 指以交互模式运行终端
-t 为容器分配一个伪终端 (-i -t通常一起使用
-d 后台运行容器
查看容器
1 | docker ps (-l) (-a) |
其中
不添加可选参数列出的是正在运行的容器
-l 列出最近添加的容器
-a 列出所有容器 包括停止运行的
查看本地可用的镜像
1 | docker images |
停止
1 | docker stop <your_container_id> |
重新启动容器
1 | docker restart <your_container_id> |
查找已停止的容器可用docker ps -a
查询
删除镜像
1 | docker rmi <your_image_id> |
删除容器
1 | docker container rm <target_container_id> |
上为删除指定容器
1 | docker container prune |
上为删除所有处于停止状态的container
制作自己的镜像
笔者的初衷是制作好镜像 无论是哪个平台装了docker都可以使用
所以我们需要上传到云端
首先在这里注册一个账号
注册账号后会给一个免费的私有仓库还是不错的
下载一个docker客户端备用 由于笔者使用的是mac所以是在这里下载的
docker镜像的制作方法可以是通过Dockerfile build也可以使用commit
这里主要讲的是通过Dockerfile生成镜像
在准备打包的镜像文件夹根目录(*注1)下新建Dockerfile(*注2)文件
笔者本次是打包脚本文件为镜像
本例以Python 3作为示例
编辑Dockerfile
1 | FROM python:3.6.8-slim |
FROM
基础镜像 指在某个指定镜像的基础上进行自己的包装 这里使用推荐以官方镜像为基础 此指令需要在全文第一行WORKDIR
指定工作目录(或者称为当前目录)COPY
复制文件 [<源路径>, <目标路径>]RUN
执行命令行命令 如RUN apt-get update
需要注意的是Dockerfile中每一条指令都会新建一层镜像 而每一层镜像间完全是两个不用的环境
所以强烈不建议使用RUN 挨个去执行命令行命令 这样不仅会增大镜像体积更会使前后承接的shell命令不在一个环境而导致打包出错CMD
容器的执行命令 docker将一整句shell命令拆分执行
构建
此时编写好Dockerfile可以开始打包了
如果要上传到hub.docker的话需要先创建仓库
接着
1 | docker build <hub上的仓库名> . |
最后的点是指镜像使用的上下文
即Dockerfile中使用的文件路径都是相对于此的路径
测试
1 | docker run -it <hub上的仓库名> |
上传
1 | docker push <hub上的仓库名> |
这时候在HUB就可以看到自己的镜像了
注
- docker不要求Dockerfile一定要在根目录下
- Dockerfile不一定非要命名为此 可以使用 -f ../xxx.xx 指定某一位置的某个文件为Dockerfile