zoukankan      html  css  js  c++  java
  • linux/Docker

    【深度探索区块链】

    //查看主机上的镜像文件列表
    docker images 
    
    //从镜像仓库下载镜像文件
    docker pull hyperledger/fabric-peer
    
    //给镜像文件打标签
    docker tag hyperledger/fabric-tools:x86_64-1.0.0 hyperledger/fabric-tools:latest
    
    //从镜像中启动容器
    docker run -it --name cli ubuntu / bin/bash
    #cli是容器名称
    #ubuntu是镜像名称
    #-it是以交互方式启动
    #bin/bash是启动容器时执行的命令
    
    //查看容器日志
    docker logs -f cli  
    
    //查看主机上的容器,-a会显示已停止的容器
    docker ps -a
    
    //查看容器映射的端口
    docker port peer0.org1.example.com
    
    //删除容器,cli为容器名称或id
    docker rm cli  
    
    //查看帮助文档
    docker --help

    docker ps --help //查看docker ps的帮助指令

    【获取容器相关信息】

    0.docker version #查看版本号
    
    1.docker run ...#创建并启动一个容器
    
    Eg1:docker run -d -p 80:80 --name webserver nginx
    
    参数:
    -d: 后台运行容器并返回容器ID
    -p: 端口映射,格式为:主机(宿主)端口:容器端口
    --name: 为容器指定一个名称
    #该命令:用nginx镜像启动一个容器,命名为webserver,并映射了80端口。以便用浏览器访问nginx服务器
    
    //地址栏访问:http://localhost 即显示nginx
    
    Eg2:
    
    docker run  #运行容器的命令
    -it     #这是两个参数,一个是 -i:交互式操作,一个是 -t 终端(若要进入 bash 执行一些命令并查看返回结果,需要交互式终端)
    --rm     #容器退出后随之将其删除
    ubuntu:16.04  #用ubuntu:16.04 镜像为基础来启动容器
    bash    #放在镜像名后的是"命令",希望有个交互式Shell应用bash
    
    //退出容器:exit
    
    2.docker ps #显示状态为运行(Up)的容器
    
    3.docker ps -a #显示所有容器,包括运行中(Up)的和退出的(Exited)
    
    4.docker stop 容器NAMES #停止容器运行,发送信号SIGTERM
    
    5.docker start 容器NAMES #启动一个停止状态的容器
    
    6.docker restart 容器NAMES #重启一个容器
    
    7.docker rm 容器NAMES #删除一个容器
    
    8.docker diff 容器名(webserver) #查看具体的改动(本示例修改nginx启动显示为Hello Docker!//docker中 启动所有的容器命令
    
    docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中关闭所有的容器命令
    
    docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中删除所有的容器命令
    
    docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中删除所有的镜像
    
    docker rmi $(docker images | awk '{print $3}' |tail -n +2)   //tail -n +2 表示从第二行开始读取

    Docker与宿主机间互拷文件

    //从容器里拷备文件到宿主机
    docker cp containerid:/usr/local/*.js  /dir
    
    //从宿主机拷备文件到容器
    docker cp /dir/*.js containerid:/usr/local/

    ***慎用docker commit

    //定制镜像
    docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
    
    docker commit 
        --author "shiyufeng <shiyufeng@gmail.com>"   #修改作者
        --message "modify default webpage"     #本次修改内容
        webserver   
        nginx:v2
    
    //查看新定制的镜像
    docker image ls nginx
    
    //查看镜像内的历史记录
    docker history nginx:v2
    
    //运行新定制的镜像,容器名为web2
    docker run --name web2 -d -p 81:80 nginx:v2

    【镜像操作】

    0.docker info #查看docker配置信息,可查看镜像是否配置成功(key=Registry Mirrors)
    
    1.docker images / docker image ls #显示本地所有的镜像列表(顶层镜像)
    
    docker image ls ubuntu #根据仓库名列出镜像
    
    docker image ls ubuntu:16.04 #列出某个特定的镜像(仓库名:标签)
    
    docker image ls -a #显示包含中间层镜像的所有镜像 (显示的无标签镜像不要删除,是其他镜像所依赖的镜像)
    
    docker image ls -f since=mongo:3.2 #查看mongo:3.2之后建立的镜像(-f : --filter参数简写,过滤)
    
    docker image ls -f before=mongo:3.2 #查看mongo:3.2之前建立的镜像
    
    docker image ls -f label=com.example.version=0.1 #通过镜像构建时指定的label过滤
    
    docker image ls -q    #列出所有镜像ID
    
    docker image ls -q redis #列出所有仓库名为redis的镜像ID
    
    docker image ls --format "{{.ID}}: {{.Repository}}" #列出镜像ID和Reopository
    
    docker image ls --format "table {{.ID}}	{{.Repository}}	{{.Tag}}" #表格等距显示,并且有自定义标题行
    
    2.docker rmi IMAGE_ID #删除一个镜像
    
    docker image rm IMAGE_ID #应用IMAGE_ID删除镜像:IMAGE_ID可为短ID(取前3个即可)也可为长ID
    
    docker image rm NAMES #应用镜像名删除镜像(docker ps -a查看镜像名)
    
    docker image rm DIGEST #应用镜像摘要删除镜像(docker image ls --digests #查看镜像摘要)
    
    ##批量删除
    
    docker image rm $(docker image ls -q redis) #删除所有仓库名为redis的镜像(列出所有仓库名为redis的镜像ID)
    
    docker image rm $(docker image ls -q -f before=mongo:3.2) #删除所有在 mongo:3.2 之前的镜像
    
    //docker中 启动所有的容器命令
    
    docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中关闭所有的容器命令
    
    docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中删除所有的容器命令
    
    docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    //docker中删除所有的镜像
    
    docker rmi $(docker images | awk '{print $3}' |tail -n +2)   //tail -n +2 表示从第二行开始读取
    
    3.docker pull --help #查看docker pull选项帮助
    
    4.docker pull ubuntu:16.04 #从仓库(docker_hub)下载镜像到本地
    
    5.docker image ls -f dangling=true #仓库名、标签均为 <none> 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image)
    
    6.docker image prune #删除虚悬镜像
    
    docker system df #查看镜像、容器、数据卷所占用的空间
    
    docker tag hyperledger/fabric-tools:x86_64-1.0.0 hyperledger/fabric-tools:latest //给镜像文件打标签,x86_64-1.0.0标记为latest

    删除常见问题&解决image is referenced in multiple repositories

    执行:docker image rm $(docker image ls -q hyperledger/fabric-ca) 报上述错误。

    错误原因:镜像id指向了两个repository,因此无法删除。

    执行:docker rmi repository 删除即可。//respository方式删除。

    【定制镜像 & 构建镜像】

    https://yeasy.gitbooks.io/docker_practice/image/build.html

    1。定制镜像

    Eg1:以nginx镜像为基础,定制镜像
    //创建包mynginx mkdir mynginx //进入包mynginx cd mynginx //创建文件Dockerfile文本文件 touch Dockerfile //编辑Dockerfile文本文件 vi Dockerfile ##add content start //From指定基础镜像(定制镜像以一个镜像为基础,在其上定制)【必须&第一条指令】 FROM nginx //RUN用来执行命令行命令 RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html ## add content end Eg2:不以任何镜像为基础,以下指令作为第一层开始存在 //scratch为虚拟镜像,并不实际存在 FROM scratch ...
    2。构建镜像
    //构建镜像(在Dockerfile文件目录下执行),指定镜像名称:-t nginx:v3 "."表示当前目录,即指定上下文路径 docker build -t nginx:v3 . #docker build会将"."指定的上下方目录的内容打包交给Docker引擎以构建镜像

    说明:

    构建镜像语法格式:

    docker build [选项] <上下文路径/URL/->

    镜像构建过程:每一条命令即指定一层

    Step2/2: RUN指令启动了一个容器d5b8fb...,执行了所要求的命令,删除了用到的容器d5b8fb...,并最后提交了这一层632ba...

    注意:镜像构建上下文(Context)

    "." :表示当前目录,而Dockerfile就在当前目录。

    docker build工作原理:

    docker在运行时分为“Docker引擎(服务端守护进程)”和“客户端工具”。

    1。Docker引擎:提供了一组REST API,称为Docker Remote API。

       docker命令这样的客户端工具是通过这组API与Docker引擎交互,以完成各种功能。

    因此,虽然表面上我们好像是在本机执行各种 docker 功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。也因为这种 C/S 设计,让我们操作远程服务器的 Docker 引擎变得轻而易举

    【查看日志】

    //命令格式
    docker logs --help   //查看帮助
    
    //语法:
    docker logs [选项] CONTAINER
    
    Options:
            --details        显示更多的信息
        -f, --follow         跟踪实时日志
            --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
            --tail string    从日志末尾显示多少行日志, 默认是all
        -t, --timestamps     显示时间戳
            --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
    
    
    //查看指定时间后的日志,只显示最后100行:
    $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
    
    //查看最近30分钟的日志:
    $ docker logs --since 30m CONTAINER_ID
    
    //查看某时间之后的日志
    $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
    
    //查看某时间段日志:
    $ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

     工作中遇到的问题与解决方案:

    1。如何解决 image has dependent child images 错误

    docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=imageId)

    显示所有imageId,确认处理即可。

     

    Docker学习网址:https://yeasy.gitbooks.io/docker_practice/image/commit.html

  • 相关阅读:
    poj3252(组合数)
    cf-Global Round2-E. Pavel and Triangles
    cf-Global Round2-D. Frets On Fire(二分)
    cf-Global Round2-C. Ramesses and Corner Inversion(思维)
    trick
    2019ICPC南京网络赛B super_log(a的b塔次方)
    欧拉定理,欧拉降幂
    F. Moving On
    Codeforces Round #200 (Div. 1)D. Water Tree
    hdu5452
  • 原文地址:https://www.cnblogs.com/kaixinyufeng/p/9799381.html
Copyright © 2011-2022 走看看