Docker 安装镜像与使用命令

Posted 张学徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 安装镜像与使用命令相关的知识,希望对你有一定的参考价值。

按照阿里云的操作文档安装 docker:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

这里仅写 Windows 版的,其他版本见上面的链接

1. 安装/升级Docker客户端
对于Windows 10以下的用户,推荐使用Docker Toolbox

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

对于Windows 10以上的用户 推荐使用Docker for Windows

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

2. 配置镜像加速器
针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:

创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

docker-machine create --engine-registry-mirror=https://fnuvamgc.mirror.aliyuncs.com -d virtualbox default
查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

docker-machine env default
eval "$(docker-machine env default)"
docker info
针对安装了Docker for Windows的用户,您可以参考以下配置步骤:

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:


  "registry-mirrors": ["https://fnuvamgc.mirror.aliyuncs.com"]

编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

注意
Docker for Windows 和 Docker Toolbox互不兼容,如果同时安装两者的话,需要使用hyperv的参数启动。

docker-machine create --engine-registry-mirror=https://fnuvamgc.mirror.aliyuncs.com -d hyperv default
Docker for Windows 有两种运行模式,一种运行Windows相关容器,一种运行传统的Linux容器。同一时间只能选择一种模式运行。

运行docker。如果是 windows 系统的话,直接安装客户端,启动docker即可。如果是 linux 系统执行以下命令即可。

systemctl start docker

查看进程

ps -ef | grep docker

搜索镜像。比如搜索 rabbitmq

docker search rabbitmq

拉取镜像到本地

docker pull rabbitmq

查看已经安装的镜像

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq latest d445c0adc9a5 13 months ago 220MB

运行 rabbitmq

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

查询运行中的容器

docker ps

查询全部容器

docker ps -a 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06a9986bb9fe rabbitmq “docker-entrypoint.s…” 12 minutes ago Up 12 minutes 4369/tcp, 0.0.0.0:5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbit

上面开头的 CONTAINER ID 下面的 06a9986bb9fe 就是容器的 ID

之前配置运行过了的话,直接启动容器即可

docker start 容器ID
docker stop 容器ID
docker restart 容器ID

查看容器的详细信息

docker inspect 容器id

新建容器时设置为自启动

docker run -d --restart=always --name my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq

为已存在的容器配置自启动

docker update --restart=always 容器id 或 容器名称

取消自启动

docker update --restart=no 容器id 或 容器名称

批量设置自启动

docker update --restart=always $(docker ps -aq)

进入容器终端

docker exec -it 容器ID /bin/bash

进入终端后,使用命令比如开启 rabbitmq 的 web 管理界面

rabbitmq-plugins enable rabbitmq_management

docker 启动 rabbitmq

单节点启动

docker run -it --rm -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

这是官方的例子

多节点启动

普通集群

#节点一,主节点,创建-v映射目录
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password  -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/1/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/1/log:/var/log/rabbitmq rabbitmq:management

#节点二,创建-v映射目录
docker run -d --hostname rabbit_host2 --name rabbitmq2  -p 15673:15672 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/2/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/2/log:/var/log/rabbitmq rabbitmq:management

#节点三,创建-v映射目录
docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 15674:15672 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/3/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/3/log:/var/log/rabbitmq rabbitmq:management

参数说明:

--hostname 自定义Docker容器的 hostname

--link 容器之间连接,link不可或缺,使得三个容器能互相通信

--privileged=true 使用该参数,container内的root拥有真正的root权限,否则容器出现permission denied

-v 宿主机和容器路径映射

参数 RABBITMQ_NODENAME,缺省 Unix*: rabbit@$HOSTNAME
参数 RABBITMQ_DEFAULT_USER=admin
参数 RABBITMQ_DEFAULT_PASS=xdclass.net168

Erlang Cookie 值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同, 相当于不同节点之间通讯的密钥,erlang.cookie是erlang的分布式token文件,集群内各个节点的erlang.cookie需要相同,才可以互相通信

上面是启动了三个节点,就是三个rabbitmq,但仍没有形成集群。

配置普通集群

#节点一配置集群
docker exec -it rabbitmq1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

#节点二加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit

#节点三加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。
docker exec -it rabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit

#查看集群节点状态,配置启动了3个节点,1个磁盘节点和2个内存节点
rabbitmqctl cluster_status

上述步骤完成后就配置好普通集群了。

集群分为两类:普通集群和镜像集群。

相同点:都拥有各个节点的元数据信息。

不同点:镜像集群会复制各个节点的交换机、队列和信息。而普通集群仅仅拥有交换机和队列,信息不会进行复制,即拥有信息的节点一旦宕机,集群内部就无法消费该信息。

配置镜像集群

去到rabbitmq控制台,一般是:ip地址:15672

Admin->Policies

参数说明:

ha-mode:同步节点模式
- all:全部
- exactly:设置同步节点数
- nodes:设置特定同步节点,用配置ha-params说明
ha-sync-mode:同步模式
- manual:手动
- automatic:自动
一般如同所示设置即可

完成后,就完成rabbitmq多节点的部署了。


以上是关于Docker 安装镜像与使用命令的主要内容,如果未能解决你的问题,请参考以下文章

制作自己的docker镜像并上传到hub.docker

docker的宿主系统是centos,为啥可以运行ubuntu的镜像

docker安装与常用命令

Docker基础命令详解——镜像及容器操作

docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]