Docker 学习笔记

一 :  CentOS 6.10 安装docker

1、CentOS 安装docker

    (1) 环境: yum install -y epel-release

    (2) 安装: yum install -y docker-io

    (3) 安装后的配置文件: /etc/sysconfig/docker

    (4) 启动docker后台服务: service docker start

    (5) docker version验证

2、镜像加速器:(阿里、网易)

    vim /etc/sysconfig/docker

              other_args="--registry-mirror=https://co95oz5s.mirror.aliyuncs.com"(自己申请account阿里生成)

               service docker restart  (重启服务)

3. 启动docker后台容器(测试 hello world)

    docker run hello-world   (由于本地没有helllo-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行)

        Unable to find image 'hello-world:latest' locally   latest: Pulling from hello-world

 4.Docker运行原理:

    Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,

    守护进程从客户端接受命令并管理运行在主机上的容器。容器,就是一个运行时的环境,就是我们前面说到的集装箱。

二: docker常用命令

    1.帮助命令:

          (1) docker version

          (2) docker info  

          (3) docker --help

    2.镜像命令:

       (1)docker images : 列出本地主机上的镜像

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

              -q : 只显示镜像id           docker images -q  /  docker images -qa

              --digests : 显示镜像的摘要信息

              --no-trunc : 显示完整的镜像信息

      (2) docker search 某个xxx镜像名字

            options: 

              --no-trunc : 显示完整的镜像描述

              -s : 列出收藏数不小于指定值的镜像   docker search -s 30 tomcat

              --automated: 列出automated build 类的镜像 search -s 30 --automated tomcat

       (3)docker pull 某个xxx镜像名字

            下载镜像: docker pull 镜像名字:[:TAG]

            docker pull tomcat  <==> docker pull tomcat:lastest

       (4)docker rmi  某个xxx镜像名字

            ①删除单个  docker rmi -f 镜像ID

                docker rmi  hello-world

                docker rmi  -f  hello-world 强制删除

            ②删除多个  docker rmi -f 镜像名1:TAG镜像名2TAG

                docker rmi -f  nginx  hello-world

            ③删除全部 docker rmi  -f  $(docker images -qa)

    3.容器命令:

        (1) 新建并启动容器

            docker run [options] IMAGE [COMMAND][ARG…]

            * options说明(常用):

                --name=”容器新名字” :为容器指定一个名称;

                -d : 后台运行容器,并返回容器ID,也即启动守护式容器;

                -i : 以交互模式运行容器,通常与 -t 同时使用

                -t : 为容器重新分配一个伪终端,通常与 –i 同时使用

                -P : 随机端口映射

                -p : 指定端口映射,有以下四种方式

                    ip: hostPort:containerPort

                    ip::containerPort

                    hostPort:containerPort

                    containerPort

        (2) 列出当前所有正在运行的容器

            docker  ps [options]

                options : 说明(常用)

                    -a : 列出当前所有正在运行的容器 + 历史上运行过的

                    -I : 显示最近创建的容器 (last –上一个)

                    -n : 显示最近n个创建的容器

                    -q : 静默模式,只显示容器编号

                    -no-trunc : 不截断输出

        (3) 退出容器

                exit : 容器停止退出

                ctrl +P+Q : 容器不停止退出

        (4) 启动容器

                docker start 容器ID/容器名字

              docker restart 容器ID/容器名字   (重启)

        (5) 停止容器

                docker stop 容器ID/容器名字

        (6) 强制停止容器

                docker kill 容器ID/容器名字

        (7) 删除已停止的容器

            docker rm 容器ID 

        一次性删除多个

         docker rm –f  $(docker ps –a -q)         

            docker ps –a –q | xargs docker rm

重要:

        1. 启动守护式容器

                docker run -d 容器名

                docker run -d centos

        2. 查看容器日志

                Docker logs -f -t -tail 容器ID

              -t : 是加入时间戳

              -f : 跟随最新的日志打印

             --tail: 数字显示最后多少条

        3. 查看容器内运行的进程

                docker top 容器名

        4. 查看容器内部细节

                docker inspect 容器ID

        5. 进入正在运行的容器并以命令行交互

            (1) docker exec –it 容器ID bashShell

                    docker exec –it 容器ID  /bin/bash

            (2) 重新进入docker attach 容器ID

            上述区别: attach : 直接进入容器启动命令的终端,不会启动新的进程

                       exec : 是在容器中打开新的终端,并且可以启动新的进程