Docker
核心概念
镜像 image
镜像就是一堆静态的模板,根据这个模板运行起来的就是容器。镜像一般需要拉取下来,是只读的。
Docker镜像中有分层的概念,就是一个镜像可能基于好几个镜像,比如一个Web运行环境可能需要操作系统、Mysql等,那么拉取的镜像就会包好这几个镜像。
容器 container
运行拉取的镜像,就会根据这个镜像生成一个容器。运行的容器就像应用程序,可以访问、可以停止。运用多次Run命令,就运行了很多容器,也可以说是镜像的实例。
数据卷 Volumn
容器就好像一个简易版的操作系统。数据卷用来做数据持久化到我们的宿主机上容器间的数据共享,简单说就是将宿主机的目录映射到容器中的目录,应用程序在容器中的目录读写数据会同步到宿主机上,这样容器产生的数据就可以持久化。
Docker安装
Docker之介绍与安装 - Qubernet - 博客园 (cnblogs.com)
Docker 命令
查看已有镜像
docker iamges
镜像安装
镜像的官方资源仓库:Docker Hub,需要的镜像及对应版本都有陈列,且官网有直接的下载命令可以复制。
如
docker pull zookeeper:latest
查看所有容器
docker ps [OPTIONS]
OPTION:
-a
: 显示所有容器,包括未运行的--filter
: 根据条件过滤docker ps --filter "name=lucid_beaver"
-l
: 显示最近创建的容器-n
: 列出最近创建的n个容器docker ps -n 2
列出最近创建的2个容器-s
: 显示总的文件大小-q
: 静默模式,只显示容器编号
运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:
-d
: 后台运行容器,并返回容器ID 守护进程,当这个进程意外死亡后,会自动拉起来-p
: 指定端口映射,宿主机端口:容器端口-i
: 以交互模式运行容器,通常与-t同时使用-t
: 为容器重新分配一个伪输入终端,通常与-i同时使用--name=xxx
: 为容器指定一个名称,xxx
为字符串但不能加引号-e
: 设置环境变量
如
docker run -itd --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
进入容器内部
docker exec -it [CONTAINER ID] bash
关闭容器
docker stop [CONTAINER ID]
杀死进程
docker kill [CONTAINER ID]
删除容器
docker rm [CONTAINER ID]
运行各容器
ZooKeeper
1 | docker run -d --name=zookeeper -p 2181:2181 zookeeper |
MySQL
1 | docker run -itd --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql |
本机可以通过 root 和密码 123456 访问 MySQL 服务:
1 | mysql -h localhost -u root -p |
Redis
1 | # 不带密码运行容器 |
RabbitMQ
1 | docker run -itd --rm --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3.12-management |
15672
端口:RabbitMQ的管理页面端口5672
端口:RabbitMQ的消息接收端口
问题
docker run hello-world失败
参考如下,docker的镜像源一定要添加能ping通的。
docker下载镜像超时问题:Get https://registry-1.docker.io/v2/_myydan的博客-CSDN博客