docker port如何增加端口_docker部署redis实战

b0830b2e5c068169f52183295de1ac27.png

原创首发于公众号:编程三分钟

换电脑的时候不想再搭建开发环境了!——编程三分钟

什么是docker

Docker是一个用来管理容器的应用程序,而容器就是模拟运行应用程序所依赖环境的一个服务。一般一个容器内只安装一个程序,在容器内的应用程序会认为自己是机器上运行的唯一进程,一台机器可以独立运行多个容器。

使用容器的好处就是不用再繁琐的配置运行环境,便于构建、测试、持续集成;可以动态扩容和缩容、充分利用一台服务器跑多个服务,因此在本机就可以模拟出微服务架构。

当然,我个人觉得最爽的一点还是可以在容器里随意的开发测试,但也不用担心把自己心爱的电脑搞的乱七八糟了。

准备

  • 一台安装docker的机器
  • 能通网并访问最新版本的Docker Engine (服务端)
  • 本地开发机器安装了Docker Client(Docker 命令行工具),可通过命令行访问。

运行容器

可以在 官网上 搜索到现成的镜像,也可以用以下方式查找容器,命令格式:

docker search <name>

实际执行

$ docker search redis
NAME               DESCRIPTION                                             STARS OFFICIAL AUTOMATED
redis              Redis is an open source key-value store that… 7023            [OK]
bitnami/redis      Bitnami Redis Docker Image 114                                          [OK]   
省略……

我们找到了redis的OFFICIAL(官方)docker 镜像名就是redis,为了让它能提供服务,我们接下来的任务就是让他作为后台服务运行,命令格式:

$ docker run <options> <image-name>

默认情况下,Docker将在前台运行命令。要在后台运行,需要指定选项-d。

$ docker run -d redis
570315fb8a0596ff5581653a77f8ef406f86a0ab4b1a2061de7a423335812ed3

默认情况下,Docker将运行最新版本。如果需要特定版本,则需要将其显式的指定出来。
例如,版本3.2

$ docker run -d redis:3.2

由于这是我们第一次使用Redis镜像,所以它将被下载到Docker主机上,如果本地存在就不会了。

查看运行中的容器

可以用docker ps命令列出所有正在运行的容器,包括用于启动容器的镜像和正常运行的时间等信息。

$ docker ps
CONTAINER ID IMAGE   COMMAND                 CREATED       STATUS PORTS NAMES
570315fb8a05 redis   "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 6379/tcp elastic_mclean

列出正在运行的容器的更多详细信息,例如IP地址,命令格式如下:

docker inspect <friendly-name|container-id>

通过docker logs命令可以查看容器的日志,命令格式如下:

docker logs <friendly-name|container-id>

访问redis

我们现在用容器部署成功了一个redis,但是和直接安装一个redis不一样,容器就像一台虚拟机一样,想要访问服务,要不就进入到里面,要不就通过暴露端口像远程访问一样来进行访问。

-p <host-port>:<container-port>选项可以在启动容器的时候绑定端口。

这个时候使用-name <name>来在启动容器的时候定义一个名称,以后查询以及查看日志都会比较方便。

因为redis默认占用6379端口,我们可以将端口6379映射到本地的6379

$ docker run -d  --name redisHostPort -p 6379:6379 redis:latest
694384d739307f3c5bc59fa

tips:默认情况下,主机上的端口映射到0.0.0.0,可以在定义端口映射的时候指定特定的IP,例如-p 127.0.0.1:6379:6379

假设我们要部署多个redis不可能每次都自己亲手来找一个端口来映射,docker是支持自动绑定到可用端口上的,只要用-p 6379这个参数就可以了,像下面这样。

$ docker run -d --name redisDynamic -p 6379 redis:latest
dcd3dabe51c3f0a8ddbdfd

到底绑定了哪个端口,可以用以下命令查询(这个时候就用到自定义的名称redisDynamic了),当然直接用docker ps也是可以的。

$ docker port redisDynamic 6379
0.0.0.0:32768

存储数据

在使用容器的时候我们会发现,一旦创建和删除、升级容器,里面存储的数据也就随风而去了,所以我们必须想办法把数据存储下来。

我们查询到官网上的redis镜像存储数据的目录在/data目录,然后我们存储在本地/opt/docker/data/redis
使用参数-v 本机位置:容器内位置

docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis
c9c154695500260407d99d

当然了,也可以把配置文件重定向到本地,可以把所有的容器配置、日志、数据统一管理,非常的方便。

与平台交互

docker run ubuntu ps 启动Ubuntu容器并执行命令ps以查看容器中运行的所有进程。docker run -it ubuntu bash直接访问容器内的bash shell。

$ docker run ubuntu psPID TTY TIME CMD1 ?  00:00:00 ps
$ docker run -it ubuntu bash
root@6db973337059:/# exit

访问正在运行的dockerdocker attach <container> 要attach上去的容器必须正在运行。docker exec -it <container> bash|sh直接访问容器内的bash shell。

$ docker attach c9c154695500 /bin/bash
root@c9c154695500:/data# exit
$ docker exec -it c9c154695500 /bin/bash
root@c9c154695500:/data# exit

这里也可以直接用容器name

  • attach 直接进入容器,不会启动新进程
  • exec 在容器中打开新终端,会启动新进程

那什么时候用attach,什么时候用exec呢?

推荐阅读

(点击标题可跳转阅读)

10 个方便的Bash别名

如何向朋友解释什么是云计算?

MySQL:硬盘在24 * 7工作中罢工了,我该怎么办?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio配置GreenDAO 3.2.0和使用方法

我相信&#xff0c;在平时的开发过程中&#xff0c;大家一定会或多或少地接触到SQLite。然而在使用它时&#xff0c;我们往往需要做许多额外的工作&#xff0c;像编写SQL语句与解析查询结果等。所以&#xff0c;适用于Android ORM框架也就孕育而生了&#xff0c;现在市面上主流…

收件服务器主机名未响应,邮箱收件服务器主机名是什么

邮箱收件服务器主机名是什么 内容精选换一换FTP/SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库。当前仅支持Linux操作系统的FTP 服务器。连接FTP或SFTP服务器时&#xff0c;他们的连接参数相同&#xff0c;如表1所示。FTP/SFTP连接参数参数名说明取值样例…

数字孪生技术,让酷炫的智慧城市不再遥不可及

物联网智库 整理发布智慧城市对于不同的人&#xff0c;不同的角色所处不同立场都会有不同的定义。在普通人眼中“上班不拥堵&#xff0c;下班走近路”是智慧城市......在老年人眼中“独自在家遭遇危险&#xff0c;能有人及时提供帮助”是智慧城市......在消防员眼中“火情在苗头…

python中read和readline的区别_Python中read()、readline()和readlines()三者间的区别和用法...

前言众所周知在python中读取文件常用的三种方法&#xff1a;read(),readline(),readlines()&#xff0c;今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单&#xff0c;一眼扫过&#xff0c;待到用时却也只知道有这么几个方法&#xff0c;不懂得它的原理与用法。…

CentOS赋予一个普通用户root权限

http://www.linuxidc.com/Linux/2012-07/64530.htm转载于:https://www.cnblogs.com/Baronboy/p/7491592.html

腾讯文档网页版登录提示服务器,腾讯文档官网地址,腾讯文档电脑版pc端登录入口...

腾讯文档是腾讯近期推出的一款多人协作在线文档产品&#xff0c;不但打通QQ、微信和PC等多个平台&#xff0c;哪么腾讯文档官网地址是什么&#xff1f;有没有电脑版&#xff0c;想在pc端编辑文档怎么办呢&#xff1f;腾讯文档没有电脑版软件&#xff0c;但腾讯文档网页版可以替…

向深度学习三剑客学习四种科研精神(上)

来源&#xff1a;陈德旺科学网博客深度学习&#xff0c;尤其是深度神经网络学习算法的兴起和大数据的加持&#xff0c;结合GPU的算力&#xff0c;如同 “三英战吕布”&#xff0c;终于搞定了人工智能这一反复无常的“吕布”&#xff0c; 使得人工智能得以第三次复兴。如今&…

val什么意思vb中的属性值_老司机带你探索Mysql中int(1)、int(10)、int(11)的区别是什么?...

在上一篇原创文章MySQL一个表的自增id用完了&#xff0c;背井大佬让我用这些姿势再往里插数据&#xff0c;最后留下了一个问题&#xff0c;大家知不知道int(1)和int(11)有什么区别&#xff0c;没有小伙伴互动回答&#xff0c;只有一位老哥让我说一下什么区别&#xff0c;我说上…

【重点】【堆】347.前K个高频元素

题目 最大的K个元素 > 小根堆&#xff08;类似上窄下宽的梯形&#xff09; 最小的K个元素 > 大根堆&#xff08;类似倒三角形&#xff09; 法1&#xff1a;小根堆 class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> valToC…

Nginx 反向代理+高可用

反向代理主机IP&#xff1a;10.0.0.20 WEB01主机IP : 10.0.0.22 WEB02主机IP : 10.0.0.23 反向代理主机配置&#xff1a;10.0.0.20 [rootnode1 html]# vim /etc/nginx/conf.d/web.conf server {listen 80;server_name www.wanglan.com;location / {proxy_pass http://1…

DNS系统服务器端口是,dns端口号是多少默认

●在Windows 95&#xff0f;98、Windows NT、UNIX及Linux环境下&#xff0c;均可使用TCP/P联网&#xff0c;请回答下列问题。在Windows 95&#xff0f;98平台下安装与配置TCP&#xff0f;IP的顺序应该是&#xff1a;安装网络适配器 (40) &#xff0c;安装TCP/IP协议&#xff0c…

c#switch语句判断成绩_C#程序流程控制 知多少?

最近发现读书是个慢过程&#xff0c;很难一口吃个胖子&#xff0c;尤其读这种技术类的书&#xff0c;需要细嚼慢咽的精读&#xff0c;很耐心的读。迄今为止我一个像样的C#程序都没有做过&#xff0c;是小白中的小白&#xff0c;这倒不影响什么&#xff0c;毕竟在曾经学过C语言的…

无穷存在吗?

来源&#xff1a;数学职业家无穷大的存在问题是一个令人惊讶的古老问题。亚里士多德首先引入了一个明确的区分&#xff0c;以帮助理解它的意义。他区别两种不同的无穷大。其中之一&#xff0c;他称之为潜在无穷大&#xff1a;这种无限大刻画了无止境的宇宙或一个永无休止的名单…

jquery.tmplate使用心得

jquery.tmplate使用心得 jquery.tmplate使用心得 jquery.tmpl.js&#xff0c;是与jquey共同使用的html模板插件。该插件可通过简单的语法将数据放入到html模板中&#xff0c;可以很好的将数据渲染到页面上。该插件在本项目中使用较多且网上的讲解比较分散&#xff0c;无系统的a…

机器学习虽好,也要看什么场合!

来源&#xff1a;AI科技评论编译 | 王念编辑 | 丛末身为AI时代的程序猿&#xff0c;我们天生就对数据集敏感。因此&#xff0c;当我们拿到一批真实数据时&#xff0c;激动之情肯定溢于言表&#xff01;举例来说&#xff0c;我们可能拿到了一组患者正确药量的数据集&#xff0c;…

CVTE前端笔试编程题

这些题目是做完笔试之后&#xff0c;在别的地方找到的&#xff0c;现在附上。 1.(1)这题考察的怎么把参数转换为数组&#xff0c;然后再截取你想要的位数。 function C(){var a_argsArray.prototype.slice.call(argumens,0,2);var b_argsArray.prototype.slice.call(arguments,…

springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo

最近自己写了一个SpringBootMybatis&#xff08;generator&#xff09;druid的demo1. mybatisgenerator逆向工程生成代码1. pom文件pom文件添加如下内容&#xff0c;引入generator插件<!-- mybatis代码生成插件 --><!--如果使用的mysql驱动是6.x的&#xff0c;那就无法…

盘点|世界流行的十大机械工程设计软件,你会用几种?

来源&#xff1a;自机械前线机械设计是机械生产的第一步&#xff0c;是决定机械性能的最主要的因素。为了满足机械产品性能的高要求&#xff0c;在机械设计中大量采用计算机技术进行辅助设计和系统分析&#xff0c;以下是目前世界上流行的十款式机械工程设计软件。1、Autodesk …

【Java】JavaIO(一)、基础知识

一、常用概念介绍 Java的IO&#xff0c;实现输入输出的基础&#xff0c;可以方便的实现数据的输入输出 二、流的分类 1. 按照流向来分&#xff1a; a). 输入流&#xff1a;向应用程序输 b). 输出流&#xff1a;从应用程序中输出 输入输出流是站在程序的角度来说的&#xff0c;只…

SpaceX再发射58颗星链卫星 总数达到538颗

来源&#xff1a;网易智能据外媒报道&#xff0c;在距离上次星链&#xff08;Starlink&#xff09;卫星发射仅仅10天后&#xff0c;美国太空探索技术公司SpaceX于当地时间周六再次发射了最新一批星链卫星。与以往每批发射60颗星链卫星不同的是&#xff0c;SpaceX此次只发射了58…