Docker总结

主要介绍Docker的基本知识


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
2
3
4
5
6
#	put	my	local	web	site	in	myApp	folder	to	/var/www
ADD myApp /var/www
# expose httpd port
EXPOSE 80
# the command to run
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

删除镜像

如果要移除本地的镜像,可以使用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
2
3
4
5
6
louis@uuu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
598babdcf920 ded5e192a685 "/bin/bash" 4 days ago Exited (0) 4 days ago high_raman
5d3d10c408a8 ded5e192a685 "/bin/bash" 4 days ago Exited (1) 4 days ago goofy_mahavira
f3c57e6f9f9b ubuntu:14.04 "/bin/sh -c 'while tr" 12 weeks ago Exited (137) 12 weeks ago gigantic_fermi
311a073ffcf8 centos "/bin/bash" 3 months ago Exited (0) 3 months ago focused_kalam

docker attach

Docker数据卷

介绍数据卷