• 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"]
    
  • 相关阅读:
    Java基础回顾---JVM&JDK&JRE
    学习
    学习
    学习
    进度
    进度
    毕设进度
    学习进度
    Beta阶段项目总结
    第二阶段冲刺——seven
  • 原文地址:https://www.cnblogs.com/Wshile/p/12988720.html
Copyright © 2020-2023  润新知