Docker入门
前言
docker是啥?
能干什么?
好用吗?
怎么用?
我感觉难用死了
又要花成本去学
你是不是有上面这些问题。
我们先不讨论docker是啥,我先给你讲个故事。
我记得以前去一家公司面试的时候,我说我会Spring Boot开发,面试官问我:Spring Boot是啥?我说:使用Spring Boot开发很方便,不需要再像以前的Spring开发,到处找jar或者Maven依赖,造成版本冲突,它还提供了main方法,可以直接运行,代码写法不变,没有任何学习成本。结果面试官说:我觉得Spring开发,自己通过Maven构建也很方便啊。那这。。。这。。。这。。。
好吧,言归正传,我以前有写过一篇博文——linux服务器怎么快速安装和使用MySQL数据库,当时是在linux上安装MySQL遇到问题后写的。那你有没有考虑过,现在如果用docker安装,只需要2行命令,而且不管你是什么环境,或者版本。
# 拉取镜像
docker pull mysql
# 运行
docker run ...
没错,这就是我学习Docker的初衷,当然,Docker的强大远不止如此。
基础知识
基本概念
镜像(image)
容器(container)
仓库(registry)
架构图
Docker 架构图简单来说,Docker由三部分组成:客户端、服务端、镜像仓库。
默认仓库
安装
Windows
Mac
Centos
基本使用
先看一下都有哪些命令
image.png版本查看
简要信息
docker -v
详细信息
docker version
image.png
镜像拉取
docker pull imageName[:version]
通过镜像名称从远程仓库拉取进行,当然我们还可以指定版本号,默认最后一个版本,也就是最新版本。
image.png镜像查询(本地仓库)
docker images
或者
docker image ls
我们也可以使用管道命令进行搜索,如下示例:
image.png镜像搜索(远程仓库)
docker search name
image.png
镜像删除
docker rmi imageID
image.png
容器运行
docker run
具体还需要查询官方文档
MySQL启动说明
image.png
Nginx启动说明
image.png
所以,我们自己也要对对自己构建的镜像提供说明
端口映射
docker run ... -p [port:]port ...
例如
# 将容器的80端口随机映射到宿主机的一个端口上
docker run ... -p 80 ...
# 将容器的80端口映射到宿主机的8000端口上
docker run ... -p 8080:80 ...
想学习更多关于端口映射的知识,请参考:Docker-端口映射
挂存储卷
比如MySQL命令
docker run -p 3306:3306 --name erwin_mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
我们再看一下官方文档:
image.png简单来说,我们可以将数据存放到我们指定的位置。
进入容器
docker exec -it imageID bash
想学习更多关于端口映射的知识,请参考:如何进入Docker容器
查看容器日志
docker logs -f imageID
image.png
查询容器
查询正在运行的容器
docker ps
查询所有的容器
docker ps -a
设置环境变量
查询镜像的官方文档
比如我们看MySQL可以设置哪些
image.png容器停止
docker stop imagesID
容器重新启动
docker start imagesID
容器删除
docker rm imagesID
构建
[未完待续]