一、什么是docker?
docker可以粗糙地理解为轻量级的虚拟机。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也很有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
二、Docker核心概念
Docker 大部分的操作都是围绕它的三大核心概念:镜像、容器、仓库。因此,准确把握这三大核心概念对于掌握Docker技术尤为重要。
-
镜像(Image): Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序或用户需要的其他软件。可以把它称为一个Apache镜像。镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套非常简单的机制来创建和更新现有的镜像,用户甚至可以 从网上下载一个已经做好的应用镜像,并直接使用。
- 容器(Container):Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离,互不可见的。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器与镜像的关系类似于面向对象编程中的对象与类。
- 仓库(Repository):Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所。每个仓库集中存放某一类 镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。根据所存储的镜像公开分享与否,Docker创库可以分为公开仓库(Public)和私有仓库(Private)两种形式。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
docker一般安装在Linux系统下,centos或redhat下都可以
具体大家可以参考下面的文章:https://www.imooc.com/article/16448
https://www.cnblogs.com/yufeng218/p/8370670.html

把用户加入的docker组里面,不用sudo和root用户就可以执行docker命令
sudo usermod -aG docker 用户名
安装完成之后,启动docker:
$ systemctl start docker.service
三、Docker相关的命令
docker version //版本查看
docker info // 显示docker的信息
docker pull //获取image
dockers build 创建image
dockers iamges //列出本地image
dockers run // 运行container
docker ps // 列出运行的container
docker ps -a // 列出所有容器
docker rm // 删除container
docker rmi //删除image
docker cp // 在host和container直接拷贝文件
docker commit // 保存改动为新的image
docker stop 镜像id// 停止当前正在运行的容器
exit // 退出容器
四、实际演练
1.以nginx为例
1)拉取最新的nginx镜像
$ docker pull nginx:latest
2)查看本地镜像
$ docker images
3)运行容器
安装完成后,我们可以使用以下命令来运行 nginx 容器:
$ docker run --name nginx-test -p 8080:80 -d nginx
4)安装成功
最后我们可以通过浏览器可以直接访问 8080 端口的 nginx 服务:
2.如何在docker中运行mysql?
docker中安装mysql同前面的nginx是一样的,我在docker中安装的是mysql的5.6版本。
1)首先通过docker启动mysql:
docker run --name=root -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
--name之后定义名字,MYSQL_ROOT_PASSWORD为自己定义的密码。
2)使用docker ps 命令,查看运行中的容器
3)根据id进入镜像内部
docker exec -it containerID /bin/bash
4)进入mysql
mysql -uroot -p
五、Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
通过编写简单的文件自创docker镜像。
哈哈,在这里举个栗子
(1)首先使用mkdir命令,创建dl文件夹,进入该文件夹,
(2)使用touch Dockerfile,创建Dockerfile文件
(3)vim Dockerfile,编辑Dockerfile文件
FROM alpine:latest
MAINTAINER lby
CMD echo "hello docker"
编辑完,esc,使用:wq命令,保存退出即可。
(4)使用下面的命令,构建一个image,注意末尾的点不能省略。
docker build -t hello_docker .
(5)使用docker images命令查看是否生成hello_docker镜像
(6)docker run hello_docker,运行刚刚构建的docker镜像
至此,dockerfile构建成功。