什么是Docker?
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
准备
Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。
检查docker的版本,可以用来确认docker服务在运行并可通过客户端链接。
$docker version
搜索可用docker镜像
Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。
命令格式:docker search 镜像名字
$docker search tutorial
下载容器镜像
下载镜像的命令非常简单,使用docker pull
命令即可。在docker的镜像索引网站上面,镜像都是按照用户名/镜像名的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。
提示
:
执行pull命令的时候要写完整的名字,比如"learn/tutorial"。
命令:
$docker pull learn/tutorial
在docker容器中运行hello world!
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
提示:
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
命令:
# 在这个容器中运行"echo"命令,输出"hello word"。
$docker run learn/tutorial echo "hello word"
在容器中安装新的程序
在learn/tutorial镜像里面安装ping程序。
提示:
在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。
命令:
$docker run learn/tutorial apt-get install -y ping
保存对容器的修改
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。
首先使用docker ps -l
命令获得安装完ping命令之后容器的id。然后把这个镜像保存为指定的名称,例如"learn/ping"。
提示:
- 运行
docker commit
,可以查看该命令的参数列表。 - 你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
- 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。
命令:
$docker commit 698 learn/ping
执行完docker commit
命令之后,会返回新版本镜像的id号。
运行新的镜像
在新的镜像中运行ping www.baidu.com
命令。
提示:
使用新的镜像名learn/ping来运行ping命令。
命令:
$docker run lean/ping ping www.baidu.com
检查运行中的镜像
使用docker ps
命令可以查看所有正在运行中的容器列表,使用docker inspect
命令我们可以查看更详细的关于某一个容器的信息。
提示:
可以使用镜像id的前面部分,不需要完整的id。
命令:
$ docker inspect efe
发布自己的镜像
把learn/ping镜像发布到docker的index网站。
提示:
1.docker images
命令可以列出所有安装过的镜像。
2.docker push
命令可以将某一个镜像发布到官方网站。
3.你只能将镜像发布到自己的空间下面。这个模拟器登录的是learn帐号。
命令:
$ docker push learn/ping
简单示例:
docker commit d061426a48f9 learn/ping
docker login --username=admin --password=123456 --email=111111@qq.com
docker tag 3ab5a5daf431 admin /learn/ping:1.0
docker push admin/ubuntu