Docker入门

字数 737阅读 45

前言

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由三部分组成:客户端、服务端、镜像仓库。

默认仓库

Docker Hub

安装

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

构建

[未完待续]

推荐阅读更多精彩内容