美文网首页
docker学习笔记

docker学习笔记

作者: 殷俊杰 | 来源:发表于2019-01-09 09:31 被阅读0次

    镜像

    列出本地镜像

    docker images
    -a:全部
    -q:只显示镜像ID
    --digests:显示镜像摘要信息
    --no-trunc:显示完整的镜像信息

    查找仓库中的某个镜像

    docker search
    -s:点赞数超过多少赞
    --no-trunc:显示完整的镜像信息
    --automated:只列出automated build类型的镜像(官方)

    拉取镜像

    docker pull
    docker pull 镜像名称:标签
    docker pull tomcat 默认拉取latest
    docker pull tomcat:3.2

    删除镜像

    docker rmi 镜像名称:标签
    docker rmi 镜像ID
    -f:强制删除
    docker rmi 镜像名1 镜像名2
    docker rmi $(docker images -qa)删除全部

    容器

    新建并启动容器

    docker run [options] IMAGE [COMMAND] [ARG...] 镜像名称
    --name="容器名字" :为容器指定一个名称
    -d:后台运行容器,并返回容器ID,即启动守护式容器;(如果没有前台进程在运行,会立刻退出)
    -i:以交互模式运行容器,通常与-t同时使用;
    -t:为容器重新分配一个伪输入终端,通常与-i同时使用;
    -P:随机端口映射;
    -p:指定端口映射,有以下四种格式
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort

    退出容器

    exit:停止容器并退出
    ctrl+P+Q:不停止容器退出

    正在运行的容器

    docker ps
    -a:列出当前所有正在运行的容器+历史上运行过的容器
    -l:显示最近创建的容器
    -n:显示最近n个创建的容器
    -q:静默模式,只显示容器编号
    --no-trunc:不截断输出

    启动、重启、停止已创建的容器

    docker start 镜像ID
    docker restart 重启
    docker stop
    docker kill 强制停止

    删除容器

    docker rm 容器id 容器id 容器id
    docker rm -f $(docker ps -a -q)删除全部

    查看容器日志

    docker logs -f -t --tail 容器id
    -t:加入时间戳
    -f:跟随最新的日志打印
    --tail 数字:显示最后多少条

    docker run -d 1e1148e4cc2c /bin/sh -c "while true; do echo hello world; sleep 2;done"
    

    查看容器进程

    docker top 容器id

    查看容器内部细节

    docker inspect 容器id

    进入容器

    docker attach 容器id 进入容器
    docker exec -it 容器id ls -l /tmp 不进去,但是在容器中执行这个命令并把结果显示出来

    容器内数据拷贝到主机

    docker cp 容器id:容器内路径 宿主机路径
    例:
    docker cp 4e62c4f89024:/tmp/yum.log ./test


    镜像commit

    docker commit 提交容器副本使之成为一个新的镜像
    -a="作者" -m="描述信息"

    数据卷

    1. 数据卷可在容器之间共享或重用数据
    2. 卷中的更改可以直接生效
    3. 数据卷中的更改不会包含在镜像的更新中
    4. 数据卷的声明周期一直持续到没有容器使用它为止

    添加数据卷

    1.直接命令添加
    docker run -it -v /宿主机绝对路径目录:容器内目录 镜像名
    docker run -it -v /home/yinjune/docker/volume:/docker/volume 镜像名
    会自动创建不存在的文件夹
    docker run -it -v /home/yinjune/docker/volume:/docker/volume:ro 镜像名
    后边跟ro为read only 只能宿主机操作数据卷,容器只能读

    1. Dockerfile添加
    FROM centos
    VOLUME ["/docker/volume1","/docker/volume2"]
    CMD echo "finished....success"
    CMD /bin/bash
    

    但是目前还没指定对应宿主机的目录,docker会给我们默认生成一个对应的目录。可以用docker inspect 查看

    数据卷容器

    --volume-from 继承容器数据卷

    Dockerfile

    编写Dockerfile文件->build->run

    1. 每条保留字指令都必须大写且后面跟至少一个参数
    2. 指令按照从上到下顺序执行
    3. #表示注释
    4. 每条指令都会创建一个新的镜像层,并对镜像进行提交

    指令

    • FROM
      基础镜像,当前镜像是基于哪个镜像
    • MAINTAINER
      作者、邮箱
    • RUN
      构建时需要运行的命令
    • EXPOSE
      暴露端口
    • WORKDIR
      指定在创建容器后默认进入的工作目录
    • ENV
      环境变量,可以在后续的任何指令中引用
    • ADD
      拷贝文件,且会自动处理URL和压缩包
    • COPY
      就是拷贝
    • VOLUME
      指定数据卷
    • CMD
      指定一个容器启动时要运行的命令
      Dockerfile中可用有多个CMD命令,但只有最后一个生效,CMD会被docker fun之后的参数替换
    • ENTRYPOINT
      指定一个容器启动时要运行的命令
      ENTRYPOINT和CMD一样,都是在指定容器启动程序及参数,但docker run之后的参数会追加
    • ONBUILD
      当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发

    案例1:

    FROM centos
    MAINTAINER yinjunjie<247385709@qq.com>
    ENV MYPATH /user/local
    WORKDIR $MYPATH
    RUN yum -y install vim
    RUN yum -y install net-tools
    EXPOSE 80
    CMD echo $MYPATH
    CMD echo "success-----------ok"
    CMD /bin/bash
    

    docker build -f /home/yinjune/docker/dockerfile/Dockerfile -t mycentos:1.3 .
    docker history 查看镜像变更历史

    案例2:

    FROM centos
    MAINTAINER yinjunjie<247385709@qq.com>
    RUN yum -y install curl
    CMD ["curl","-s","http://ip.cn"]
    

    docker build -f home/yinjune/docker/dockerfile/Dockerfile -t myip .
    docker run myip -i没卵用

    FROM centos
    MAINTAINER yinjunjie<247385709@qq.com>
    RUN yum -y install curl
    ENTRYPOINT ["curl","-s","http://ip.cn"]
    

    docker build -f home/yinjune/docker/dockerfile/Dockerfile -t myip 2
    docker run myip -i有卵用,相当于curl -s -i "http://ip.cn"

    相关文章

      网友评论

          本文标题:docker学习笔记

          本文链接:https://www.haomeiwen.com/subject/gmckrqtx.html