Dockerfile
一、简介
1.1 dockerfile中常用的命令合集
1.2 docker build 基于dockerfile制作镜像的命令
docker build [OPTIONS] PATH | URL | -参数
1.3 参数选项
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network: 默认 default。在构建期间设置RUN指令的网络模式
#例如
FROM centos:7
ARG user # ARG user=root
USER $user
docker build --build-arg user=yhhu .
1.4 这里讲一下CMD
、ENTRYPOINT
和RUN
的区别,其他相关内容可以查看下方参考链接
- 一个Dockerfile中只能有一个CMD命令。( docker run时运行,dockerfile 中如果存在多个CMD指令,仅最后一个生效。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。)
- 一个Dockerfile中可以有许多个RUN命令。(docker buld时运行)
- ENTRYPOINT 指令:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序;但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序;
参考
Docker-compose
安装方法
官方文档
简单介绍docker-compose文件的编写方法
这里以一个mysql+redis的配置方法举例
一. 先判断docker-compose是否安装完成
$ docker-compose --version
二. docker-compose常见参数
#版本号
version: "3.1"
#服务列表
services:
#服务名
mysql:
#容器名称
container_name: mysql-docker
#使用的镜像
image: mysql
#没启动时是否自动重启
restart: always
#映射端口 :前的为本地端口,:后的为容器的端口
ports:
- "3306:3306"
#添加环境变量
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: "Asia/Shanghai"
#挂载文件目录
volumes:
- "./storages/data/mysql:/var/lib/mysql"
- "./storages/config/my.cnf:/etc/my.cnf"
redis:
image: redis
restart: always
command: --appendonly yes
ports:
- 6379:6379
volumes:
- "./storages/data/redis:/data"