开发者社区> 铄懿> 正文

在Docker上玩转PostgreSQL -- Mac篇

简介:
+关注继续查看

2016年,新一年新气象,首先祝广大群众以及"加班狗"们(在说俺吗?^_^)新年快乐、万事如意、步步高升、家庭幸福美满~~

今天给大家带来的话题是:在Docker上玩转PostgreSQL (标题看到是不是有点小激动呢,这么高大尚的容器技术,让"云"变得更容易)

以下是华丽的正文分隔线


google一下发现Docker官方PostgreSQL镜像已经介绍了怎么制作PostgreSQL镜像教程。

今天的分享是面向Mac用户(悄悄的告诉你,小编俺也是第一次在Mac上玩起PostgreSQL On Docker)。

战前准备

大家以热烈的掌声来欢迎神器:Docker Toolbox登场!

  1. 简述

    Docker Toolbox的诞生是广大MacWindows用户玩转Docker的福音。

    再也不用再折腾boot2docker各种墙的问题,俺是不会告诉你:运行boot2docker init会有一种让你砸掉键盘的冲动,好吧,小编还真砸掉一块了,-_-!!。

  2. 安装Homebrew

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. 安装Cask

    brew install caskroom/cask/brew-cask
  4. 安装Docker Toolbox

    brew cask install dockertoolbox

运行Docker Quickstart Terminal.app

bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'

出现以下提示,说明Docker已经就绪

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
    
    
docker is configured to use the default machine with IP *.*.*.*
For help getting started, check out the docs at https://docs.docker.com

否则会提示

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

动手制作PostgreSQL Docker镜像

  1. 编写Dockerfile

    这里有介绍Dockerfile的最佳实践以及官方有详细的参考指南,请大家各自阅读。

    翠花,上PG Dockerfile

    $ cd ~;mkdir mypostgresql;cd mypostgresql
    $ cat Dockerfile
    
    FROM ubuntu:16.04
    
    RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
    
    RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
    RUN apt-get update && apt-get -y -q install python-software-properties software-properties-common \
        && apt-get -y -q install postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4
    
    USER postgres
    RUN /etc/init.d/postgresql start \
        && psql --command "CREATE USER pger WITH SUPERUSER PASSWORD 'pger';" \
        && createdb -O pger pgerdb
    
    USER root
    RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.4/main/pg_hba.conf
    RUN echo "listen_addresses='*'" >> /etc/postgresql/9.4/main/postgresql.conf
    
    EXPOSE 5432
    
    RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql
    VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
    
    USER postgres
    CMD ["/usr/lib/postgresql/9.4/bin/postgres", "-D", "/var/lib/postgresql/9.4/main", "-c", "config_file=/etc/postgresql/9.4/main/postgresql.conf"]
        
  2. 制作Docker镜像

    docker build --rm=true -t mypostgresql:9.4 .
  3. 运行PostgreSQL On Docker

    docker run -i -t -p 5432:5432 mypostgresql:9.4
  4. 测试

    psql -h localhost -p 5432 -U pger -W pgerdb

    结果显示如下,说明镜像制作成功了,细心的读者可能会发现里面已经多了一个名叫pgerdb的数据库

    Password for user pger:
    psql (9.4.2, server 9.4.5)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    pgerdb=# \l
                                 List of databases
       Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
    -----------+----------+-----------+---------+-------+-----------------------
     pgerdb    | pger     | SQL_ASCII | C       | C     |
     postgres  | postgres | SQL_ASCII | C       | C     |
     template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
               |          |           |         |       | postgres=CTc/postgres
     template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
               |          |           |         |       | postgres=CTc/postgres
    (4 rows)
    
    pgerdb=#

搞定,以上就是今天要分享的PostgreSQL On Docker的话题,希望对大家有用,祝玩得开心~~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19890 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29276 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22573 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20754 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16530 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14906 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23603 0
+关注
铄懿
快乐工作,快乐生活,快乐分享。
2
文章
2
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
相关文档: 云数据库 OceanBase 版 可信账本数据库 云原生关系型数据库 PolarDB PostgreSQL引擎
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载