zoukankan      html  css  js  c++  java
  • docker

    docker的几个术语

    • 镜像image
    • 容齐container
    • docker client
    • docker daemon  : 接受客户端请求,实现功能并返回结果
    • registry : 仓库

    docker 常用命令

    container操作 

    • run 创建一个新的容器并运行一个命令
      • docker run -it 10.10.1.44:8580/library/centos:7   /bin/bash  : 以交互式进入启动容器,并执行/bin/bash
      • docker run -itd  10.10.1.44:8580/library/centos:7   : 以后台运行模式启动容器 
    • ps 查看容器列表  
      • docker ps -a 查看所有容器,包括已经挂掉的容器
      • docker ps -aq  查看所有容器,只要第一列数据      
    • 停止容器 : docker stop  容器
    • 重启容器 : docker restart 容器
    • 删除容器 : docker rm 容器
    • 进入一个后台运行的容器 :
      • docker attach 3e
      • docker exec -it 3e /bin/bash
        • 推荐使用exec进入后台运行的容器,此中方式进入 exit退出终端不会导致容器的终止,而attach进入容器exit退出终端会导致容器结束  
    • 从容器创建一个新的镜像: docker。 commit   -a '  zj.com'    -m   'my hello world'    60945e446bf3(容器id):v1[版本号] 
      • a 指定作者; m 镜像描述信息;
    • 从宿主机向容器内拷贝文件 :
      • docker cp  ./test  容器id:/tmp/      ; 将宿主机的test文件复制到容器的tmp文件下
      • docker cp  ./test  容器id:/tmp/text    ;将宿主机的test文件复制到容器tmp文件夹下并重命名为text
    • 查看容器日志 :
      • docker logs 容器id
      • docker logs --since '2019-11-11' --tail 7 3e9f9f501d5a  ; 查看自从规定日期开始的7条日志
    • 导入和导出容器
      • docker export 容器id > my.tar   ; 将容器到出为本地文件
      • cat my.tar | docker import - hello:v1  ; 将本地文件导入为镜像
    • 运行一个web应用
      • 载入镜像 : docker pull training/webapp
      • 运行镜像 : docker run -d -P training/webapp  python app.py
        • -d 后台运行
        • -P 将容器内所有用到的端口映射到主机上
      • 查看web应用容器 : docker ps   ;
        • 此时会看到这里多了端口信息 0.0.0.0:32769->5000/tcp
        • docker 开放了5000端口,映射到主机32679上
      • 使用-p参数设置不一样的端口
        • docker run -d -p 5000:5000 training/webapp python app.py
      • 快速查看网络端口映射
        • docker port 容器id或者容器名字
      • 查看web应用程序日志
        • docker logs -f 容器id
        • f参数: 同tail -f
      • 查看容器内部的进程 : docker top 容器
      • 检查web应用程序
        • docker inspect 容器;  返回一个json格式,记录者docker容器的配置和状态信息

    镜像操作

    当运行容器时,使用的镜像如果在本地中不存在,docker就会自动从镜像仓库中下载,默认是从docker hub公共镜像源下载

    • 运行一个镜像:
      • docker run -t -i centos:v1 /bin/bash
      • -i 交互式操作
      • -t 终端
      • centos 镜像名, v1版本号
      • /bin/bash 放在镜像名后边的是命令,这里我们想要有个交互式的shell,因此使用/bin/bash
    • 获取一个新的镜像
      • docker pull centos7
    • 查找镜像
      • 我们可以从docker hub网站搜索镜像, 网址为 https://hub.docker.com
      • docker search 命令来搜索镜像
    • 拖拽镜像
      • docker pull ansible/centos7-ansible
    • 删除镜像
      • docker rmi hello-world
    • 创建镜像
      • 从已经创建的镜像中修改,并提交这个镜像
      • 使用dockerfile指令来创建一个镜像
    • 更新镜像
      • 使用镜像来创建一个容器 docker run -it ansible/centos7-ansible
      • 在容器中安装python3.6 yum install python36
      • 完成后 exit退出容器
      • 此时 ps -a 可以查看我们修改后的容器
      • 通过 docker commit 提交副本     docker commit -m '描述信息'  -a  '镜像作者'   镜像id    py36:v1(镜像名)
    • 构建镜像
      • docker build
      • dockerfile详解
        • docker通过读取dockefile中的指令自动生成镜像
        • dockerfile基本结构
          • 基础镜像信息
          • 维护者信息
          • 镜像操作指令
          • 容器启动时的指令
          • # 为docker中的复制
        • FROM 指定基础镜像,必须为第一个指令
          • FROM  image
          • FROM  image:tag
          • FROM  image@digest
          • tag 和 digest 参数是可选的,如果不写,则默认选择最新的镜像
        • MAINTAINER   维护者信息
          • MAINTAINER zj
          • MAINTAINER  zj@163.com
        • RUN  构造镜像时执行的命令
          • 用于在镜像容器中执行命令,有两种方式
          • shell执行: run command
          • exec执行: run ['executable', 'param1', 'param2']
        • ADD 将本地文件添加到容器中,tar文件会被自动解压, 网络文件不会被解压,可以访问网络资源,类似wget
          • ADD home*  /mydir/     添加所有包含home的文件到mydir
          • ADD hom?.txt  /mydir/  ?代表一个字符
          • ADD test relative/   将test 添加到 workdir/relative/下
          • ADD test /absolute/   将test添加到 absolute/下
        • COPY  功能类似于ADD, 但是不能用来解压tar文件,也不能用来访问网络文件
        • CMD 构建容器后调用, 也就是在容器启动时调用
          • CMD ['executable' , 'param1', 'param2']
          • CMD ['param1', 'param2']   设置了ENTRTPOINT 则执行entrypoint并添加参数
          • CMD command param1  param2  ; 执行shell内置命令
        • ENTRYPOINT 与cmd类似,只不过docker run执行的命令不会覆盖entrypoint , 而docker run指定的所有参数,都会作为参数传递给entrypoint
        • ENV 设置环境变量
          • ENV myname zj
          • ENV mycat=cat
        • EXPOSE 指定与外界交互的端口
          • EXPOSE 80 443
          • EXPOSE 8080
          • EXPOSE并不会让容器的端口访问到主机,要使其访问,需要在docker run容器的时候通过 -p参数来发布这些端口
        • WORKDIR 工作目录,类似于cd命令
          • WORKDIR /a  此时工作目录在/a   
          • WORKDIR b   此时工作目录在 /a/b
          • WORKDIR c   此时工作目录在 /a/b/c
          • 通过workdir指定工作目录后,所有的run,cmd,entrypoint命令都会在工作目录执行,在使用docker run命令来运行容器的时候,可以通过-w参数来创建所需目录
      •   

         dockerfile示例                                                                            

      • # This my first nginx Dockerfile
        # Version 1.0
        
        # Base images 基础镜像
        FROM centos
        
        #MAINTAINER 维护者信息
        MAINTAINER tianfeiyu 
        
        #ENV 设置环境变量
        ENV PATH /usr/local/nginx/sbin:$PATH
        
        #ADD  文件放在当前目录下,拷过去会自动解压
        ADD nginx-1.8.0.tar.gz /usr/local/  
        ADD epel-release-latest-7.noarch.rpm /usr/local/  
        
        #RUN 执行以下命令 
        RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
        RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
        RUN useradd -s /sbin/nologin -M www
        
        #WORKDIR 相当于cd
        WORKDIR /usr/local/nginx-1.8.0 
        
        RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install
        
        RUN echo "daemon off;" >> /etc/nginx.conf
        
        #EXPOSE 映射端口
        EXPOSE 80
        
        #CMD 运行以下命令
        CMD ["nginx"]

    dokcerfile示例

    FROM py36:v1
    MAINTAINER zj.com
    ADD huancai /home/huancai
    WORKDIR /home/huancai
    ADD static /home/huancai/static
    ENTRYPOINT pip3 install -r require.txt
    ENTRYPOINT /bin/bash
    

     docker build -t huancai:v1 .

    docker run --net=host -v /home/static:/home/huancai/static  huancai:v1  /bin/bash   设置网络和文件挂载

             

  • 相关阅读:
    我们总在避免认知失调(转)
    我们搞开发的为什么会感觉到累(转)
    循环-11. 水仙花数(20)
    谷歌技术"三宝"之MapReduce
    oracle存储过程实例
    网络编程学习小结
    关于window.history.back()后退问题
    区间Dp 暴力枚举+动态规划 Hdu1081
    MongoDB入门简单介绍
    Windows8和MacOS10.9双系统安装及Mac经常使用软件安装--联想E49A
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/11846858.html
Copyright © 2011-2022 走看看