第二节:docker 镜像和容器
目录
前言:
上一节提到 docker 三个核心概念:镜像、容器、仓库。镜像类似于虚拟机,容器类似于简易版的 Linux 系统环境。Docker hub 是最大的公有仓库。
准备工作:设置自己的容器镜像加速器
阿里云地址:
https://homenew.console.aliyun.com/
镜像操作
下载镜像:以 mysql 为例
在 https://hub.docker.com/ 官网上搜索
镜像操作语法:
docker pull image_name[:tag]
# tag:一般为镜像的版本,不指定默认下载 latest 版本。
例如:docker pull mysql:5.7
镜像常用命令
命令 | 含义 |
---|---|
docker images --help | 镜像命令帮助 |
docker pull 镜像名:[tag] | 下载镜像 |
docker images | 查看镜像 |
docker images -a | 查看所有镜像 |
docker rmi 镜像id | 删除镜像 |
docker rmi -f 镜像id 镜像id | 强制删除多个 |
docker rmi $(docker images -q) | 删除全部镜像 |
docker rmi -f $(docker images -q) | 强制删除全部镜像 |
容器
启动 mysql 服务器实例
- 先有镜像,后有容器,容器类似于简易版的 Linux 环境。下面演示容器如何运行。
容器操作语法:
例如:
docker run --name mysql-5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d c791733bf9b7
# --name : 自定义名称
# -p:暴露端口号,不然外网无法访问;P :大写的 p 是随机端口
# MYSQL_ROOT_PASSWORD:非必选,mysql root 用户设置密码
# -d:后台运行,不占控制台
# tag:一般为镜像的版本,不指定默认下载 latest 版本
# c791733bf9b7:已下载的镜像。也可以写镜像名,例如:redis,如果没有指定 tag,默认下载 latest
例如:docker pull mysql:5.7
容器解释
容器id | 镜像 | 启动时运行的命令 | 创建时间 | 状态 | 端口号 | 容器名 |
---|---|---|---|---|---|---|
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
86875c0b8616 | c791733bf9b7 | "docker-entrypoint.s…" | 24 seconds ago | Up 23 seconds | 3306/tcp | mysql-5.7 |
测试 mysql 连接
容器常用命令
命令 | 含义 |
---|---|
docker ps --help | 容器帮助命令 |
docker ps | 查看运行容器 |
docker ps -a | 查看所有容器 |
docker run --name 自定义容器名 -it -p host:host -d 镜像id / 镜像名 例如: docker run --name mynginx -it -p 80:80 -d nginx : 如果没有镜像,会自动下载镜像 |
以交互模式启动容器 |
docker start 容器id | 启动已有的容器(第一次用run)do |
docker exec -it 容器id bin/bash | 进入容器内部 Linux 环境 |
exit | 退出容器 |
docker stop 容器id / 容器名 | 停止运行容器 |
docker rm 容器id | 删除容器 |
docker rm -f $(docker ps -qa) | 强制删除全部容器 |