zoukankan      html  css  js  c++  java
  • docker的操作

    查询容器
    docker ps 
    只能查询到正在运行的docker镜像;
    如果添加上-a的选项,则会显示所有的(包括已经exit,未启动)的容器

    基于一个镜像来构建(run)容器,并启动

    docker run -i -t centos /bin/bash 

    -i 代表要运行的docker提供的标准输入(STDIN);
    -t 代表tty,启动一个伪终端;
    /bin/bash 代表告知docker要启动的应用程序/bin/bash(一种Unix的shell应用)。
    docker容器的命名方式:
     docker run --name centons7 -i -t centso /bin/bash 
    这样就指定了docker的名称(默认docker会随机生成的名称),但是无法通过docker images看到名称,只能是启动之后,通过docker ps来看到docker的名称;
    对于docker的start,以及attach操作,一定是在docker的run之后(run可以理解为加载到了内存中),才可以进行操作,run之后的exit只是容器退出了当前的shell,仍然处于加载的状态。
    docker run可以理解为一个复合命令,build container & docker start & docker attach
     

    docker使用的正常姿势

    1.docker run来创建docker container,可以指定名称,资源;如果指定参数为 -it 可以实现attach的效果;
    2.docker start dockerName来启动一个已经创建的container,其中dockerName是通过ps( -a)来获取,如果在run的时候已经起了一个名字则直接拿来用;
    3.docker attach 进入到一个已经启动的container的shell(命令行)
    4.通过命令行exit来退出;一旦exit之后,就意味着container被stop了;如果想要再次使用就需要进行start;

    docker exec

    docker exec是指对于已经被attach(run -i -t或者attach)的容器(container)进行操作;如果已经被exit的container是无法使用exec的。
    exec有两类操作:
      一类是后台操作,只是默默的在后台执行一个操作:docker exec -d uv touch /opt/test.txt;
      第二类是终端交互,进入到用户的shell(伪tty),进行操作,docker exec -i -t uv /bin/bash
      另外,docker exec可以进入到docker run -d之后的容器命令行,attach对于-d的容器无法进入;

    docker中指定HostName

      在docker里面无法使用hostnamectl来设置机器名称;可以通过
       docker run -h hostname 
      的方式来指定hostname。
    docker run的-d指令
      -d选项代表docker进程的运行方式是守护进程方式(daemon),可以理解为在“后台执行”。但是如果docker run在最后指定了CMD,无论这个CMD是指令还是执行脚本,docker进程的使命就是执行命令,命令执行完毕,docker进程释放;所以-d的价值其实在于/bin/bash,或者执行脚本中包含有
       tail -f /dev/null 
      这类指令,可以将进程Hold住;否则就会出现执行完脚本之后docker退出(通过docker ps -a看到docker状态已经是Exit)。
    docker仓库拉取
     一旦从docker仓库中拉取过来,他的名字就发生了变化,比如从内网的私服10.1.108.108:5000中拉取docker,容器的名称就是10.1.108.108:5000/XXX,这是因为这个名字在私服里面就是这个名字,那么这个名字的前缀是因为制作镜像的时候,为了能够push到指定仓库(这里是10.1.108.108)才这样起名字。run的时候就需要添加这个前缀:
       sudo docker run --name registry --restart=always -d -p 5000:5000 10.1.108.108:5000/registry
     
    docker的卸载
    yum list installed | grep docker
    docker-engine.x86_64                    1.7.1-1.el7.centos             installed
    yum -y remove docker-engine.x86_64
    docker的异常处理
    1. Error running DeleteDevice dm_task_run failed
    重启docker即可

    2. Error starting daemon: error initializing graphdriver: "/var/lib/docker" contains several valid graphdrivers: devicemapper, overlay; Please cleanup or explicitly choose storage driver (-s <DRIVER>)
    到/var/lib/docker根据情况,将下面的overlay或者devicemapper文件夹删掉即可。这种情况发生在使用采用dc/os安装后,原有的devicemapper模式修改成了overlay,但是docker同时只能支持一种存储模式。


  • 相关阅读:
    最大的错误就是没有把自己的软件开发事业当 作一桩生意来看待
    python:open/文件操作
    Python 之ConfigParser
    Python 之ConfigParser
    Python 之ConfigParser
    python的time模块使用
    python的time模块使用
    python的time模块使用
    国外、国内各大OJ
    国外、国内各大OJ
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/7441524.html
Copyright © 2011-2022 走看看