Docker命令速查

    Docker概念

    镜像 :只读的模板

    容器
    :负责应用程序的运行。是从镜像创建的运行实例,互相隔离,安全的平台。

    镜像只读 :容器在启动时创建一层可写层作为最上层。(类似overlayfs)

    仓库 :集中存放镜像的地方,和github类似。https://hub.docker.com/

    Docker 安装

    ~~ {.sourceCode .bash}
    sudo apt-get install docker.io
    sudo gpasswd -a your_user_name docker #加入用户组
    sudo service docker restart
    newgrp - docker #使用新用户组,或者也可以断开终端重连生效
    docker version #查看docker版本信息
    ~
    ~

    docker下各文件默认存放在/var/lib/docker下

    du -h --max-depth=1 /var/lib/docker #查看docker目录大小

    Docker镜像操作

    ~~ {.sourceCode .bash}
    docker search licheepi #搜索镜像
    docker pull zepan/licheepi #下载镜像
    docker run zepan/licheepi apt-get install -y xxx #在镜像中执行命令,安装某软件
    docker commit -m="install something" -a="zepan" container_id zepan/licheepi
    docker login
    docker push zepan/licheepi
    ~
    ~

    Docker容器操作

    运行交互式的容器

    ~~~~ {.sourceCode .bash}
    docker run -i -t learn/tutorial /bin/bash //开启一个交互式虚拟终端
    -i 交互式
    -t 虚拟终端
    -d 后台
    -P 端口映射

    docker port id //查看端口映射情况

    docker inspect id //查看容器详细状态
    ~~~~

    启动容器(后台模式)

    ~~ {.sourceCode .bash}
    docker run -d learn/tutorial /bin/sh -c "while true; do echo hello world; sleep 1; done"
    返回容器id:350807154a3dd17309b23bb9a9a9897dd3fc91667a7d176aca42f390808e3019
    ~
    ~

    通过ps查看正在运行的容器实例

    ~~ {.sourceCode .bash}
    zepan@ubuntu:~$ docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    350807154a3d learn/tutorial "/bin/sh -c 'while---" 31 seconds ago Up 30 seconds blissful_lamport
    docker ps -l //查看最后运行的容器
    docker ps -a //查看所有容器
    ~
    ~

    查看对应容器的输出:

    ~~ {.sourceCode .bash}
    docker logs 3508 或 blissful_lamport
    docker logs -f xxxx //类似tail -f
    ~
    ~

    停止/开始/重启容器:

    ~~ {.sourceCode .bash}
    docker stop 3508 //通过发送信号方式停止
    docker kill 3508 //kill方式停止
    docker start 3508 //start -i 交互式执行
    docker restart 3508
    ~
    ~

    删除容器

    ~~ {.sourceCode .bash}
    docker remove 3508
    docker rm docker ps -a -q //删除所有容器
    ~
    ~

    主机容器互拷数据

    ~~ {.sourceCode .bash}
    docker cp id:/xxx/xx /yyy/yy/
    docker cp /yyy/yy/ id:/xxx/xx
    ~
    ~

    开启容器的ssh

    ~~ {.sourceCode .bash}
    docker run -d -p 6666:22 zepan/licheepi /usr/sbin/sshd -D
    ~
    ~