zoukankan      html  css  js  c++  java
  • Docker:Docker常用命令

    容器信息

    ##查看docker容器版本
    docker version
    
    ##查看docker容器信息
    docker info
    
    ##查看docker容器帮助
    docker --help

    镜像查看

    ##列出本地images(镜像)
    docker images
    
    ##含中间映像层(所有)
    docker images -a

    ##只显示镜像ID
    docker images -q
    
    ##含中间映像层(所有)
    docker images -qa   

    ##显示镜像摘要信息(DIGEST列)
    docker images --digests
    
    ##显示镜像完整信息
    docker images --no-trunc

    ##显示指定镜像的历史创建;参数:-H 镜像大小和日期,默认为true;--no-trunc  显示完整的提交记录;-q  仅列出提交记录ID
    docker history -H redis

    镜像搜索

    ##搜索仓库MySQL镜像
    docker search mysql
    
    ## --filter=stars=600:只显示 starts>=600 的镜像
    docker search --filter=stars=600 mysql
    
    ## --no-trunc 显示镜像完整 DESCRIPTION 描述
    docker search --no-trunc mysql
    
    ## --automated :只列出 AUTOMATED=OK 的镜像
    docker search  --automated mysql

    镜像下载

    ##下载Redis官方最新镜像,相当于:docker pull redis:latest
    docker pull redis
    
    ##下载仓库所有Redis镜像
    docker pull -a redis
    
    ##下载私人仓库镜像
    docker pull bitnami/redis

    镜像导出导入

    #导出镜像到 redis.tar -o是小写字母o
    docker save -o redis.tar redis:latest
    
    #另一种写法
    docker save > redis.tar redis:latest

    这里写图片描述

    #镜像导入
    docker load -i redis.tar
    
    #另一种写法
    docker load < redis.tar
    
    #其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

    这里写图片描述

    镜像删除

    ##单个镜像删除,相当于:docker rmi redis:latest
    docker rmi redis
    
    ##强制删除(针对基于镜像有运行的容器进程)
    docker rmi -f redis
    
    ##多个镜像删除,不同镜像间以空格间隔
    docker rmi -f redis tomcat nginx
    
    ##删除本地全部镜像
    docker rmi -f $(docker images -q)

    ##删除所有 zhy 开头的镜像
    docker rmi $(docker images | grep "zhy*" | awk '{print $1}')

    镜像构建

    编写DockerFile来构建镜像(不要忘记最后那个 .    -t 后面的名称一定要小写 )

    ##构建docker镜像
    docker build -f /home/dockerfile/Dockerfile -t mycentos:1.0 .

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    创建网络

    创建容器通信网络

    #创建 default_network 网络
    docker network create my_network

    网络信息

    查看网络内部信息

    #查看网络信息
    docker network inspect my_network

     

    所有网络

    查看所有的网络

    #查看所有网络
    docker network ls

    删除网络

    删除某个网络

    #删除网络
    docker network rm my_network

    运行容器配置网络

    示例

    #配置网络和IP
    docker run --name redis -p 6379:6379 --net my_network --ip 172.19.0.1 -d redis:5.0

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    容器与宿主机间拷贝文件

    1、从主机往容器中拷贝 
    将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
    
    docker cp /www/runoob 96f7f14e99ab:/www/
    
    2、将容器中文件拷往主机 
    将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
    
    docker cp  96f7f14e99ab:/www /tmp/
    
    3.主机往容器中拷贝并重命名
    将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
    
    docker cp /www/runoob 96f7f14e99ab:/www

    容器基础命令

    ##正在运行的容器
    docker ps
    
    ##所有容器
    docker ps -a
    #查看正在运行+历史运行过的容器
    docker ps -q

    ##显示运行容器总文件大小
    docker ps -s

    ##获取所有容器ID
    docker ps -a -q


    ##显示最近创建容器
    docker ps -l
    
    ##显示最近创建的3个容器
    docker ps -n 3
    
    ##不截断输出
    docker ps --no-trunc 

    ##获取镜像redis的元信息
    docker inspect redis
    
    ##获取正在运行的容器redis的 IP
    docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

    容器启动

    ##启动镜像生成容器(-p : 端口映射 {服务器端口:Docker端口})
    docker run  -itd --privileged -p 3306:3306 --name="自定义容器name"  76d6bc25b8a5    /usr/sbin/init

    重点: --name 名称尽量小写!不要有任何特殊符号!否则报错
    Unable to find image 'postgres_gis:latest' locally
    docker: Error response from daemon: pull access denied for postgres_gis, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
    ##启动一个或多个容器
    docker start 容器name
    ##重启容器 docker restart 容器name

    容器进程

    ##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
    ##列出redis容器中运行进程
    docker top redis
    
    ##查看所有运行容器的进程信息
    for i in  `docker ps |grep Up|awk '{print $1}'`;do echo  &&docker top $i; done

    容器日志

    ##查看redis容器日志,默认参数
    docker logs rabbitmq
    
    ##查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
    docker logs -f -t --tail=20 redis
    
    ##查看容器redis从2019年05月21日后的最新10条日志。
    docker logs --since="2019-05-21" --tail=10 redis

    容器的进出

    ##使用run方式在创建时进入
    docker run -it centos /bin/bash
    
    ##关闭容器并退出
    exit
    
    ##仅退出容器,不关闭
    快捷键:Ctrl + P + Q
    
    ##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
    docker attach --sig-proxy=false centos 
    
    ##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端(常用此命令进入容器)
    docker exec -it  centos /bin/bash
    
    ##以交互模式在容器中执行命令,结果返回到当前终端屏幕
    docker exec -it centos ls -l /tmp
    
    ##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
    docker exec -d centos  touch cache.txt 

    容器的停止与删除

    ##停止一个运行中的容器
    docker stop redis
    
    ##杀掉一个运行中的容器
    docker kill redis
    
    ##删除一个已停止的容器
    docker rm redis
    
    ##删除一个运行中的容器
    docker rm -f redis
    
    ## -l 移除容器间的网络连接,连接名为 db
    docker rm -l db 
    
    ## -v 删除容器,并删除容器挂载的数据卷
    docker rm -v redis

    容器的批量操作(删除、停止、启动)

    ##删除所有容器
    docker rm -f $(docker ps -a -q)
    
    ##删除所有 zhy 开头的容器 docker rm -f $(docker ps -a | grep "zhy*" | awk '{print $1}')
    ##停止所有容器 docker stop $(docker ps -a -q) ##启动所有容器 docker start $(docker ps -a -q)

    基于容器生成镜像

    ##基于当前redis容器创建一个新的镜像;参数:-a 提交的镜像作者;-c 使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停
    docker commit -a="DeepInThought" -m="my redis" [redis容器ID]  myredis:v1.1

    容器与主机数据拷贝

    ##将rabbitmq容器中的文件copy至本地路径
    docker cp rabbitmq:/[container_path] [local_path]
    
    ##将主机文件copy至rabbitmq容器
    docker cp [local_path] rabbitmq:/[container_path]/
    
    ##将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
    docker cp [local_path] rabbitmq:/[container_path]

    文章转载至:https://www.cnblogs.com/DeepInThought/p/10896790.html

  • 相关阅读:
    【交换】
    【数字对】
    【改造二叉树】
    【Begin】
    100以内所有质数的输出
    位运算符、|和||、&和&&的区别
    linux中vim编辑器三种模式及常用命令的使用
    静态代码块、构造代码块和构造函数的执行顺序
    字符乱码出现的原因及解决办法
    Springcloud-微服务
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12516816.html
Copyright © 2011-2022 走看看