Docker基础知识
Docker文档
Docker基础知识
用Docker创建一个具体应用的实例
讲解Docker命令的网站
三个基本的概念:镜像,容器,仓库
常用的docker命令
docker镜像
docker run
1 | docker run -t -i ubuntu /bin/bash |
- docker run - 运行一个容器
- -t - 分配一个(伪) tty (link is external)
- -i - 开发输入(so we can interact with it)
- ubuntu - 使用ubuntu基础镜像
- /bin/bash - 运行bash shell
复制粘贴现在运行的容器 ID (30557c9017ec in my case). 运行docker diff
在对容器进行了安装应用,修改文件等后记得重新提交镜像
在容器中添加 json 和 gem 两个应用。
1 | root@0b2616b0e5a8:/# gem install json |
当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交
更新后的副本。1
sudo docker commit -m "changes" -a "name" 0b2616b0e5a8 ouruser/sinatra:v2
其中, -m 来指定提交的说明信息,跟我们使用的版本控制工具一样; -a 可以指定更新的用户信息;之后是用来创建镜像的容器的ID;最后指定目标镜像的仓库名和tag信息。创建成功后会返回这个镜像的ID信息。
dockerfile常见镜像
使用docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker
build 来创建一个新的镜像。为此,首先需要创建一个Dockerfile,包含一些如何创建镜像的指令。
1 | $ sudo docker build -t="ouruser/sinatra:v2" . |
其中-t标记来添加tag,指定新的镜像的用户信息。“.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的Dockerfile的路径。
此外,还可以利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD 命令来
描述容器启动后运行的程序等。例如
1 | # put my local web site in myApp folder to /var/www |
删除镜像
如果要移除本地的镜像,可以使用docker rmi命令。注意docker rm 命令是移除容器
注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。
容器
简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
因为Docker的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
新建并启动
所需要的命令主要为 docker run 。
启动已终止容器
可以利用docker start 命令,直接将一个已经终止的容器启动运行。
后台(background)运行
更多的时候,需要让 Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。1
sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
此时容器会在后台运行并不会把输出的结果(STDOUT)打印到宿主机上面(输出结果可以用docker logs 查
看)。
终止容器
可以使用 docker stop 来终止一个运行中的容器。
此外,当Docker容器中指定的应用终结时,容器也自动终止。 例如对于上一章节中只启动了一个终端的容
器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。
此外, docker restart 命令会将一个运行态的容器终止,然后再重新启动它。
终止状态的容器可以用docker ps -a 命令看到。
当前运行的容器可以用docker ps命令看到哦。
进入后台运行的容器
1 | louis@uuu:~$ sudo docker ps -a |
docker attach