Docker入门
1.Docker简介
Docker是2013年发起的一个项目,引述百度百科关于Docker的介绍[1]:“Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可以移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。”
2.Docker架构
Docker采用C/S(客户端/服务器)架构模式,架构图如下[1]:
描述 | 说明 | 作用 |
Client | Docker 客户端 | 通过docker指令使用远程Docker API。 |
docker machine | Docker安装命令行工具 | 例如VirtualBox等。 |
Host | 容器主机 | 物理或虚拟化的机器。 |
daemon | 容器守护进程 | 在宿主后台运行,等待客户端的请求,并处理服务端接受到来自客户的请求。 |
images |
Docker 镜像 |
创建 Docker 容器的模板。 |
container |
Docker 容器 |
能独立运行的某个或一组应用。 |
Registry | docker仓库 | 用来存放镜像,docker hub提供大量的镜像。用户可以在docker hub或阿里云创建私有仓库。 |
Docker简单工作流程简述如下:
1)Docker客户端通过docker pull指令从Registry仓库下载镜像;
2)Docker客户端通过docker create/docker build指令安装一个容器;
3)Docker客户端通过 docker start指令启动容器(或通过docker run指令创建并启动一个容器);
4)Docker客户端通过 docker stop指令停止容器;
5)Docker客户端通过 docker push指令将镜像保存到仓库。
3.Docker安装
Docker支持在Linux、windows和macOS上运行,安装教程详见官方文档:
Linux:https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1
windows:https://docs.docker.com/docker-for-windows/install/
MacOS:https://docs.docker.com/docker-for-mac/install/
4.Docker加速
Docker在国内下载镜像会非常的慢,所以在安装好docker之后一般推荐大家设置docker加速。网上一大推介绍docker加速教程,现在以daocloud镜像加速为例设置镜像加速。
1) 如果您使用的是MacOS,那么打开docker客户端->Preferences->Daemon->Basic, 按下图输入daocloud镜像,点击"Appply & restart"。
2)如果您用的是Linux系统,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。
{
"registry-mirrors": ["https://www.daocloud.io/mirror"]
}
修改保存后重启 Docker 以使配置生效。
3) 如果您用的是windows系统,请参考:https://blog.****.net/slibra_L/article/details/77505003.
5. Docker使用
假设您已经安装好docker,下面我们以安装node.js为例子简单聊聊docker的使用。
1) 查找镜像
首先要知道能安装什么样的镜像,例如想安装node.js,先到docker hub上查找镜像,在终端输入指令:docker search node.js
2) 下载镜像
下载上图第一个node官方镜像。在终端输入指令:docker pull node
3) 查看本地的镜像
在终端输入:docker images , 看到node的最新版本已经下载下来了。
4)安装并启动容器:docker run --name mynode -d node
容器命名为:mynode
5) 查看正在运行的容器: docker ps
6)停止容器: docker stop mynode
7) 启动/重启容器:docker start/restart mynode
6. Docker 指令
上面例子只是简单用到docker的几个指令,当然还有其他的指令,我们在终端输入docker -help ,屏幕输出指令如下:
这些指令对于初学者来说还是比较陌生的,为了方便初学者快速理解这些指令,参考“Docker 命令大全”[2]将这些指令归纳为几类:
容器 | 生命周期 | run | 创建并启动容器 |
create | 仅创建容器 | ||
start/restart | 启动已被停止的容器/容器重启 | ||
pause/unpause | 暂停容器/恢复容器 | ||
stop | 停止容器 | ||
kill | 杀掉运行中的容器 | ||
rm | 删除容器 | ||
exec | 在运行的容器中执行命令 | ||
容器操作 | attach | 连接到正在运行中的容器 | |
events | 监控服务器实时事件 | ||
export | 导出容器 | ||
logs | 查看容器的日志 | ||
inspect | 获取容器/镜像的元数据 | ||
port | 列出指定的容器的端口映射 | ||
ps | 列出当前容器 | ||
top | 查看容器中运行的进程信息 | ||
wait | 阻塞运行直到容器停止,并打印出它的退出代码 | ||
容器rootfs命令 | commit | 从容器创建一个新的镜像 | |
cp | 拷贝容器与主机之间的数据 | ||
diff | 检查容器里文件结构的更改信息 | ||
镜像 | 镜像仓库 | login | 登录镜像仓库 |
pull | 从镜像仓库拉取镜像 | ||
push | 往镜像仓库推送本地镜像 | ||
search | 在镜像仓库搜索镜像 | ||
本地镜像管理 | images | 列出本地镜像 | |
rmi | 删除镜像 | ||
tag | 给镜像打tag | ||
build | 通过 Dockerfile 创建镜像 | ||
history | 查看镜像的创建历史 | ||
save | 将镜像保存成 tar归档文件 | ||
import | 从归档文件创建镜像 | ||
其他 | docker系统信息 | info | 查看Docker系统信息 |
version | 查看docker系统版本号 |
7.总结
本博客只是简单介绍了docker的入门知识,要深入掌握docker,还是需要自己多下功夫琢磨。好了,就写这么多吧,看完了就动手实践一下吧。
参考文献
1. Docker_百度百科: https://baike.baidu.com/item/Docker/13344470?fr=aladdin#1_2
2. Docker 命令大全:http://www.runoob.com/docker/docker-command-manual.html