(1)docker Dockerfile
FROM centos:centos6 #使用的镜像名及其标记
MAINTAINER cxm<[email protected]> #建立此镜像的用户信息
RUN yum -y update; yum clean all #运行的命令
RUN yum -y install sudo epel-release; yum clean all
#Sudo requires a tty. fix that.
RUN sed -i ‘s/.*requiretty$/#Defaults requiretty/‘ /etc/sudoers
# Install pgdg repo for getting new postgres RPMs
RUN rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm #安装数据库的centos源
# Install Postgres Version 9.4
RUN yum install postgresql94-server postgresql94 postgresql94-contrib postgresql94-plperl postgresql94-devel -y --nogpgcheck
VOLUME /var/lib/pgsql/9.4 #磁盘
EXPOSE 5432 #对外开放5432端口
RUN yum -y install vim
RUN yum -y install make gcc
ENV PATH /usr/pgsql-9.4/bin:$PATH #添加环境变量
注:docker有缓存功能,重新执行时,已经执行过的命令不再重复执行,如果不需要这项功能,可以自己修改。
(2)docker build
docker build -t cxm:pg94 --rm .
#--rm是在执行完后删除缓存,.指的是Dockerfile的存放路径是当前路径的docker文件下
(3)docker-server
docker run --privileged -d --name pg94_run -p 15432:5432 -v /pg94/bash_history:/root/.bash_history --volumes-from=pg94_data --link redis_run:redis -v /pg94/src:/src -v /pg94/local:/usr/local cxm:pg94 /sbin/init
注释:
--privileged #使用该参数,container内的root拥有真正的root权限
-d #后台运行
--name #给运行的容器命名
-p 宿主端口:容器端口 #指定容器的端口在宿主机的端口,即访问宿主机的端口即可访问到容器的端口
-v 宿主路径:容器路径 #与-p差不多,只不过这里指的是文件
--volumes-from=pg94_data #挂载容器所有的卷
--link redis_run:redis #连接到另一个容器(name:alias)
cxm:pg94 #镜像名
/sbin/init #执行的终端命令
(4)docker-client
docker exec -it pg94_run /bin/bash