Docker 学习

  • 安装好Docker 并且能运行 Docker HelloWorld 后
  • 运行一个容器
    sudo docker run -i -t ubuntu /bin/bash

    • -i 保证容器 STDIN 开启
    • -t 告诉 Docker 为要创建的容器分配一个伪 tty 终端
    • 这样新创建的容器才能提供一个交互式Shell
    • 容器创建完毕后就会执行容器中的 /bin/bash 命令启动一个Bash shell
  • 使用第一个容器

    • 在容器中执行命令
      apt-get update
      apt-get install vim
    • 更新 Ubuntu , 安装 vim
  • 退出容器
    exit 退出当前容器

  • 查看容器
    sudo docker ps -a 查看当前系统中容器的列表
    sudo docker ps 查看当前系统正在运行的容器

    • 最后一列可以看到 容器名称

容器命名
sudo docker run -name ubuntu-test -i -t ubuntu /bin/bash
创建一个 名为 ubuntu-test 的容器

  • 删除容器
    sudo docker rm "容器名称或者 ID"

  • 启动停止的容器
    sudo docker start ubuntu-test

  • 连接正在运行的 容器
    sudo docker attach ubuntu-test 按回车进入回话

  • 创建一个守护式容器
    sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world ; sleep 1; done"

    • 命令创建了一个名为 daemon_dave 的容器
    • -d 参数 会将容器放到后台运行
    • 该命令一直打印 hello world ,知道容器或其进程停止运行
  • 获取容器日志
    sudo docker logs daemon_dave 输出最后几条日志项并返回
    sudo docker logs -f daemon_dave 跟踪日志,通过 ctrl + c 退出
    sudo docker logs -ft daemon_dave 加上时间戳

  • 查看容器内部进程
    sudo docker top daemon_dave 查看容器内部所有进程

  • 在容器内部运行进程
    sudo docker exec -t -i daemon_dave /bin/bash
    在容器内创建一个新的 bash 会话

  • 停止守护式容器
    sudo docker stop daemon_dave

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
docker run -i -t ubuntu /bin/bash #-i保证容器stdin开启,-t为容器分配一个伪tty终端。这样容器才能提供一个交互式shell
hostname #查看容器的主机名
cat /etc/hosts #查看hosts文件
ps -aux #查看容器中的进程
apt-get update & apt-get install vim #一样可以在容器里安装程序
exit #退出容器

docker ps #查看运行中的docker容器,-l 最后一次运行的容器
docker run -i -t --name=容器名称 ubuntu /bin/bash #默认随机名称,--name起名
docker start 容器名称或者容器ID
docker attach 容器名称或者容器ID #附着到正在运行的容器上
docker run --name=容器名称 -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done" #创建可以长期运行的守护式容器
docker logs 容器名称 #获取容器日志 -f 可以获取到最后几行,-t 可以显示时间戳

docker top 容器名称 #查看容器内部的进程
docker exec -d 容器名称 touch /etc/new_config_file #在容器内执行命令
docker exec -t -i 容器名称 /bin/bash #打开容器的shell

docker stop 容器名称 #停止一个容器
docker run --restart =always --name 容器名称 -d ubuntu /bin/bash -c "while true;do echo hello;sleep 1;done" #创建一个能够自动重启的容器,always 可以替换为on-failure,可以指定次数如:on-failure:5
docker inspect 容器名称或者ID #获取更多的容器信息
docker inspect --format='{{.State.Running}}' 容器名称 #选定查看结果
docker rm 容器名称或者ID #删除一个容器
docker ps -a #列出所有容器
docker ps -a -q #列出所有的
docker rm `ps -a -q` #删除所有的容器