zoukankan      html  css  js  c++  java
  • docker常用命令总结

    docker常用命令总结

    docker run

    -d, --detach=false # 后台运行容器,并返回容器ID;
    -i, --interactive=false # 以交互模式运行容器,通常与 -t 同时使用;
    -t, --tty=false # 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -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=[] # 给容器挂载存储卷,挂载到容器的某个目录
    --volumes-from=[] # 给容器挂载其他容器上的卷,挂载到容器的某个目录
    --cap-add=[] # 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
    --cap-drop=[] # 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
    --cidfile="" # 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
    --cpuset="" # 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
    --device=[] # 添加主机设备给容器,相当于设备直通
    --dns=[] # 指定容器的dns服务器
    --dns-search=[] # 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
    --entrypoint="" # 覆盖image的入口点
    --env-file=[] # 指定环境变量文件,文件格式为每行一个环境变量
    --expose=[] # 指定容器暴露的端口,即修改镜像的暴露端口
    --link=[] # 指定容器间的关联,使用其他容器的IP、env等信息
    --lxc-conf=[] # 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
    --name="" # 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
    --net="bridge" # 容器网络设置:
        bridge  # 使用docker daemon指定的网桥
        host  # 容器使用主机的网络
        container:NAME_or_ID > # 使用其他容器的网路,共享IP和PORT等网络资源
        none # 容器使用自己的网络(类似--net=bridge),但是不进行配置
    --privileged=false # 指定容器是否为特权容器,特权容器拥有所有的capabilities
    --restart="no" # 指定容器停止后的重启策略:
        no # 容器退出时不重启
        on-failure # 容器故障退出(返回值非零)时重启
        always # 容器退出时总是重启
    --rm=false # 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
    --sig-proxy=true # 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
    

     示例

    使用docker镜像tomcat:latest以后台模式启动一个容器,并将容器命名为mytomcat
    
    docker run -tid --name mytomcat tomcat:latest
    
    使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口
    
    docker run -tid --name mytomcat -p 8080:8080 tomcat:latest
    
    使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口,主机的目录 /home 映射到容器的 /home
    
    容器暴露80端口,并指定宿主机80端口与其通信(之前是宿主机端口,之后是容器需暴露的端口)
    docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest
    
    指定容器内目录与宿主机目录共享(之前是宿主机文件夹,之后是容器需共享的文件夹),
    docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest
    
    指定bridge网桥
    docker run -it --net=my_bridge nginx
    

     容器操作

    docker create #  创建一个容器但是不启动它
    docker run #  创建并启动一个容器
    docker stop #  停止容器运行,发送信号 SIGTERM
    docker kill # 强制终止一个容器
    docker start #  启动一个停止状态的容器
    docker restart #  重启一个容器
    docker rmi #  删除一个容器
    docker rm $(docker ps -a -q)
    docker kill #  发送信号给容器,默认 SIGKILL
    docker attach #  连接 ( 进入 ) 到一个正在运行的容器
    docker wait #  阻塞到一个容器,直到容器停止运行
    docker --restart=always # 容器关闭之后自动启动 
    

     获取容器信息

    docker ps #  显示状态为运行( Up )的容器
    docker ps -a #  显示所有容器 , 包括运行中( Up )的和退出的 (Exited)
    docker inspect #  深入容器内部获取容器所有信息
    docker logs -f #  查看容器的日志 (stdout/stderr) (-f 用于实时输出 )
    docker events #  得到 docker 服务器的实时的事件
    docker port #  显示容器的端口映射
    docker top #  显示容器的进程信息
    docker diff #  显示容器文件系统的前后变化
    

     导出容器

    docker cp #  从容器里向外拷贝文件或目录
    docker export containe_id >export.tar #  将容器整个文件系统导出为一个 tar 包,不带 layers 、 tag 等信息
    docker export container_id >export.tar # 导出容器保存到本地并命名为 export.tar
    cat export.tar | docker import - imported:container # 导入本地 tar 包作为一个镜像
    docker import url res:tag # 导入网络的容器作为一个镜像
    

     镜像操作

    docker images #  显示本地所有的镜像列表
    docker import #  从一个 tar 包创建一个镜像,往往和 export 结合使用
    docker build #  使用 Dockerfile 创建镜像(推荐)
    docker commit #  从容器创建镜像
    docker rmi #  删除一个镜像
    docker load #  从一个 tar 包创建一个镜像,和 save 配合使用
    docker save #  将一个镜像保存为一个 tar 包,带 layers 和 tag 信息
    docker history #  显示生成一个镜像的历史命令
    docker tag #  为镜像起一个别名
    

     镜像仓库 (registry) 操作

    docker login #  登录到一个 registry
    docker search #  从 registry 仓库搜索镜像
    docker pull #  从仓库下载镜像到本地
    docker push #  将一个镜像 push 到 registry 仓库中
    # 获取 Container IP 地址( Container 状态必须是 Up )
    docker inspect id | grep IPAddress | cut -d '"' -f 4
    # 获取端口映射
    docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' id
    # 获取环境变量
    docker exec container_id env
    # 杀掉所有正在运行的容器
    docker kill $(docker ps -q)
    # 删除老的 ( 一周前创建 ) 容器
    docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
    # 删除已经停止的容器
    docker rm `docker ps -a -q`
    # 删除所有镜像,小心
    docker rmi $(docker images -q)
    

     Dockerfile

    FROM ,  从一个基础镜像构建新的镜像
    FROM ubuntu
    MAINTAINER ,  维护者信息
    MAINTAINER William <wlj@nicescale.com>
    ENV ,  设置环境变量
    ENV TEST 1
    RUN ,  非交互式运行 shell 命令
    RUN apt-get -y update
    RUN apt-get -y install nginx
    ADD ,  将外部文件拷贝到镜像里 ,src 可以为 url
    ADD http://nicescale.com/ /data/nicescale.tgz
    WORKDIR /path/to/workdir,  设置工作目录
    WORKDIR /var/www
    USER ,  设置用户 ID
    USER nginx
    VULUME <#dir>,  设置 volume
    VOLUME [‘/data’]
    EXPOSE ,  暴露哪些端口
    EXPOSE 80 443
    ENTRYPOINT [‘executable’, ‘param1’,’param2’] 执行命令
    ENTRYPOINT ["/usr/sbin/nginx"]
    CMD [“param1”,”param2”]
    CMD ["start"]
    
  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/Wshile/p/12988720.html
Copyright © 2011-2022 走看看