关键概念理解
image文件是什么?它是做什么用呢?
- Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。(可以理解为 image 是个类,通过这个类可以实例化多个对象【容器】)
Container容器
- 容器是用镜像创建的运行实例,可以把容器看做是一个简易版的 Linux 环境运行在其中的应用程序。
Repository 仓库
- 用来存放镜像文件,如Docker Hub(https://hub.docker.com/)
Dockerfile 文件是什么?它是做什么用呢?
- Docker 根据 该文件生成二进制的 image 文件。
Docker Compose 工具是什么?它是做什么用呢?
- Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。
数据卷
- 类似Redis的rdb和aof文件,用来容器的持久化,容器间继承和共享数据,并保持宿主机和容器主机数据同步。
安装docker
- 安装教程
#具体查看官方教程
https://docs.docker.com/engine/
- 查看是否安装成功
#输入以下命令出现信息版本等信息代表安装成功
docker version
- 安装完成后启动docker服务端
sudo service docker start
配置国内docker镜像
- 在阿里开发者平台申请加速地址链接 (登录->控制台->产品与服务->容器镜像服务->镜像中心->镜像加速器->复制加速地址)
- 修改本机配置
vim /etc/docker/daemon.json
# 加入以下内容
{
"registry-mirrors": ["加速地址"]
}
- 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用命令
- 帮助命令
docker version #查看版本号
docker info #显示Docker系统信息,包括镜像和容器数
docker --help #查看Docker有哪些命令
- 镜像命令
# 构建镜像
docker build -t 镜像名:TAG .
# 查看当前Docker中的镜像
docker images
# 列出本地所有的镜像(含中间映像层)
docker images -a
# 查询某个镜像
docker search 镜像名
# 拉取某个镜像
docker pull 镜像名[:tag]
# 删除某个镜像
docker rmi 镜像ID
# 强制删除某个镜像
docker rmi -f 镜像ID
# 强制删除多个个镜像
docker rmi -f 镜像名1:tag 镜像名2:tag
# 强制删除所有镜像
docker rmi -f $(docker images -qa)
- 容器基本命令
# 新建并启动容器
docker run [OPTIONS] image [COMMAND] [ARG...]
-name="容器新名字": 为容器指定一个名称
-e:配置信息
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p:端口映射,如 -p 3307:3306 此处映射 宿主机3307端口 到 容器的3306端口,顿口也是有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
# 列出当前所有正在运行的容
docker ps [OPTIONS]
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
# 容器停止退出
exit
# 容器不停止退出
ctrl+P+Q
# 启动容器
docker start 容器ID或者容器名
# 重启容器
docker restart 容器ID或者容器名
# 停止容器
docker stop 容器ID或者容器名
# 强制停止容器
docker kill 容器ID或者容器名
# 删除已停止的容器
docker rm 容器ID
# 一次性删除多个容器
docker rm -f $(docker ps -a -q)
# 一次性删除多个容器
docker ps -a -q | xargs docker rm
# 启动守护式容器
docker run -d 容器名
# 查看容器日志,-t是加入时间戳,-f是最新的日志打印,--tail数字显示最后多少条
docker logs -f -t --tail 容器ID
# 查看容器内运行的进程
docker top 容器ID
# 查看容器内部细节
docker inspect 容器ID
# 进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
# 重新进入Docker容器
docker attach 容器ID
# 从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
简单示例搭建一个mysql5.7容器服务
docker pull mysql:5.7
# 启动
docker run --name dockermysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
–name:容器名,此处命名为dockermysql
-p:端口映射,此处映射 主机3307端口 到 容器的3306端口
-e:配置信息,此处配置mysql的root用户的登陆密码
-d 镜像名:tag 使用守护进程模式启动
# 进入容器
docker exec -it dockermysql bash
# 登录mysql
mysql -u root -p