Dockerfile
1、FROM
指定基础镜像
FROM ubuntu:14.04
2、RUN
在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用””
RUN groupadd -r mysql && useradd -r -g mysql mysql
3、ENV
设置变量的值,ENV MYSQL_MAJOR 5.7,可以通过docker run —e key=value修改,后面可以直接使用${MYSQL_MAJOR}
ENV MYSQL_MAJOR 5.7
4、LABEL
设置镜像标签
LABEL email="1162013818@qq.com"
LABEL name="pywu2016"
5、VOLUME
设置数据的挂载目录
VOLUME /var/lib/mysql
6、COPY
将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压
COPY docker-entrypoint.sh /usr/local/bin/
7、ADD
将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压
ADD application.yml /etc/pywu2016/
8、WORKDIR
指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建
WORKDIR /usr/local
WORKDIR tomcat
RUN touch test.txt
#会在 /usr/local/tomcat下创建test.txt文件
WORKDIR /root
ADD app.yml test/
#会在/root/test下多出一个app.yml文件
9、CMD
容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效
CMD ["mysqld"]
或
CMD mysqld
10、ENTRYPOINT
和CMD的使用类似
ENTRYPOINT ["docker-entrypoint.sh"]
和CMD的不同:
docker run 执行时,会覆盖CMD的命令,而ENTRYPOINT不会
11、EXPOSE
指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机
EXPOSE 3306
Image常见操作
1、查看本地image列表
#查看本地image列表
docker images
docker image ls
docker network ls
docker network rm networkId
docker volume ls
docker volume rm volumeId
2、获取远端镜像
docker pull
3、删除镜像
#如果该镜像正在使用,需要先处理完
docker image rm imageid
docker rmi -f imageid
docker rmi -f ${docker image ls} 删除所有镜像
4、运行镜像
docker run image
#用tomcat镜像创建一个容器 -d
docker run -d --name tomcat01 -p 9090:8080 -v /tmp/test:/usr/local/tomcat/webapps/test tomcat
docker run -d --name tomcat01 -p 9090:8080 -v tomcat_volume:/usr/local/tomcat/webapps/test tomcat
宿主机端口9090映射容器8080端口
宿主机/tmp/test映射 容器/usr/local/tomcat/webapps/test
tomat_volume为宿主机挂载别名
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d, --detach=false 指定容器运行于前台还是后台,默认为false
-i, --interactive=false 打开STDIN,用于控制台交互
-t, --tty=false 分配tty设备,该可以支持终端登录,默认为false
-u, --user="" 指定容器的用户
-a, --attach=[] 登录容器(必须是以docker run -d启动的容器)
-w, --workdir="" 指定容器的工作目录
-c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用
-e, --env=[] 指定环境变量,容器中可以使用该环境变量
-m, --memory="" 指定容器的内存上限
-P, --publish-all=false 指定容器暴露的端口
-p, --publish=[] 指定容器暴露的端口
-h, --hostname="" 指定容器的主机名
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录
--name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
5、发布镜像
docker push
container常见操作
1、根据镜像创建容器
docker run -d --name -p 9090:8080 my-tomcat tomcat
2、查看运行中的container
docker ps
3、查看所有的container[包含退出的]
docker ps -a
4、删除container
docker rm containerid
docker rm -f $(docker ps -a) 删除所有container
5、进入到一个container中
docker exec -it container bash
6、根据container生成image
docker
7、查看某个container的日志
docker logs container
8、查看容器资源使用情况
docker stats
9、查看容器详情信息
docker inspect container
10、停止/启动容器
docker stop/start container