- 问题:docker 主要是解决程序运行环境的问题。
- docker 的架构:客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
- docker 运行运行环境通过 docker 的镜像来创建
核心概念
- 镜像(Image)相当于一个小的系统。
- 容器(Container) 容器是镜像的实体,我们通实体容器来控制 Image 镜像小系统。
- 仓库(Repository)系统中心
拉取镜像
# 在拉取之前搜索 ubuntu 镜像
docker pull ubuntu
# 拉取 ubuntu 镜像
docker pull ubuntu
# 拉取最新的 ubuntu 镜像
docker pull ubuntu:latest
使用镜像运行容器
运行 ubuntu:latest 容器, 然后
// 使用 ubuntu:latest 的 bin 目录下面的命令 echo
docker run ubuntu:latest /bin/echo "我是 => ubuntu:last, 你好!"
// 进入 ubuntu:latest 的交互模式, 然后使用 bash
docker run ubuntu:latest -t -l ubuntu:latest /bin/bash
// -t 配一个伪终端
// -l 指定为交互模式
// -d 指定在后台运行
// ubuntu:latest /bin/bash 指定容器和命令行使用 bash
// 使用交互模式
ll // 获取目录列表
cd bin && ll // 切换到 bin 目录和获取 bin 下面的所有图片
// 退出docker的交互式终端
exit
如果 docker run 的参数不确定,可以使用 docker run --help 帮助信息。
查看容器、查看镜像、删除容器、删除镜像,以及 docker 信息
# 查看运容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有运行过的容器
# 查看镜像
docker images # 查看所有的存在的镜像
## 删除容器
docker rm -f [CONTAINER ID] # 删除指定容器ID的
docker container prune 删除所有的容器
# 删除镜像
docker rmi [name]
# docker 整体信息
docker info
开启或者停止一个容器,从后台进入
# 先查看有哪些容器是运行过的
docker ps -a # 查看所有运行过的容器
# 获取目标 CONTAINER ID
docker start [CONTAINER ID]
# 停止一个容器
docker stop [CONTAINER ID]
# 从后台进入
docker attach 1e560fca3906
docker exec -it 243c32535da7 /bin/bash
操作快照
# 输出快照
docker export 1e560fca3906 > ubuntu.tar
# 从快照中导入
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
web 服务
# 拉取镜像文件
docker pull nestjs/webapp
# 创建一个容器,并运行 app.ts 文件
docker run -d -P nestjs/webapp ts-node app.ts
# 指定端口, 后面的端口是 docker 服务暴露出来的,5000 是我们访问 docker 服务时对应的端口
docker run -d -p 5000:5000 nestjs/webapp ts-node app.ts
# 查看端口
docker port CONTAINER ID # 根据 [CONTAINER ID]
docker port wizardly_chandrasekhar # 更具 name
## 查看日志
docker logs -f CONTAINER ID # 根据 [CONTAINER ID]
## 查看容器进程
docker top name # 根据容器名
## 检查应用程序
docker inspect # 根据容器名
自定义镜像
- docker build 命令我们可以在 Dockerfile 的文件的配合下,创建自定义一个镜像。
Dockerfile 是由 docker 命令和命令参数组成,但是每一条命令都会多创建一层镜像,所以我们需要将能够合并的命令合并。
Dockerfile 命令
- FROM [base_image] 指定基镜像
- RUN [command] 指定要运行的命令
构建命令
docker build -t nginx:test .
数据库 redis
从 docker 启动 redis 的内容。
# 搜索 redis
docker search redis
# 拉取镜像
docker pull redis:latest
# 查看本地镜像
docker images
# 运行容器 redis
docker run -itd --name redis-test -p 6379:6379 redis # 6379
# 查看正在运行容器
docker ps
# 打开redis交互
docker exec -it redis-test /bin/bash