栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker之dockerfile快速入门

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker之dockerfile快速入门

什么是Dcokerfile

dockerfile是专门用于构建镜像的文本语言,可使用dockerfile来构建我们自己的镜像

常用语法
  • FROM 选择要使用的镜像
  • WORKERDIR 设置工作目录
  • ADD 将文件/目录拷贝到容器目录中,会自动解压
  • COPY 将文件/目录拷贝到容器目录中,不会自动解压
  • RUN 运行所需要执行的命令
  • EXPOSE 提供暴露的端口号
  • ENV 设置环境变量
  • MAINTAINER 维护者信息
  • USER 执行用户
  • ARG 运行时变量
  • CMD 容器启动时运行的命令
  • ENTRYPOINT 容器启动时运行的命令

CMD和ENTRYPOINT的区别

CMD是制定启动时要运行的命令,在使用docker run时指定了执行命令会把CMD的命令覆盖

ENTRYPOINT则相当于允许一个进程,进程结束了,相应的docker容器也就结束运行了。运行日志可以通过 docker logs -f xxx 查看。cmd运行的环境在所有$PATH目录的环境下,而entrypoint只在/usr/bin环境下

构建自己的docker镜像

语法

docker build -t he/java .

  • -t 指定镜像的名称,并读取当前目录中Dockerfile文件
  • -f 指定Dockerfile的名称
  • –build-arg=[] :设置镜像创建时的变量; --build-arg http_proxy=http://10.188.61.2:8118
  • –cpu-shares :设置 cpu 使用权重;
  • –cpu-period :限制 CPU CFS周期;
  • –cpu-quota :限制 CPU CFS配额;
  • –cpuset-cpus :指定使用的CPU id;
  • –cpuset-mems :指定使用的内存 id;
  • –disable-content-trust :忽略校验,默认开启;
  • –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配置。
  • –squash :将 Dockerfile 中所有的操作压缩为一层。
  • –network: 默认 default。在构建期间设置RUN指令的网络模式

我们来写个实例

启动一个mysql,并指定my.cnf与初始化sql,将默认密码设定为123456

先攥写Dockerfile文件

FROM mysql:5.7
MAINTAINER ZC hellohesir@gmail.com

ENV MYSQL_ROOT_PASSWORD 123456
ENV LANG="en_US.utf8"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    && echo 'Asia/Shanghai' >/etc/timezone

COPY ./my.cnf /etc/mysql/mysql.conf.d/my.cnf
COPY ./sql/ /docker-entrypoint-initdb.d/

EXPOSE 3306

构建并执行容器

docker build -t my-mysql:latest .
docker run -d --name my-mysql 
  --restart=always 
	 -p 3306:3306 
	  -v ${PWD}/my.cnf:/etc/mysql/conf.d/my.cnf  # 将配置文件关联宿主机
	   -v ${PWD}/data:/var/lib/mysql  # 将数据文件映射到宿主机,防止数据丢失
	    my-mysql:latest

更多示例可参考我的开源项目:https://gitee.com/DaysCrafte/docker-installed

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号