Docker常用命令笔记(一)

2018-01-141207

1、简述Docker

  Docker 是基于 Golang 语言编写的,一种轻量级的容器技术。自2013年问世以来,不管是在云服务、微服务还是DevOps企业中,都有越来越多的公司使用Docker 来作为基础设施自动化的工具 。Docker简单、轻量且高效,使用起来比较容易上手,所以很适合一些迭代开发较快的互联网公司,特别是当系统架构庞大或者是业务复杂到连开发和部署都比较困难的时候,使用Docker更是一个明智的选择,特别是对于一个专业的运维人员而言,使用Docker这种工具简直可以爽到飞起。

2、什么是Docker

  1.Docker 是开源的应用容器引擎,而且容器即服务(docker containers as a service);   2.Docker 可以让你将所有的应用软件打包成软件开发的标准化单元;   3.Docker 容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管在什么样的运行环境,总是能以相同的方式运行。就好像 Java 虚拟机一样,“一次编写,到处运行(write once, run anywhere)”,而 Docker 是 “一次构建,到处运行(build once,run anywhere)”。   4.Docker 是为开发人员和系统管理员用于构建、发布、并运行分布式应用程序的开放式平台。该平台由 Docker 引擎(一个便携、轻巧的运行时和打包工具) 和 Docker Hub (一个共享应用程序和自动化工作流的云服务)等组成。

3、注册服务器(Registry)、仓库(Repository)、镜像(Image)、容器(Container)

  • 注册服务器(Registry):注册服务器是存放仓库的地方,其上往往存放着多个仓库;
  • 仓库(Repository):类似代码仓库,是Docker集中存放镜像文件的场所,根据存储的镜像公开分享与否,Docker仓库又分为公开仓库(public)和私有仓库(private)两种形式。目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool、网易蜂巢等,可以提供稳定的国内访问;
  • 镜像(Image):Docker镜像(Image)类似于虚拟机的镜像,可以理解为一个面向Docker引擎的只读模板,里面包含了文件系统。例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。镜像是创建Docker容器的基础,用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。总之,应用(容器)运行是需要环境的,而镜像就是来提供这种环境的;
  • 容器(Container):Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而容器间都是相互隔离、互不可见的。可以把每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。

    4、Docker 的优点

  • 轻量:所有容器在一台机器上共享同一个操作系统内核,这样他们立即开始,并更有效地利用内存。Image(也就是镜像) 是从分层文件系统的构建,这样他们能够共享公共文件,使得磁盘使用率和 Image 的下载更加高效;
  • 开放:Docker 容器是基于开发的标准,允许容器运行在主流的 Linux 发布版和 Microsoft 操作系统作为所有的基础设施;
  • 安全:容器使得应用程序之间彼此隔离,类似虚拟机技术的资源隔离,但性能却远远高于虚拟机技术,作为基础架构的同时也为应用程序提供了额外的保护层;
  • 敏捷开发:Docker 让开发人员可以自由定义环境,创建和部署的应用程序更快、更容易,IT 运维人员快速应对变化也更加灵活性;
  • 高可控性:Docker 使得开发人员保存从基础设施到应用的代码,帮助 IT 运维人管理拥有标准的、安全的、可扩展的操作环境;
  • 高可移植性:Docker 允许自由选择,可以是从笔记本电脑到一个团队,从私人基础设施到公共云提供商。

5、Docker安装(Linux)

sudo yum install docker(centos)
sudo apt-get install docker.io (ubuntu)

6.1、Docker常用命令及参数

  1. docker --help; 最最重要的命令,有什么不懂的命令首先找它,类似Linux的man命令
  2. docker search image-name; 检索默认的远程仓库(https://hub.docker.com/) 中存在的镜像列表
  3. docker pull image-name; 拉取(下载)远程镜像
  4. docker images; 查看本地镜像列表
  5. docker rmi image-id(container-id); 删除指定的镜像(容器)
  6. docker run --name container-name -d image-name; 运行指定镜像为容器
  7. docker ps; 查看运行中的容器
  8. docker ps -a; 查看运行中和已停止的容器
  9. docker start(restart)(stop) container-id/container-name; 运行(重启)(停止)容器
  10. docker run -d -p 3307:3306 --name container-name image-name; 端口映射
  11. docker logs container-id/container-name; 查看容器日志
  12. docker exec -it container-id/container-name bash; 登录容器
  13. docker version(info); 查看版本(信息)
  14. docker run --help; 查询docker run命令的用法

6.2、Docker常用命令及参数(表格版)

7、项目容器化(以Tomcat为例)

第一步,拉取镜像:docker pull tomcat 第二步,通过镜像开启一个容器:docker run -d -p 8081:8080 tomcat,可以通过命令传送我们的项目文件到容器里运行,当前这也简单;不过还有更简单的挂载目录来运行项目方式:docker run --privileged=true -v ~/www:/usr/local/tomcat/webapps -d -p 8081:8080 tomcat,其中–privileged=true表示授予docker挂载的权限 第三步,拷贝war包到挂载目录,访问ip:8081端口查看

Docker系列

Docker(二):<a href="http://wiki.talkmoney.cn/knowledge/open.knowledge/view/24" target="_blank">http://wiki.talkmoney.cn/knowledge/open.knowledge/view/24</a> Docker(一):<a href="http://wiki.talkmoney.cn/knowledge/open.knowledge/view/13" target="_blank">http://wiki.talkmoney.cn/knowledge/open.knowledge/view/13</a>

参考文档

Docker —— 从入门到实践:http://udn.yyuap.com/doc/docker_practice/index.html 使用Spring Cloud与Docker实战微服务:http://book.itmuch.com/ 简述 Docker:http://www.importnew.com/24658.html Docker 镜像、容器、仓库的概念:http://blog.csdn.net/SmalOSnail/article/details/53117496 Docker实践 - 安装Docker并在容器里运行tomcat:http://blog.csdn.net/massivestars/article/details/54352484

学习文档

Docker官方文档:https://docs.docker.com/engine/understanding-docker/ Docker中文文档:http://git.oschina.net/widuu/chinese_docker Docker Hub:https://hub.docker.com/ Dockerfile文档:https://docs.docker.com/engine/reference/builder/#dockerfile-reference Dockerfile最佳实践:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#build-cache

分享
点赞0
打赏
下一篇:Docker常用命令笔记(二)