今天整理了些之前使用docker时经常使用的命令与配置,在这里分享出来,也便于本身往后查阅。文中不包括docker的基本概念、安装,还请自行搜寻。
各位感兴趣的话,能够自存一份,若要转载,记得标明出处哦。node
#镜像来源 FROM centos:latest #做者 MAINTAINER "chengxp" #在新建立的镜像中建立目录 RUN mkdir /usr/local/jdk RUN mkdir /usr/local/runentry #添加当前镜像中须要依赖的工具 ADD jdk1.8.0_65.tar /usr/local/jdk/ ADD jboss.tar /usr/local/runentry/ #卷,会将镜像中的目录挂载到宿主机的docker安装目录下 VOLUME ["/usr/local/runentry/jboss/logs"] #环境变量添加 ENV JAVA_HOME /usr/local/jdk1.8.0_65 ENV PATH $PATH:$JAVA_HOME/bin #提示要输出的端口(没有实际意义) EXPOSE 8181 #镜像启动成容器须要执行的命令(软件启动指令) CMD ["./usr/local/runentry/jboss/bin/run.sh","-c","all"]
VOLUEME ["/data1","/data2"]
以上,会在运行后的容器中的根目录中,分别建立 两个目录;mysql
△缺点:以这种方式建立的卷,不能指定主机目录。而对应的目录默认是docker安装时指定的目录:/var/lib/docker/volumes/;
可经过docker inspect containerId 查看对应的自动生成的主机目录; sql
使用命令:docker export/import 相关进行操做;
缺点:
不能保留运行时相关信息,如把war包存放到tomcat,导出时,war包会被遗弃;docker
1)提交当前容器状态,并根据当前容器 生成一个新的镜像:centos
docker commit 容器id 新建立的镜像名称tomcat
2)将新建立的镜像导出成tar:
docker save 新建立的镜像名称 > 镜像名称.tarbash
version: "3" services: back-app: #1.镜像来源:根据指定镜像启动(二选一) image: 25.30.9.228:5000/back-app:v1.1.0 #2.镜像来源:根据指定的Dockerfile所在目录来启动(二选一) build: /home/start-entry/back-app(绝对路径) build: ./back-app (相对当前目录路径) #若同时配置了image和build,那么将经过build建立一个 名为image配置的镜像 #自定义启动后的镜像名称 container-name: back-app-container #宿主机目录与容器目录映射 volumes: #1.宿主机绝对路径目录:容器中绝对路径目录 - /home/back-app/logs:/home/logs #2.默认在容器内部建立一个数据卷,指向宿主机匿名位置[不推荐] - /home/logs #执行时,重启当前服务 restart: always #启动映射端口:外部:内部 ports: - "8181:8181" #将主机名写入到容器中的hosts文件 extra_hosts: - "master:192.168.1.1" - "node1:192.168.1.2" - "node2:192.168.1.3" #当前镜像启动以前,必须等待如下服务启动完毕以后才能启动 #depends_on: - mysql - kafka mysql: build: ./mysql ports: - "3306:3306" kafka: build: /home/start-entry/kafka ports: - "8787:8787"
本文中记录的只是我的常常用到的操做,需获取更多配置,请移步官网:https://docs.docker.com/engine/reference/builder/。app