镜像拉取

  1. # 命令格式
  2. docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
  3. # 镜像拉取
  4. docker pull ubuntu:16.04
  5. # 运行
  6. docker run -it --rm ubuntu:16.04 /bin/bash

docker run 命令参数说明

  1. -it:这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
  2. bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。

    镜像列表

    ```bash

    列出下载的镜像

    docker image ls

查看镜像、容器、数据卷占用空间

docker system df

批量删除无用镜像

docker image prune

  1. <a name="D6yd9"></a>
  2. ### 删除镜像
  3. ```bash
  4. # 删除本地镜像
  5. docker image rm <镜像1>
  6. docker image rmi -f <镜像id>
  7. # 删除所有仓库名为 redis 的镜像
  8. docker image rm $(docker image ls -q redis)

使用Dockerfile定制镜像

这里使用django项目的Dockerfile为示例(与manage.py同目录下)

  1. # 从仓库拉取 带有 python 3.7 的 Linux 环境
  2. FROM python:3.7
  3. # 设置 python 环境变量
  4. ENV PYTHONUNBUFFERED 1
  5. ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
  6. COPY pip.conf /root/.pip/pip.conf
  7. # 安装mysql依赖
  8. RUN apt-get update \
  9. && apt-get install python3-dev default-libmysqlclient-dev -y
  10. # 创建 djangosite 文件夹
  11. RUN mkdir -p /var/www/djangosite
  12. # 将 djangosite 文件夹为工作目录
  13. WORKDIR /var/www/djangosite
  14. # 将当前目录加入到工作目录中(. 表示当前目录)
  15. ADD . /var/www/djangosite
  16. # 更新pip版本
  17. RUN /usr/local/bin/python -m pip install --upgrade pip
  18. # 利用 pip 安装依赖
  19. RUN pip3 install -r requirements.txt \
  20. && pip3 install uwsgi \
  21. && pip3 install six
  22. # 将当前目录复制到容器的 djangosite 目录
  23. ADD six.py /usr/local/lib/python3.7/site-packages/django/utils/
  24. # uWSGI可以运行在’emperor’模式。在这种模式下,它会监控uWSGI配置文件目录,然后为每个它找到的配置文件生成实例 (‘vassals’)。
  25. # 创建配置文件目录,并创建软链接到配置文件目录
  26. RUN mkdir -p /etc/uwsgi/vassals \
  27. && ln -s /var/www/djangosite/usite_wsgi.ini /etc/uwsgi/vassals/
  28. # 去除windows系统编辑文件中多余的\r回车空格
  29. RUN sed -i 's/\r//' ./start.sh \
  30. # 给start.sh可执行权限
  31. && chmod +x ./start.sh

FROM指定基础镜像

RUN 执行命令

COPY 复制文件/ADD 更高级的复制文件

所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD

  1. # 格式:COPY <源路径> <目标路径>
  2. COPY pip.conf /root/.pip/pip.conf
  3. # 复制宿主机当前目录的pip.conf 到 容器/root/.pip/pip.conf

CMD 容器启动命令

  1. # CMD 指令的格式和 RUN 相似,也是两种格式:
  2. shell 格式: CMD <命令>
  3. exec 格式: CMD ["可执行文件", "参数1", "参数2"...]
  4. # 示例
  5. CMD echo $HOME
  6. # 直接执行 nginx 可执行文件,并且要求以前台形式运行
  7. CMD ["nginx", "-g", "daemon off;"]

ENTRYPOINT 入口点

  1. # 示例
  2. ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]
  3. ENTRYPOINT ["docker-entrypoint.sh"]

ENV 设置环境变量

  1. # 格式有两种:
  2. ENV <key> <value>
  3. ENV <key1>=<value1> <key2>=<value2>...

WORKDIR 指定工作目录

  1. WORKDIR /var/www/djangosite