PHPAwesome Docker

docker学习笔记

2016-11-28  本文已影响85人  Gundy_

简介

容器与管理程序虚拟化有所不同,管理程序虚拟化通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。
由于客居于操作系统,容器智能运行与底层宿主机相同或相似的操作系统。

docker组件

docker能做什么

docker相关命令

docker rmi $(docker images --filter dangling=true -q)
执行这条命令删除pull过程或者create过程产生的临时镜像,剩下的都是有用的镜像。镜像是一层层叠加起来的,你使用的是带名字和tag的发布镜像,那些中间镜像没有名字,只有哈希,所以叫none。。

docker run -it --name hahah ubuntu /bin/bash

查找本地是否存在ubuntu:latest镜像
存在就启动

不存在就从docker hub查找镜像下载保存到本地

使用ubuntu镜像创建一个容器

--name 指定容器别名

-d 将容器放到后台运行

docker rm 删除容器

删除所有容器

<pre>docker rm docker ps -a -q</pre>

docker start 启动容器

docker restart 重启容器

docker stop $name 停止容器

docker attach 进入容器会话

docker logs 获取守护容器的日志

docker logs -f 跟踪守护式容器的日志

docker ps -a

构建镜像

查找镜像

docker search ubuntu

构建镜像

docke commit
  1. 进入一个基础容器

  2. 修改容器内容

  3. docker commit
    docker commit -m '提交信息' --authon="justudy" $name justudy/nginx:webserver

    justudy/nginx指定了镜像的用户名和仓库名,并增加了一个webserver标签

    可以使用 docker inspect justudy/nginx:webserver 查看镜像信息。

用Dockerfile构建镜像

Dockerfile使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中的指令构建一个新的镜像

大致流程:

  1. docker从基础镜像运行一个容器
  2. 执行一条指令,对容器做出修改
  3. 执行类型docker commit 的操作,提交一个新的镜像层
  4. docker在基于刚提交的镜像运行一个新容器
  5. 执行dockerfile的下一条指令,知道所有指令都执行完毕

编写好Dockerfile
执行dockerbuild

  1. 构建镜像时设置标签

    docker build -t 'justudy/demo:v1' .

  2. 从git仓库构建docker镜像

    docker build -t 'justudy/demo:v1' git@github.com:justudy/demo

Dockerfile指令

  1. CMD

    CMD指令用于指定一个容器启动时要运行的命令
    CMD ["/bin/bash", "-1"]
    在Dockerfile中只能指定一条CMD命令

  2. ENTRYPOINT

    ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]

    docker run 后面带的命令会作为参数传递给ENTRYPOINT

  3. WORKDIR

    从镜像创建一个新容器时,在容器内部设置一个工作目录。CMD和ENTRYPOINT指定的程序会在这个目录下执行。

    WORKDIR /opt/webapp/db
    RUN bundle install
    WORKDIR /opt/webapp
    ENTRYPOINT ["rackup"]
    

    docker run -w 可指定工作目录

  4. ENV

    ENV指令用来在镜像构建过程中设置环境变量
    ENV RVM_PATH /HOME/RVM

    ENV TARGET_DIR /opt/app
    WORKDIR $TARGET_DIR
    

    docker run -e "TARGET_DIR=/opt/app" -e传递环境变量

  5. USER

    USER指定用来指定该镜像以什么样的用户去执行

    USER nginx

    docker run -u 命令指定用户

  6. VOLUME

    用来向基于镜像创建的容器添加卷,一个卷式可以存在于一个或者多个容器内的特定目录。
    VOLUME ["/opt/project"]

  7. ADD

    用来讲构建环境下的文件和目录复制到镜像中

    ADD _linux/var/spool/cron/crontabs/root /var/spool/cron/crontabs/root

  8. COPY

    COPY不会提取解压文件
    COPY ./composer.json /app/

  9. ONBUILD
    为镜像添加触发器,当一个镜像被用作其他镜像的基础镜像时,该镜像的触发器将会执行

ONBUILD ADD . /app/src
ONBUILD RUN cd /app/src && make

讲镜像推送到Docker Hub

镜像构建完毕,将他上传到docker hub。
docker push youruser/yourimage

上一篇下一篇

猜你喜欢

热点阅读