Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

测试机配置
项目    配置
操作系统    Windows Server 2008 R2 Enterprise
CPU    Intel i3 3220
内存    8GB
Docker下载
Docker目前提供了最新的Windows版本,只支持windows 10,使用了Hyper-V虚拟机。

由于服务器目前使用的较多的为Windows Server 2008,因此,只能使用支持 Windwos Server 2008 R2的Docker Toolbox,使用的是Oracle VM VirtualBox虚拟机,官网下载地址:
http://www.docker.com/products/docker-toolbox

编写此文时下载的版本:
https://github.com/docker/toolbox/releases/download/v1.12.0/DockerToolbox-1.12.0.exe

安装要求
要求安装64位操作系统
要求BIOS开启虚拟化
Docker安装
执行DockerToolbox-1.12.0.exe安装程序,按向导默认安装即可,安装选项:

安装路径:C:\Program Files\Docker Toolbox
安装组件:Full installation
安装完成后,在开始菜单启动快捷方式:Docker\Docker Quickstart Terminal进入终端操作界面

初次启动时会自动更新虚拟机镜像文件boot2docker.iso并创建VirtualBox默认虚拟机default

启动成功时会出现以上界面。

Docker常用命令

Docker命令与 Git 和 GitHub比较类似。总的来说分为以下几种:

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]
docker version
显示 Docker 版本信息。

docker info
显示 Docker 系统信息,包括镜像和容器数。

docker search
docker search [options "o">] term
docker search -s  django

从 Docker Hub 中搜索符合条件的镜像。
–automated 只列出 automated build
类型的镜像;
–no-trunc 可显示完整的镜像描述;
-s 40 列出收藏数不小于40的镜像。

docker pull
docker pull [-a "o">] [user/ "o">]name[:tag "o">]
docker pull laozhu/telescope:latest

从 Docker Hub 中拉取或者更新指定镜像。
-a 拉取所有 tagged 镜像 。

docker login
docker login
1
Username: username
Password: **
Email: user@domain.com
Login Succeeded
按步骤输入在 Docker Hub 注册的用户名、密码和邮箱即可完成登录。

docker logout
运行后从指定服务器登出,默认为官方服务器。

docker images
docker images [options "o">] [name]
1
列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。
-a 列出所有镜像(含过程镜像);
-f 过滤镜像,如: -f [‘dangling=true’] 只列出满足
dangling=true 条件的镜像;
–no-trunc 可显示完整的镜像ID;
-q 仅列出镜像ID。
–tree 以树状结构列出镜像的所有提交历史。

docker ps
列出所有运行中容器。
-a 列出所有容器(含沉睡镜像);
–before=”nginx” 列出在某一容器之前创建的容器,接受容器名称和ID作为参数;
–since=”nginx” 列出在某一容器之后创建的容器,接受容器名称和ID作为参数;
-f [exited=] 列出满足
exited= 条件的容器;
-l 仅列出最新创建的一个容器;
–no-trunc 显示完整的容器ID;
-n=4 列出最近创建的4个容器;
-q 仅列出容器ID;
-s 显示容器大小。

docker rmi
docker rmi [options "o">] <image>  "o">[image...]
docker rmi nginx:latest postgres:latest python:latest

从本地移除一个或多个指定的镜像。
-f 强行移除该镜像,即使其正被使用;
–no-prune 不移除该镜像的过程镜像,默认移除。

docker rm
docker rm [options "o">] <container>  "o">[container...]
docker rm nginx-01 nginx-02 db-01 db-02
sudo docker rm -l /webapp/redis

-f 强行移除该容器,即使其正在运行;
-l 移除容器间的网络连接,而非容器本身;
-v 移除与容器关联的空间。

docker history
docker history  "o">[options] <image>
1
查看指定镜像的创建历史。
–no-trunc 显示完整的提交记录;
-q 仅列出提交记录ID。

docker start|stop|restart
docker start|stop "p">|restart [options "o">] <container>  "o">[container...]
1
启动、停止和重启一个或多个指定容器。
-a 待完成
-i 启动一个容器并进入交互模式;
-t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。

docker kill
docker kill  "o">[options "o">] <container>  "o">[container...]
1
杀死一个或多个指定容器进程。
-s “KILL” 自定义发送至容器的信号。

docker events
docker events [options "o">]
docker events --since= "s2">"20141020"
docker events --until= "s2">"20120310"

从服务器拉取个人动态,可选择时间区间。

docker save
docker save –i debian "debian.tar"
docker save debian > "debian.tar"

将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-o “debian.tar” 指定保存的镜像归档。

docker load
docker load [options]
docker load < debian.tar
docker load -i "debian.tar"

从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-i “debian.tar” 指定载入的镜像归档。

docker export
docker export <container>
docker export nginx-01 > export.tar

将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。

docker import
docker import url|-  "o">[repository[:tag "o">]]
cat export.tar  "p">| docker import - imported-nginx:latest
docker import http://example.com/export.tar

从归档文件(支持远程文件)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。

docker top
docker top <running_container>  "o">[ps options]
1
查看一个正在运行容器进程,支持 ps 命令参数。

docker inspect
docker instpect nginx:latest
docker inspect nginx-container

检查镜像或者容器的参数,默认返回 JSON 格式。
-f 指定返回值的模板文件。

docker pause
暂停某一容器的所有进程。

docker unpause
docker unpause <container>
1
恢复某一容器的所有进程。

docker tag
docker tag [options "o">] <image>[:tag "o">] [repository/ "o">][username/]name "o">[:tag]
1
标记本地镜像,将其归入某一仓库。
-f 覆盖已有标记。

docker push
docker push name[:tag "o">]
docker push laozhu/nginx:latest

将镜像推送至远程仓库,默认为 Docker Hub 。

docker logs
docker logs [options "o">] <container>
docker logs -f -t --tail= "s2">"10" insane_babbage

获取容器运行时的输出日志。
-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
–tail=”10” 仅列出最新10条容器日志。

docker run
docker run [options "o">] <image> [ "nb">command]  "o">[arg...]
1
启动一个容器,在其中运行指定命令。
-a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=”nginx-lb” 为容器指定一个名称;
–dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h “mars” 指定容器的hostname;
-e username=”ritchie” 设置环境变量;
–env-file=[] 从指定文件读入环境变量;
–cpuset=”0-2” or –cpuset=”0,1,2”
绑定容器到指定CPU运行;
-c 待完成
-m 待完成
–net=”bridge” 指定容器的网络连接类型,支持 bridge /
host / none
container:

docker cp
docker cp <CONTAINER_ID>:path hostpath
1
复制容器内的文件到宿主机目录上

docker attach
docker attach <CONTAINER_ID>
1
Docker允许使用attach命令与运行中的容器交互,并且可以随时观察容器內进程的运行状况。退出容器可以通过两种方式来完成:
Ctrl+C 直接退出
Ctrl-\ 退出并显示堆栈信息(stack trace)

Docker国内镜像
Docker的images镜像服务器在国外,有时候会比较慢,可能会下载不成功,可通过以下URL通过WEB方式查找需要的官方镜像:
https://hub.docker.com/explore/

国内的有DaoCloud及阿里云镜像库

DaoCloud镜像
官方网站及镜像查找:
https://www.daocloud.io/

使用由DaoCloud提供的Registry Mirror服务,在申请开通Mirror服务后会得到一个Mirror加速地址,然后按照其配置文档的要求进行配置即可(分Linux、MacOS、Windows)

Windows下的配置方式:

请确认你的 Docker Toolbox 已经启动,并执行下列命令(请将 加速地址 替换为在加速器页面获取的专属地址)

docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default

直接命令行方式使用:

docker pull daocloud.io/library/nginx:1.9.12
docker pull daocloud.io/daocloud/dao-tomcat:v7.0.55
docker pull daocloud.io/library/centos:7.2.1511
docker pull daocloud.io/centos

阿里云镜像
官方网站及镜像查找:
http://dev.aliyun.com/search.html

阿里云镜像同样需要注册后才可使用,在注册成功后同样会得到一个Mirror加速地址,然后按照其配置文档的要求进行配置即可(分Ubuntu、Centos、Mac、Windows)

Windows下的配置方式:

Windows下需要重构default虚拟机,在Docker Toolbox终端窗口中使用以下命令创建:

docker-machine create --engine-registry-mirror=加速地址 -d virtualbox default

# 查看机器的环境配置,并配置到本地。然后通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info

Dockerfile自定义image
Dockerfile关键字
FROM
基于哪个镜像

RUN
安装软件用

MAINTAINER
镜像创建者

CMD
container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD。
CMD主要用于container时启动指定的服务,当docker run command的命令匹配到CMD command时,会替换CMD执行的命令(同时执行)。

ENTRYPOINT
container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条ENTRYPOINT没有CMD的可替换特性

USER
使用哪个用户跑container

EXPOSE
container内部服务开启的端口。主机上要用还得在启动container时,做host-container的端口映射:docker run -d -p 127.0.0.1:33301:22 centos6-ssh

ENV
用来设置环境变量,比如:
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

ADD
将文件拷贝到container的文件系统对应的路径
所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
如果文件是可识别的压缩格式,则docker会帮忙解压缩,如果要ADD本地文件,则本地文件必须在 docker build ,指定的目录下,如果要ADD远程文件,则远程文件必须在 docker build ,指定的目录下。比如:
docker build github.com/creack/docker-firefox
docker-firefox目录下必须有Dockerfile和要ADD的文件
注意:使用docker build - < somefile方式进行build,是不能直接将本地文件ADD到container中。只能ADD url file。ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。

VOLUME
可以将本地文件夹或者其他container的文件夹挂载到container中。

WORKDIR
切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效

ONBUILD
ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行

Dockerfile示例
双击Docker Quickstart Terminal运行Docker终端程序:

cd Desktop
mkdir tomcatdocker
cd tomcatdocker
touch Dockerfile
ls Dockerfile
notepad Dockerfile&

在notepad中,创建Dockerfile文件并保存,内容如下:

FROM ubuntu:14.04
MAINTAINER Fingerling <10311400@qq.com>
ENV REFRESHED_AT 2016-03-21
RUN apt-get -yqq update
RUN apt-get -yqq install tomcat7 default-jdk
ENV CATALINA_HOME /usr/share/tomcat7
ENV CATALINA_BASE /var/lib/tomcat7
ENV CATALINA_PID  /var/run/tomcat7.pid
ENV CATALINA_SH   /usr/share/tomcat7/bin/catalina.sh
ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp
RUN mkdir -p $CATALINA_TMPDIR
VOLUME ["/var/lib/tomcat7/webapps/"]
EXPOSE 8080 9000
ENTRYPOINT ["/usr/share/tomcat7/bin/catalina.sh", "run" ]

生成并运行镜像:

docker build -t iamverygood/docker-tomcat .
docker run iamverygood/docker-tomcat

Docker-Windows 2008 R2安装使用相关推荐

  1. Windows 2008 R2 安装 Windows phone 7 开发环境

    Windows 2008 R2 安装 Windows phone 7 开发环境 安装环境: 1.Windows server 2008 R2 2.Visual Studio 2010 SP1 旗舰版 ...

  2. 解决windows 2008 R2 安装无线网卡驱动 找不到网卡安装完毕2008 FR NET

    解决windows 2008 R2 安装无线网卡驱动 2012年08月21日 ⁄ 服务器技术 ⁄ 共 352字 ⁄ 评论数 2 ⁄ 被围观 72 次+ 为了以后能更好的学习win8相关的资源,以及wi ...

  3. 用RT Server Customizer定制Windows 2008 R2安装光盘

    一.下载地址 http://www.rt7lite.com/ 其中RT Se7en Lite用来定制Windows 7.目前支持英文.德文.法语.西班牙语.简体中文和繁体中文等. RT Server ...

  4. 服务器Windows 2008 R2 安装SQL 2008 R2

    在站点下载 SQL 2008 R2 在安装数据库之前首先安装IIS和.NET 3.5 解压  找到运行程序 (这里需要修改路径,数据库一般不要安装在系统盘) (选择任何一个都可以,这里选择system ...

  5. 活动目录实战之一 windows 2008 r2 安装域中第一台域控制器

    windows 2008R2已经出来很长时间了,想写一下关于活动目录的一些知识.例如:我们应该如何安装域内第一台域控制器呢,找了很多文章,觉得胖哥这篇文章写的非常好,图文并茂,并且把原理讲的也非常清楚 ...

  6. Windows 2008 R2安装DHCP服务器问题及解决方法

    错误一:0x80074E6F 指定的服务器已在目录服务中 造成此错误的原因是DHCP服务器没有正常卸载,第二次安装就会报如下图错误 解决方法 1.卸载DHCP服务器 2.重启服务器 3.打开adsie ...

  7. 在VHD文件上安装Windows 7或Windows 2008 R2

    以下操作在VMware Workstation 6.5的虚拟环境中操作成功. 安装方法: 1.以Windows 7或Windows 2008 R2安装光盘启动计算机 2.在屏幕出现"现在安装 ...

  8. windows 2008 R2下(AD RMS)无法检索证书层次结构的解决方法

    一.环境描述 一台DC,系统windows 2008 R2,一台windows 2008 R2安装了CA证书服务,IIS服务和AD RMS服务.在安装AD RMS后发现原来这台机器上安装了APACHE ...

  9. Windows 2008 R2 X64 安装WebsitePanel(WSP虚拟主机管理面板)

                   Windows 2008 R2 X64  安装WebsitePanel(WSP2.0虚拟主机管理面板) 估计很多同学都还不知道WebsitePanel是什么东东吧,Web ...

  10. OCS Inventory NG使用之在windows 2008 R2平台下安装服务器端(三)

    声明:鉴于本文篇幅比较长,为了不让广大博友产生阅读疲劳,所以进行了分割,如果要全篇阅读文章,请点击文章底部的链接,对此产生的不便,深表抱歉.   (图3.10) <?xml:namespace ...

最新文章

  1. c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate
  2. github 笔记
  3. android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中
  4. Jsoup设置一个元素的HTML内容
  5. 网页设计图片向上浮动_HTML5 背景图片漂浮/浮动特效
  6. ssm框架逻辑删除mysql_ssm框架小总结——批量删除
  7. uiautomator使用中文参数
  8. WebSphere社区版,Geronimo1.1八卦和GBean架构
  9. JavaWeb:Maven
  10. LCD1602中文资料
  11. 高级Bash脚本编程指南——一本深入学习shell脚本艺术的书籍
  12. 数字化生产车间可视化管理——电子看板
  13. 使用XML作为数据库
  14. 企业视频直播如何嵌入企业微信公众号?
  15. Android图片添加水印图片并把图片保存到文件存储
  16. 修复树莓派鼠标移动缓慢迟滞问题
  17. 微信支付-APP支付
  18. 京东cookie京东ck
  19. 诙谐幽默的个性自我介绍
  20. 将Excel上千条数据写入到数据库中

热门文章

  1. 博士毕业论文英文参考文献换行_不用写毕业论文?一年制硕士真的不是闹着玩的吗...
  2. 他是Facebook广告投入费用过亿的独立站卖家
  3. 独立站现在好不好做?
  4. mysql安全措施_MySQL数据库在网络安全方面的一些防御措施
  5. 德标螺纹规格对照表_多大的螺栓用多大规格的扳手,一文看懂!
  6. Golang教程:(十五)指针
  7. LookupError: unknown encoding: utf-8
  8. mate30后续用鸿蒙系统,mate30可以升级鸿蒙不?升级后还能退回原系统吗?
  9. CD(Continuous Deployment)实战问题之unable to read askpass解决
  10. Weblogic负载均衡/Session复制之集群架构