Docker入门及基础操作

字数 1702阅读 3989

Docker是什么?

Docker的中文本意是码头工人,用于搬运货柜。Docker官网给出的解释是Docker是世界领先的软件货柜运输平台。通俗来说就是Docker就是一个可以将软件打包在一个标准的“货柜”里,并可以轻松迁移的平台。

Docker有什么作用?

Docker容器打包软件到一个包含了所有运行所需环境(代码、运行时状态、系统工具、系统库——任何可以被安装在服务器上的环境)的文件系统里,这样软件无论被迁移到哪里都是同样的运行环境。
通俗来说就是开发环境如果没有问题,用Docker打包成容器在服务器上运行,至少不会遇到环境问题。
还有像我这样使用Mac开发的程序员,如果需要开发oracle数据库,本地是无法安装oracle的,可以通过docker运行一个oracle镜像。

Docker的特点

轻量性
运行在一台机器上的容器共享其操作系统内核,它们启动使用更少的内存。Docker的镜像文件可以通过分层的文件系统及共享的公共文件创建(说白了就是Docker的镜像文件可以在其他镜像基础上创建并且还可以共享使用其他镜像或操作系统的文件,这样镜像文件就很小),节省磁盘空间并提高下载效率。

开放性
Docker容器基于开放标准,使容器能够在所有的主流Linux及windows或者其他设备的顶层运行。

默认安全性
容器隔离彼此和基础架构应用,同时为应用程序提供了额外的保护层。

Docker容器与虚拟机比较

虚拟机


虚拟机系统包含应用程序、必要的二进制文件和库和一个完整的客体操作系统,所有这些加起来至少几十GB。

Docker容器


Docker容器包含应用程序及其所需依赖,在主机操作系统上运行时,共享主机操作系统内核,每个容器都作为独立进程运行。Docker容器不限制设备型号等,可以运行在所有的设备上。

Docker安装

Mac上安装
请参阅Docker官网-Docker for Mac

Windows上安装
请参阅Docker官网-Docker for Windows

Windows Server上安装
请参阅Docker官网-Docker for Windows Server

Linux上安装
请参阅Docker官网-Docker for Linux

AWS上安装
请参阅Docker官网-Docker for AWS

AZURE上安装
请参阅Docker官网-Docker for AZURE

Docker基础操作

搜索镜像

作为初学者和实用主义者,建议先学习使用别人的镜像,即方便又简单,网上有很多牛人制作好的镜像文件,我只需找到它们直接使用即可,可大大减少我们搭建环境的时间。

方法一:访问Docker Hub网站搜索

  1. 首先通过浏览器访问Docker Hub网站

  2. 在右上角的搜索栏中输入要搜做的镜像关键字,如:tomcat,返回如下页面:


  3. 选择需要使用镜像,如:


  4. 查看镜像详细


方法二:通过命令行搜索

$ docker search tomcat

下载镜像

在命令行模式下键入以下命令

$ docker pull tomcat

其中“tomcat”是镜像名(name),该命令可以在Docker Hub官网上搜索到的镜像详细中查看到


查看本地镜像列表

在命令行模式下键入以下命令

$ docker images

其中“image id”为镜像编号

删除本地镜像

在命令行模式下键入以下命令

$ docker rmi [image id] 

其中“[image id]”替换为具体的镜像“image id”
镜像删除时不能有该镜像的容器存在,无论是运行中的还是停止的

启动镜像成容器

在命令行模式下键入以下命令

$ docker run -it --rm -p 8888:8080 tomcat:latest

其中“-it”代表开启交互功能,即容器内tomcat启动日志你将能看到。
其中“—rm”代表当启动的容器停止后自动删除该容器(不是镜像哦)。
其中“-p 8888:8080”代表将容器中的8080端口映射到本地机器的8888端口上,即我们可以通过localhost:8888端口访问到tomcat,甚至我可以改变本地端口来启动多个tomcat容器。
最后的“tomcat:latest”代表启动的容器名称及其版本标签。
还有很多其他的docker run的参数请查看docker官网-文档-run
该条启动命令可以在Docker Hub上该镜像的详细说明中查看,其中会有多种启动方式说明

查看运行中的容器

在命令行模式下键入以下命令

$ docker ps

其中“container id”为容器编号,下面的操作将与它相关

进入运行中的容器内部执行命令

有时容器的设置并不能满足我们的需要,比如,我们可能需要增加一个tomcat用户,或是配置一个数据源连接池等,需要进入容器中修改参数,下面我们就介绍下如何进入容器中。
在命令行模式下键入以下命令

$ docker exec -it [container id] /bin/bash

就可以进入容器内的命令行模式,其中“[container id]”在执行时替换为具体容器的container id


停止运行中的容器

在命令行模式下键入以下命令

$ docker stop [container id]

其中“[container id]”在执行时替换为具体容器的“container id”

查看停止状态的容器

在命令行模式下键入以下命令

$ docker ps -a

启动停止状态的容器

在命令行模式下键入以下命令

$ docker start [container id]

其中“[container id]”在执行时替换为具体容器的“container id”

删除的容器

在命令行模式下键入以下命令

$ docker rm [container id]

其中“[container id]”在执行时替换为具体容器的“container id”

提交容器成为新的镜像

在命令行模式下键入以下命令

$ docker commit [container id] [your name]/[image name]:[tag]

其中“[container id]”在执行时替换为具体容器的“container id”
其中“[your name]”在执行时替换为你的名字,方便大家知道是你做的镜像
其中“[image name]”在执行时替换为你希望的镜像名称
其中“[tag]”在执行时替换为你的镜像的版本,也可以不指定
详细“docker commit”说明请参考docker官网-文档-commit

导出镜像

在命令行模式下键入以下命令

docker save [image name] > [local file name].tar

其中“[container id]”在执行时替换为具体镜像的名字
其中“[local file name]”在执行时替换为你想取的本地文件名

载入镜像

在命令行模式下键入以下命令

$ docker load < [local file full name]

其中“[local file full name]” 在执行时替换为本地文件名(含扩展名)

推荐阅读更多精彩内容