第一个Docker容器
    1、首先确保Docker运行正常:docker info
    2、启动以第一个Docker容器:docker run -i -t ubuntu /bin/bash
        命令说明:
            ubuntu:这个是基础镜像名称,可以是mysql、redis等所有的基础镜像,他指以什么镜像创建一个新的容器,此例子使用ubuntu,指在ubuntu镜像的基础上创建一个镜像(在基础镜像上可以加各种其他操作,本例子只是单纯的使用ubuntu镜像创建了一个容器,未做其他附加操作)。
            -i :说明这是一个标准输入,可以进行交互, -t :告诉Docker要为新创建的容器创建一个伪tty终端,从而可以进行交互。简单的说,-i -t 两个一起使用,我们才能在终端使用命令操作新创建的容器。(与之相反的是运行在后台不能进行交互的容器,后面会说到)
            /bin/bash:执行命令后进入容器的shell界面,即直接可以与新创建的容器进行交互(看下图红色标记,即为新增容器ID,说明已经进入新建容器的shell界面)。
    3、使用第一个容器
        查看新容器的相关信息
        查看容器主机名:hostname   ,实际上与容器ID一致。
       
         查看host文件:cat /etc/hosts
      
         查看容器接口:ip a
                说明:(1)如果出现bash: ip: command not found错误:执行 apt-get install iproute iproute-doc 命令
                          (2)如果第(1)步出现Unable to locate package iproute-doc 错误,执行 apt-get install xrdp 命令(这一步非常慢,耐心等待)
                          (3)如果第(2)步出现Unable to locate package xrdp 错误,执行 apt-get update 命令
                          (4)如果第(2)步出现Package 'iproute' has no installation candidate 错误,执行 apt-get update 、apt-get upgrade、apt-get install iproute命令
 
          检查容器进程:ps -aux
         
                
           在第一个docker容器中安装软件包,这里使用安装vim软件作为示例
                apt-get update && apt-get install vim
          
          退出在容器的操作,返回宿主机:exit   (下面示例可以看出原来在ID为78cb60275879的容器内,执行exit命令后,返回了宿主机)
         
          如果想重新进入终端后,可以使用 docker ps 查看正在运行的docker容器,可以使用docker ps -a 查看所有docker列表(无论是否正在运行)
          
          重新进入docker 终端,使用 docker attach 78cb60275879 命令,后面的一串字符为上一步的容器ID,也可以使用上一步的容器名称(首先保证docker是运行中的,而不是停止的)。
          
        4、容器命名
            docker run --name UbuntuOfLcl -i -t ubuntu /bin/bash   比原来命令多了 --name参数,可以发现新创建的容器名称即为--name设置的名称
        
        5、重新启动已停止的容器
        docker start UbuntuOfLcl 或 docker start 1c9f7e4c618f   即既可以使用容器名称重启,也可以使用容器ID重启,红色标记处,Up为正在运行,Exit为已停止运行
      
        6、进入正在运行的docker容器
        docker attach UbuntuOfLcl        第五步虽然启动了docker,但是shell仍然在宿主机上,如果想使用shell操作启动后的docker容器,需要该步操作。
        
        7、创建后台运行容器
        前面的例子展示的都是创建一个交互试的容器,一旦退出shell,容器就会停止运行,不适合做服务器;现在创建一个非交互容器。
        docker run --name lcl2 -d ubuntu /bin/sh
        
        也可以在启动时加一些操作,例如让后台输出一些内容,可以使用-c参数:docker run --name lcl4 -d ubuntu /bin/sh -c "while true; do echo hi lcl;sleep 1;done"
        
        docker logs lcl3 查看后台  docker logs -f lcl3 动态查看后台
        
        8、日志驱动,可以使用--log-driver
        docker run --log-driver="syslog" --name lcl4 -d ubuntu /bin/sh -c "while true; do echo hi lcl;sleep 1;done"
        9、查看docker容器内部进程:docker top lcl5
        
        10、查看docker容器内部统计信息:docker stats lcl5
        
        11、在容器内运行进程:exec
            (1)运行后台进程(无需交互)
                docker exec -d UbuntuOfLcl touch /etc/newFile   可以看到下面红色标注的内容,文件已创建
                
            (2)运行交互试命令:docker exec -t -i UbuntuOfLcl /bin/bash   该命令在UbuntuOfLcl容器内创建了一个新的交互shell
                
        12、停止守护式容器
                docker stop UbuntuOfLcl  和启动一样,可以使用名称停止,也可以使用容器ID停止。
                
           13、查看最近创建的容器:docker ps -n x   x为最近创建的容器的数量
                
            14、自动重启容器:restart
                docker run --restart=always --name lcl6 -d ubuntu /bin/sh -c "while true;do echo hello word;sleep 1;done"
                
                说明:书中描述,--restart标志可以为always和on-failure,其中设置为always时,无论什么情况停止的容器都会重启,设置为on-failure时,只有当退出标志为非0的时候才会重启。另外on-failure还接受一个可选的参数数值,表示最多可重启的次数,例如on-failure:5,即最多可以重启5次。(特殊说明:改处的always,我在使用stop命令停止容器时,使用docker ps -a命令查看停止的容器并没有重新启动,状态仍未Exited,不清楚改处是操作问题还是其他隐藏的东西,待验证。)
            15、深入容器
                查看容器:docker inspect lcl5  该命令可以查看非常详细的容器信息,下面截图未全部展示信息。
                
                有选择的获取容器信息    --formart 或 -f
                docker inspect -f='{{ .State.Running }}' lcl5  查看容器运行状态(说明:=号左右一定不要有空格,否则会报错,如下图第三条命令,=号也可以省略)
                docker inspect -f='{{.NetworkSettings.IPAddress}}' lcl6  查看容器IP地址(说明:停止运行的容器是没有IP地址的,如下图的lcl5,只有正在运行的容器才有IP地址,如下图的lcl6)
                
                可以同是查看多个容器的信息
                docker inspect -f '{{.Name}} {{.State.Running}} {{.NetworkSettings.IPAddress}}' lcl4 lcl5 lcl6  (同时查看lcl4、lcl5、lcl6三个容器的名称,运行状态和IP地址)
                
                如果想深入了解docker,在宿主机的/var/lib/docker/containers/目录下,存放着Docker镜像、容器及容器的配置等信息,下面截图中每一个文件夹对应一个docker容器
                
                16、删除容器
                docker rm lcl7   同样可以使用名称删除,也可以使用容器ID删除
                
                目前docker没有提供删除所有容器的命令,但是可以使用小技巧来删除:docker rm $(docker ps -a -q)
                
 
 

Docker基本命令及工作原理的更多相关文章

  1. Docker 架构及工作原理

    通过下图可以得知,Docker 在运行时分为 Docker 引擎(服务端守护进程) 和 客户端工具,我们日常使用各种 docker 命令,其实就是在使用 客户端工具 与 Docker 引擎 进行交互. ...

  2. 用一个实际例子理解Docker volume工作原理

    要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理.Docker镜像是由多个文件系统的只读层叠加而成.当一个容器通过命令docker run启动时,Docker会加载只读 ...

  3. Docker Macvlan 介绍 or 工作原理

    Docker Macvlan Network Macvlan Network:属于Docker的网络驱动. Macvlan Network:Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识 ...

  4. Docker Weave 介绍 or 工作原理

    Docker Weave Network Weave Network:属于第三方网络项目. Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加 ...

  5. Docker OpenvSwitch 介绍 or 工作原理

    Docker OpenvSwitch Network 介绍 什么是OpenVSwich OpenvSwich Network:属于第三方网络项目,可以理解为是一个标准的交换机协议. OpenvSwic ...

  6. Docker Swarm 介绍 or 工作原理

    Docker Swarm 介绍 Swarm 简介 Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swar ...

  7. GIT的工作原理和基本命令

    1.GIT的工作原理 工作区:我们写代码的地方. 暂存区:临时存储用的. 历史区:生成历史版本的地方. 提交流程:工作区->暂存区->历史区 图示: 2.GIT的全局配置 3.创建仓库完成 ...

  8. 15个Docker基本命令及用法

    Docker入门教程:15个Docker基本命令及用法   本文中,我们将学习15个Docker命令以及命令的用法和功能,并通过实践学习它是如何工作的. AD:51CTO 网+ 第十二期沙龙:大话数据 ...

  9. [Kubernetes] CRI 的设计与工作原理

    咱们来看看,有了 CRI 之后, Kubernetes 的架构图: 我们可以看到, CRI 机制能够发挥作用的核心,在于每一个容器项目现在都可以自己实现一个 CRI shim ,自行对 CRI 请求进 ...

随机推荐

  1. Alpha冲刺——4.30

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.规 ...

  2. 安装xlrd包的时候,总是报错:ERROR: Could not install packages due to an EnvironmentError: HTTPConnectionPool (host='127.0.0.1', port=8888):。。。

    安装xlrd包的时候,总是报错:ERROR: Could not install packages due to an EnvironmentError: HTTPConnectionPool (ho ...

  3. 【HIVE高级笔试必备题型】(组内topN、相邻行的值比较问题)求语文大于数学_/_求文科大于理科成绩的学生

    Hive SQL练习之成绩分析 数据:[id, 学号,班级,科目,成绩] 1,1,1,yuwen,80 2,1,1,shuxue,85 3,2,1,yuwen,75 4,2,1,shuxue,70 5 ...

  4. 【Mybatis】mybatis3入门

    mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  5. Spring 内部方法调用失效问题(AOP)

    AOP使用的是动态代理的机制,它会给类生成一个代理类,事务的相关操作都在代理类上完成.内部方式使用this调用方式时,使用的是实例调用,并没有通过代理类调用方法,所以会导致事务失效. 解决办法 方式一 ...

  6. Java实现 LeetCode 639解码方法 2(递推)

    639. 解码方法 2 一条包含字母 A-Z 的消息通过以下的方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 除了上述的条件以外,现在加密字符串可以 ...

  7. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  8. Java实现 蓝桥杯VIP 算法训练 输出米字形

    例如:n=3时,包含A,B,C:n=4时,包含A,B,C,D. 矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北.正北.东北.正西.正东.西南.正南.东南八个方向各有一条由大写字母组 ...

  9. LoadRunner性能测试笔试/面试题

    客户交付一个性能测试项目,请阐述你的实施流程. 测试设计阶段: 1)了解被测系统的性能需求,定义测试目标和范围: 2)了解系统的技术信息,如系统架构等: 3)确定测试方案.进度安排,并制定测试计划,场 ...

  10. leetcode 反转链表部分节点

    反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, ...