Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker基础命令
docker version
查看docker版本
docker info
查看docker是否正确安装
sudo docker pull busybox
使用预先构建的镜像来创建一个镜像或者是容器
BusyBox是最小的Linux系统,他提供了该系统的主要功能,不包含一些与GUN的相关功能和选项
docker run busybox /bin/echo Hello World!
- linuxdocker run busybox echo hello world!
- windows
打印Hello world!字样
sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")
以后台进程的方式运行hello dockerdocker logs $sample_job
查看job的当前状态
docker help
查看docker的所有的命令docker stop $sample_job
停止名为sample_job的工作进程docker restart $sample_job
重启名为sample_job的工作进程docker rm $sample_job
完全移除$sample_job工作进程,要先停止docker commit $sample_job job1
将容器状态保存为镜像,镜像名称只能取字符[a-z]和数字[0-9]docker images
查看所有镜像列表docker search (image-name)
检索名称为image-name的镜像docker history (image-name)
查看名称为image-name的镜像历史版本docker push (image-name)
将镜像推送到registry上
daemon
用于管理容器的后台进程。一般情况下,守护进程是一个长期运行的用来处理请求的进程服务。-d参数用于运行后台进程
docker build [options] PATH|URL
可以使用Dockerfile来构建镜像
还有一些Docker提供的额外选项,如:
–rm=true表示构建成功后,移除所有中间容器
–no-cache=false表示在构建过程中不使用缓存
docker attach container
与运行中的容器交互,并且可以随时观察容器內进程的运行状况
docker diff container
列出容器内发生变化的文件和目录,add/delete/change
events
打印指定时间内的容器的实时系统事件
docker import http://example.com/example.tar
docker import - example.tar
使用HTTP的URL从远程位置导入,而本地文件或者目录的导入需要使用-
参数
docker export container > image.tar
用于将容器的系统文件打包
docker cp container:path hostpat
从容器内复制文件到指定的路径上
docker login [options] [server]
docker login localhost:8080
使用login登录Docker registry服务器,第二行是登陆到本机的registry
docker inspect container/image
收集有关容器和镜像的底层信息,包括容器的示例的IP地址,端口绑定列表,特定端口映射的搜索,收集配置的详细信息
docker kill [options] container
发出SIGKILL信号来停止容器的主进程
docker rmi image
移除一个或者多个镜像
docker wait 7su6sdf734
阻塞对指定容器的其他调用方法,知道容器停止后退出阻塞
docker load -t app.tar
从tar文件中载入镜像或仓库到STDIN
docker save image
保存镜像为tar文件并发送给STOUT
Dockerfile
Dockerfile 包含创建镜像所需要的全部指令。基于在Dockerfile中的指令,我们可以使用Docker build
命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。
会使用INSTRUCTION argument这样命令格式
FROM <image name>
指定镜像基于哪个镜像创建,接下来的命令也会基于这个基础镜像
MAINTAINER <author name>
设置镜像的作者
RUN <command>
在shell或者exec的环境下执行
ADD <source> <destionation>
复制文件指令。destionation是指容器内的路径。source可以是URL或者启动配置上下文的一个文件
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2
CMD是提供了容器默认的执行命令,多个CMD会抵消之前所有的指令,只有最后一个生效
EXPOSE <port>
指定容器在运行时监听的端口
ENTRYPOINT ["executable", "param1","param2"
ENTRYPOINT command param1 param2
ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。
WORKDIR /path/to/workdir
指定RUN、CMD与ENTRYPOINT命令的工作目录
ENV <key> <value>
设置环境变量。它们使用键值对,增加运行程序的灵活性
USER <uid>
镜像正在运行时设置一个UID
VOLUME ["/data"]
授权访问从容器内到主机上的目录
Docker Registry
Docker API
Docker Registry API
Docker Registry API是Docker Registry的REST API,它简化了镜像和仓库的存储。该API不能访问用户帐户或者获得授权。
GET /v1/images/(image_id)/layer
取出镜像层PUT /v1/images/(image_id)/layer
插入镜像层GET /v1/images/(image_id)/json
检索镜像GET /v1/images/(image_id)/ancestry
检索根镜像GET /v1/repositories/(namespace)/(repository)/tags
GET /v1/repositories/(namespace)/(repository)/tags/(tag*)
获取库里所有的标签或者指定标签DELETE /v1/repositories/(namespace)/(repository)/tags/(tag*)
删除标签GET /v1/_ping
registry状态检查
Docker Hub API
Docker Hub API是Docker Hub的一个简单的REST API。Docker Hub 通过管理校验(checksums)以及公共命名空间(public namespaces)来控制着用户帐户和授权。该API还支持有关用户仓库和library仓库的操作。
PUT /v1/repositories/(repo_name)/
创建一个新的仓库,使用以下命令可以创建新的library仓库DELETE /v1/repositories/(repo_name)/
删除已经存在的仓库PUT /v1/repositories/(repo_name)/images
更新仓库镜像GET /v1/repositories/(repo_name)/images
从仓库中获取镜像PUT /v1/repositories/(repo_name)/auth
授权,使用Token获取仓库授权
PUT /v1/repositories/(namespace)/(repo_name)/
创建用户仓库DELETE /v1/repositories/(namespace)/(repo_name)/
删除用户仓库PUT /v1/repositories/(namespace)/(repo_name)/images
更新用户仓库镜像GET /v1/repositories/(namespace)/(repo_name)/images
从仓库中下载镜像GET /v1/users
验证用户登录POST /v1/users
添加新用户PUT /v1/users/(username)/
更新用户信息
Docker Remote API
Docker Remote API是一个取代远程命令行界面(rcli)的REST API
GET /containers/json
容器列表,获取所有容器的清单POST /containers/create
创建新容器GET /containers/(id)/json
监控容器,使用容器id获取该容器底层信息GET /containers/(id)/top
进程列表,获取容器内进程的清单GET /containers/(id)/logs
容器日志,获取容器的标准输出和错误日志GET /containers/(id)/export
导出容器,导出容器内容POST /containers/(id)/start
启动容器POST /containers/(id)/stop
停止容器POST /containers/(id)/restart
重启容器POST /containers/(id)/kill
终止容器
Docker Image API
POST /images/create
创建镜像POST /commit
利用容器创建镜像GET /images/json
获取镜像清单POST /images/(name)/insert
导入指定的路径文件DELETE /images/(name)
删除镜像POST /images/(name)/push
推送镜像到RegistryPOST /images/(name)/tag
Tag镜像GET /images/search
搜索镜像GET /images/(name)/history
查看镜像历史POST /build
构建镜像
#参考
深入浅出Docker(一):Docker核心技术预览
Docker源码分析(一):Docker架构
Docker入门教程(一)介绍
Docker,从这里做起!
Docker教程中文版本