Dockerfile

1、FROM

指定基础镜像

  1. FROM ubuntu:14.04

2、RUN

在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用””

  1. RUN groupadd -r mysql && useradd -r -g mysql mysql

3、ENV

设置变量的值,ENV MYSQL_MAJOR 5.7,可以通过docker run —e key=value修改,后面可以直接使用${MYSQL_MAJOR}

  1. ENV MYSQL_MAJOR 5.7

4、LABEL

设置镜像标签

  1. LABEL email="1162013818@qq.com"
  2. LABEL name="pywu2016"

5、VOLUME

设置数据的挂载目录

  1. VOLUME /var/lib/mysql

6、COPY

将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压

  1. COPY docker-entrypoint.sh /usr/local/bin/

7、ADD

将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压

  1. ADD application.yml /etc/pywu2016/

8、WORKDIR

指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建

  1. WORKDIR /usr/local
  2. WORKDIR tomcat
  3. RUN touch test.txt
  4. #会在 /usr/local/tomcat下创建test.txt文件
  5. WORKDIR /root
  6. ADD app.yml test/
  7. #会在/root/test下多出一个app.yml文件

9、CMD

容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效

  1. CMD ["mysqld"]
  2. CMD mysqld

10、ENTRYPOINT

和CMD的使用类似

  1. ENTRYPOINT ["docker-entrypoint.sh"]

和CMD的不同:
docker run 执行时,会覆盖CMD的命令,而ENTRYPOINT不会

11、EXPOSE

指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机

  1. EXPOSE 3306

Image常见操作

1、查看本地image列表

  1. #查看本地image列表
  2. docker images
  3. docker image ls
  4. docker network ls
  5. docker network rm networkId
  6. docker volume ls
  7. docker volume rm volumeId

2、获取远端镜像

  1. docker pull

3、删除镜像

  1. #如果该镜像正在使用,需要先处理完
  2. docker image rm imageid
  3. docker rmi -f imageid
  4. docker rmi -f ${docker image ls} 删除所有镜像

4、运行镜像

  1. docker run image
  2. #用tomcat镜像创建一个容器 -d
  3. docker run -d --name tomcat01 -p 9090:8080 -v /tmp/test:/usr/local/tomcat/webapps/test tomcat
  4. docker run -d --name tomcat01 -p 9090:8080 -v tomcat_volume:/usr/local/tomcat/webapps/test tomcat
  5. 宿主机端口9090映射容器8080端口
  6. 宿主机/tmp/test映射 容器/usr/local/tomcat/webapps/test
  7. tomat_volume为宿主机挂载别名
  8. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  9. -d, --detach=false 指定容器运行于前台还是后台,默认为false
  10. -i, --interactive=false 打开STDIN,用于控制台交互
  11. -t, --tty=false 分配tty设备,该可以支持终端登录,默认为false
  12. -u, --user="" 指定容器的用户
  13. -a, --attach=[] 登录容器(必须是以docker run -d启动的容器)
  14. -w, --workdir="" 指定容器的工作目录
  15. -c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用
  16. -e, --env=[] 指定环境变量,容器中可以使用该环境变量
  17. -m, --memory="" 指定容器的内存上限
  18. -P, --publish-all=false 指定容器暴露的端口
  19. -p, --publish=[] 指定容器暴露的端口
  20. -h, --hostname="" 指定容器的主机名
  21. -v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录
  22. --name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字

5、发布镜像

  1. docker push

container常见操作

1、根据镜像创建容器

  1. docker run -d --name -p 9090:8080 my-tomcat tomcat

2、查看运行中的container

  1. docker ps

3、查看所有的container[包含退出的]

  1. docker ps -a

4、删除container

  1. docker rm containerid
  2. docker rm -f $(docker ps -a) 删除所有container

5、进入到一个container中

  1. docker exec -it container bash

6、根据container生成image

  1. docker

7、查看某个container的日志

  1. docker logs container

8、查看容器资源使用情况

  1. docker stats

9、查看容器详情信息

  1. docker inspect container

10、停止/启动容器

  1. docker stop/start container