镜像拉取
# 命令格式
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
# 镜像拉取
docker pull ubuntu:16.04
# 运行
docker run -it --rm ubuntu:16.04 /bin/bash
docker run 命令参数说明
- -it:这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
- bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。
镜像列表
```bash列出下载的镜像
docker image ls
查看镜像、容器、数据卷占用空间
docker system df
批量删除无用镜像
docker image prune
<a name="D6yd9"></a>
### 删除镜像
```bash
# 删除本地镜像
docker image rm <镜像1>
docker image rmi -f <镜像id>
# 删除所有仓库名为 redis 的镜像
docker image rm $(docker image ls -q redis)
使用Dockerfile定制镜像
这里使用django项目的Dockerfile为示例(与manage.py同目录下)
# 从仓库拉取 带有 python 3.7 的 Linux 环境
FROM python:3.7
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
COPY pip.conf /root/.pip/pip.conf
# 安装mysql依赖
RUN apt-get update \
&& apt-get install python3-dev default-libmysqlclient-dev -y
# 创建 djangosite 文件夹
RUN mkdir -p /var/www/djangosite
# 将 djangosite 文件夹为工作目录
WORKDIR /var/www/djangosite
# 将当前目录加入到工作目录中(. 表示当前目录)
ADD . /var/www/djangosite
# 更新pip版本
RUN /usr/local/bin/python -m pip install --upgrade pip
# 利用 pip 安装依赖
RUN pip3 install -r requirements.txt \
&& pip3 install uwsgi \
&& pip3 install six
# 将当前目录复制到容器的 djangosite 目录
ADD six.py /usr/local/lib/python3.7/site-packages/django/utils/
# uWSGI可以运行在’emperor’模式。在这种模式下,它会监控uWSGI配置文件目录,然后为每个它找到的配置文件生成实例 (‘vassals’)。
# 创建配置文件目录,并创建软链接到配置文件目录
RUN mkdir -p /etc/uwsgi/vassals \
&& ln -s /var/www/djangosite/usite_wsgi.ini /etc/uwsgi/vassals/
# 去除windows系统编辑文件中多余的\r回车空格
RUN sed -i 's/\r//' ./start.sh \
# 给start.sh可执行权限
&& chmod +x ./start.sh
FROM指定基础镜像
RUN 执行命令
COPY 复制文件/ADD 更高级的复制文件
所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD
# 格式:COPY <源路径> <目标路径>
COPY pip.conf /root/.pip/pip.conf
# 复制宿主机当前目录的pip.conf 到 容器/root/.pip/pip.conf
CMD 容器启动命令
# CMD 指令的格式和 RUN 相似,也是两种格式:
shell 格式: CMD <命令>
exec 格式: CMD ["可执行文件", "参数1", "参数2"...]
# 示例
CMD echo $HOME
# 直接执行 nginx 可执行文件,并且要求以前台形式运行
CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT 入口点
# 示例
ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]
ENTRYPOINT ["docker-entrypoint.sh"]
ENV 设置环境变量
# 格式有两种:
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
WORKDIR 指定工作目录
WORKDIR /var/www/djangosite