真正开发里:

Docker 最常干的事情其实就几个:

拉镜像
启动容器
查看容器
停止容器
删除容器
进入容器
查看日志

掌握这些:

基本就能满足日常开发。


一、Docker 工作流程(先建立概念)

Docker 日常操作:

本质就三步:

镜像(Image)
↓
创建容器(Container)
↓
运行程序

二、查看本地镜像

docker images

作用:

查看本机已有镜像

输出:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        latest    xxxxxxx        3 days ago    117MB
mysql        latest    xxxxxxx        5 days ago    600MB

三、下载镜像(pull)

例如下载 Redis:

docker pull redis

下载 MySQL:

docker pull mysql

四、为什么 pull 后就能运行

因为:

镜像本身就包含:
程序 + 环境

例如:

Redis镜像
已经自带Redis环境

所以:

不用自己安装。


五、运行容器(最重要)


启动 Redis

docker run redis

Docker 会:

创建容器
↓
启动 Redis

六、后台运行(重点)

正常:

docker run redis

终端会被占用。

所以开发里:

一般:

docker run -d redis

-d 是什么

detached

意思:

后台运行

七、查看运行中的容器

docker ps

输出:

CONTAINER ID   IMAGE   COMMAND   STATUS
xxxxxx         redis   ...       Up 10 minutes

八、查看所有容器

docker ps -a

包括:

运行中的
已停止的

九、容器名字(重点)

默认:

Docker 会随机名字:

happy_cat
busy_dog

很乱。

所以:

一般会:

docker run --name myredis redis

–name

作用:

给容器取名字

后面操作:

更方便。


十、端口映射(非常重要)

例如:

docker run -d -p 6379:6379 redis

什么意思

宿主机端口 : 容器端口

为什么必须映射

Redis 在容器内部。

如果不映射:

外面访问不到

6379:6379

表示:

电脑6379
↓
映射到
容器6379

这样:

Go 程序:

localhost:6379

才能连接。


十一、查看容器日志

docker logs 容器名

例如:

docker logs myredis

十二、持续查看日志

类似:

tail -f

命令

docker logs -f myredis

十三、停止容器

docker stop 容器名

例如:

docker stop myredis

十四、启动已停止容器

docker start myredis

十五、重启容器

docker restart myredis

十六、删除容器

docker rm 容器名

例如:

docker rm myredis

十七、为什么删不掉

如果容器正在运行:

无法删除

必须:

先停止:

docker stop myredis

再删除。


十八、强制删除

docker rm -f myredis

-f

表示:

force
强制删除

十九、删除镜像

docker rmi redis

二十、进入容器(重点)

很多时候:

需要:

进入容器内部

例如:

  • 看文件
  • 执行命令
  • 进入 Redis CLI

命令

docker exec -it myredis bash

二十一、exec 是什么

在容器内部执行命令

二十二、-it 是什么

这个新人非常容易懵。


-i

保持输入流

-t

开启终端

合起来

进入交互式终端

二十三、为什么有时候 bash 不存在

有些镜像:

非常轻量。

没有:

bash

这时候:

用:

docker exec -it myredis sh

二十四、进入 Redis 容器后

可以:

redis-cli

进入 Redis 命令行。


二十五、查看容器详细信息

docker inspect 容器名

例如:

docker inspect myredis

可以查看:

  • IP
  • 端口
  • 配置
  • 挂载

二十六、容器自动删除

docker run --rm redis

–rm

表示:

容器停止后自动删除

适合:

临时测试

二十七、数据卷(重点)

如果:

直接删容器:

数据也没了

所以:

需要:

数据持久化

挂载目录

docker run -d \
-v /mydata:/data \
redis

什么意思

宿主机目录
↓
映射到
容器目录

这样:

容器删了:

数据还在。


二十八、MySQL 最经典启动方式

真实开发:

经常这样:

docker run -d \
-p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

二十九、-e 是什么

环境变量

例如:

MYSQL_ROOT_PASSWORD

设置 MySQL 密码。


三十、Docker 日常操作核心流程

真正开发:

天天都在:

docker pull
docker run
docker ps
docker logs
docker exec
docker stop
docker rm

循环。


三十一、后端开发最常见容器

你以后:

大概率天天开:

服务用途
mysql数据库
redis缓存
nginx网关
rabbitmq消息队列
minio对象存储

三十二、最后总结

Docker 日常操作核心:

命令作用
docker images查看镜像
docker pull下载镜像
docker run创建运行容器
docker ps查看容器
docker logs查看日志
docker exec进入容器
docker stop停止容器
docker rm删除容器

真正重要理解:

镜像是模板
容器是真正运行的程序

开发里:

Docker 最大作用:

快速搭环境
统一环境
快速部署

更多推荐