docker run指定containers目录 docker run 指定端口_Docker


之前的文章介绍了在Linux中直接部署服务(Redis, MySQL),其中部署过程十分繁琐,经过高人指点,可以使用Docker技术实现快速部署。故本文介绍如何在CentOS 7 环境下通过Docker技术快速部署消息中间件RabbitMQ消息队列服务

安装Docker

卸载旧版本

Docker 较旧的版本称为docker 或 docker-engine,如果已安装,需要先卸载它们及相关依赖项


sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-selinux 
                      docker-engine-selinux 
                      docker-engine


使用Docker仓库安装

1. 安装相关依赖包

yum-utils 提供了 yum-config-manager ,而 device mapper 存储驱动程序则需要 device-mapper-persistent-data 和 lvm2


yum install -y yum-utils 
           device-mapper-persistent-data 
           lvm2


2. 添加Docker仓库


yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo


通过 yum repolist 命令查看Docker仓库是否被成功添加


docker run指定containers目录 docker run 指定端口_Docker_02


3. 安装Docker


yum install docker-ce docker-ce-cli containerd.io


通过 docker --version 命令查看Docker是否被成功安装


docker run指定containers目录 docker run 指定端口_docker 指定端口_03


4.添加当前账号到docker用户组

默认情况下,只有root用户和docker用户组中的用户可以操作Docker,其他用户操作需要使用sudo命令提权,十分麻烦。为此我们可以将相关用户添加到docker用户组即可


usermod -aG docker zgh     # 添加zgh用户到docker用户组中


通过 groups zgh 命令查看zgh用户是否被成功添加到docker用户组


docker run指定containers目录 docker run 指定端口_Docker_04


退出注销zgh用户并重新登录,以使对组的更改生效

启动Docker

1. 配置Docker开机自启


systemctl enable docker
    systemctl start docker


2. 验证Docker是否正确安装

使用docker run 启动一个测试镜像hello-world的容器,如果本地无指定镜像,则该命令会自动先将镜像从仓库中下载到本地


docker run hello-world


下图所示结果说明,则说明Docker已经被正确安装,且hello-world容器被成功启动


docker run指定containers目录 docker run 指定端口_docker 指定端口_05


部署RabbitMQ

1. 搜索镜像

在Docker Hub https://hub.docker.com 中搜索RabbitMQ镜像,直接进入Official官方镜像。由于我们需要Web管理页面,所以选择带有management字样的Tag


docker run指定containers目录 docker run 指定端口_Web_06


2.下载镜像

从Docker仓库中拉取镜像下载到本地,Tag可省略,则默认使用latest


docker pull [imagename]:[tag]
    docker pull rabbitmq:3.8.2-management


docker run指定containers目录 docker run 指定端口_docker_07


下载完成后,查看本地镜像,可以看到所需的RabbitMQ已经拉取到本地了


docker images


docker run指定containers目录 docker run 指定端口_Web_08


3. 启动rabbitMQ容器

由于是第一次,所以我们需要使用docker run命令创建启动一个新的rabbitMQ容器


# 仅对外开放 Web管理页面端口15672
    docker run -d --hostname rabbitMQ --name my-rabbitMQ -p 45672:15672 rabbitmq:3.8.2-management
    # 开放 Web管理页面端口15672、程序通讯端口5672
    docker run -d --hostname rabbitMQ --name my-rabbitMQ -p 45672:15672 -p 35672:5672 rabbitmq:3.8.2-management


  • -d
  • --hostname [hostname]
  • --name [name]
  • -p [hostPort]:[containerPort]: 指定宿主机端口(host port) 和 容器端口(container port)的映射


docker run指定containers目录 docker run 指定端口_docker 指定端口_09


RabbitMQ的 Web管理插件management plugin使用容器的15672端口,为了支持从外部网络访问该Web管理页面,需要将本地宿主机端口映射到该容器的15672端口,这里是将服务器本地的45672端口映射到容器的15672端口。这样即可通过 http://[serverIp]:45672 来访问RabbitMQ容器的Web管理页面。缺省用户名、密码均为guest。RabbitMQ和程序通讯端口5672同理


docker run指定containers目录 docker run 指定端口_Docker_10


[Note]:

Docker 常用命令

1. 查看容器状态

查看当前正在运行的容器信息,包括容器ID(container port),镜像名,容器名,端口信息,状态等


docker ps


可用参数: - -a : 显示所有容器(默认显示最近曾经运行过的) - -n [num] : 显示最近创建过的num个容器 - -q

从下图测试结果也可以看出 名为my-rabbitMQ 容器的Port信息中有服务器本地45672端口到该容器15672端口的映射


docker run指定containers目录 docker run 指定端口_Web_11


2. 查看容器的端口映射

查看指定容器的端口映射情况


docker port [containerID | containerName]


测试结果如下


docker run指定containers目录 docker run 指定端口_docker 指定端口_12


3. 容器的启动/停止/重启


# 启动指定容器 
    docker start [containerID | containerName]      
    # 停止指定容器
    docker stop [containerID | containerName]       
    # 重启指定容器
    docker restart [containerID | containerName]


测试结果如下


docker run指定containers目录 docker run 指定端口_Web_13


4. 删除容器


# 删除指定容器
    docker rm [containerID | containerName]


可用参数:

  • -f