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
2
3
4
5
6
7
8
9
10
FROM python:3.6.8-slim

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./tight_janalysisi_data.py" ]
  1. FROM 基础镜像 指在某个指定镜像的基础上进行自己的包装 这里使用推荐以官方镜像为基础 此指令需要在全文第一行
  2. WORKDIR 指定工作目录(或者称为当前目录)
  3. COPY 复制文件 [<源路径>, <目标路径>]
  4. RUN 执行命令行命令 如 RUN apt-get update
    需要注意的是Dockerfile中每一条指令都会新建一层镜像 而每一层镜像间完全是两个不用的环境
    所以强烈不建议使用RUN 挨个去执行命令行命令 这样不仅会增大镜像体积更会使前后承接的shell命令不在一个环境而导致打包出错
  5. CMD 容器的执行命令 docker将一整句shell命令拆分执行

构建

此时编写好Dockerfile可以开始打包了
如果要上传到hub.docker的话需要先创建仓库

接着

1
$ docker build <hub上的仓库名> . 

最后的点是指镜像使用的上下文 即Dockerfile中使用的文件路径都是相对于此的路径

测试

1
$ docker run -it <hub上的仓库名>

上传

1
$ docker push <hub上的仓库名>

这时候在HUB就可以看到自己的镜像了

注

  1. docker不要求Dockerfile一定要在根目录下
  2. Dockerfile不一定非要命名为此 可以使用 -f ../xxx.xx 指定某一位置的某个文件为Dockerfile

END