第一章 环境准备
  1. 本次学习环境为在虚拟机Workstation 12 Pro-12.5.0 build-4352439,安装的最新的ubuntu桌面版 ubuntu-16.04-desktop-amd64,内核为4.4.0-21-generic。
  2. 使用xshell工具连接虚拟机。首次使用需要虚拟机开启ssh服务。
第二章 安装docker

sudo apt-get install docker.io

  • 验证docker信息
sudo docker info

sudo docker build sudo docker build -t_Docker

第三章 运行docker

sudo docker run -i -t ubuntu /bin/bash

sudo docker build sudo docker build -t_Docker_02

  • 首先,我们告诉Docker执行docker run命令,并指定了-i 和 -t 两个参数。-i 标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中。持久的标准输入时交互式shell的“半边天”,-t 标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端。这样,新创建的容器才能提供一个交互式shell。若要在命令行下创建一个我们能与之进行的容器,而不是一个运行后台服务的容器(即退出登录后,docker容器即停止运行),则这两个参数已经是最基本的参数了。
  • 停止Docker

exit

  • 为Docker容器指定名称(注意: “–name”–为两个相邻的英文的减号-,直接在这里复制不好使)

sudo docker run –name my_first_docker -i -t ubuntu /bin/bash

  • 再次以名称启动Docker

sudo docker start my_first_docker

  • 查看运行中的Docker

sudo docker ps

  • 附着到容器上,Docker重新启动的时候,会沿用Docker run命令时指定的参数来运行,因此我们容器重新启动后会运行一个交互式会话shell。此外,我们也可以用docker attach命令,重新附着到该容器的会话上。可能需要重新按下回车键才能进入该会话。

sudo docker attach my_first_docker

  • 创建守护式容器
sudo docker run –name daemon_dave -d ubuntu /bin/bash -c “while true; do echo hello world; sleep 1; done”

sudo docker build sudo docker build -t_sudo docker build_03

  • 容器内部都在干什么

sudo docker logs daemon_dave
或者使用-f 类似tail -f 命令,用ctrl+c退出日志跟踪。
sudo docker logs -f daemon_dave
我们也可以跟踪容器日志的某一片段,和之前类似,只需要在tail 命令后加入-f –lines标志即可。例如:
sudo docker logs –tail 10 daemon_dave 获取日志的最后10行内容。
另外,也可以用
sudo docker logs –tail 0 -f daemon_dave 命令来跟踪某个容器的最新日志而不必读取整个日志文件。

  • 为了让调试更简单,我们还可以使用-t标志为每条日志加上时间戳,

sudo docker logs -ft daemon_dave

  • 查看容器内的进程
    除了容器中的日志,我们也可以查看容器内部运行的进程。要做到这一点,要使用docker top命令。

sudo docker top daemon_dave

  • 在容器内部运行进程 -d 表明打开一个后台进程

sudo docker exec -d daemon_dave touch /etc/new_config_file

  • 如需启动一个shell交互式任务,需要-t,-i

sudo docker exec -t -i daemon_dave /bin/bash

  • 停止守护式线程

sudo docker stop daemon_dave

  • 自动重启容器
    如果由于某种错误而导致容器停止运行,我们还可以通过–restart标志,让Docker自动重新启动该容器。–restart 标志会检查容器的退出代码并根据此来决定是否需要重启容器。默认的行为是不会重启容器。

sudo docker run –restart=always –name daemon_dave1 -d ubuntu /bin/sh “while true; do echo hello world; sleep 1; done”

  • 在本例中,–restart 标志被设置为always。无论容器的退出代码是什么,docker都会自动重启该容器。除了always,我们还可以将这个标志设置为on-failure,这样,只有当容器的退出代码为非0值得时候,才会重启。另外,on-failure 还接受一个可选的重启次数参数。

–restart=on-faliure:5

  • 深入容器

sudo docker inspect daemon_dave

  • 删除容器

sudo docker rm daemon_dave
需要注意的是,运行中的容器是无法删除的!你必须先通过docker stop或者docker kill命令停止容器,才能删除。

  • 删除所有容器
sudo docker rm `sudo docker ps -a -q`
注意箭头所指的为键盘左上角挨着键位1左边的键,也就是这个【`~】组合键:

sudo docker build sudo docker build -t_ubuntu_04