04 May 2015

当我们新安装Linux系统或者登陆了一个非自己环境的Linux系统时,通常都得做许多繁杂而又重复的工作,安装各种软件、搭建开发环境等,为了解决这个问题,我将使用Docker来管理自己的开发环境。

简单版的在线docker介绍:Docker —— 从入门到实践

基础镜像


自己搭建了一个CentOS 7的基础开发镜像centos-dev:base-v1.2,修改软件源为163源,装了各种常用软件以及个人配置:git、vim、zsh等等。

docker images

基于基础镜像创建开发环境镜像


可以通过镜像centos-dev:base-v1.2启动容器,然后搭建开发环境,最后提交为新的镜像。但是这样做,如果基础镜像进行更新了,又得手动基于新的基础镜像搭建开发环境了。所以采用Dockerfile,来生成开发环境镜像,以后如果基础镜像更新了,只需要执行docker build就能重新自动创建新的开发环境镜像了。

上图中的centos-dev:blog-v1.1就是我用于写博客的镜像,以下是该镜像的Dockerfile:

1
2
3
4
5
6
7
8
9
10
FROM centos-dev:base-v1.2

MAINTAINER Rokety Yang <yangrokety@gmail.com>

RUN yum -y install ruby ruby-devel gem samba samba-client
RUN gem sources -r https://rubygems.org/;gem sources -a https://ruby.taobao.org/
RUN gem install jekyll execjs therubyracer rake -V
RUN cd ~;git clone https://github.com/yangxikun/yangxikun.github.com.git

CMD ["/bin/zsh"]

一些小问题:

小技巧:

  • 查看运行的容器:sudo docker ps,查看所有容器:sudo docker ps -a
  • 参考进入容器,下载.bashrc_docker,添加到.bashrc中,之后就可以通过docker-enter <container name>进入容器shell了。
  • 在run的时候加上--name <container name>参数可指定容器名称,便于记忆。如:sudo docker run --name blog -t -i -p 4000:4000 -p 139:139 -p 445:445 centos-dev:blog-v1.1

将镜像提交到Docker Hub上


在docker hub上注册账号,之后就可以将自己的镜像push上去了,这样就可以在需要的时候pull下来。

之前创建的仓库命名不符合要求,无法push,可通过如下命令修改名字:sudo docker tag centos-dev:base-v1.2 yangxikun/centos-dev:base-v1.2

docker images

通过挂载“宿主机”目录使用个人开发环境示例


例如,我登陆了一台服务器,需要修改某些文件,但是服务器上没安装vim,此时我可以pull镜像centos-dev:base-v1.2,然后执行sudo docker run -t -i --name test -v /:/hostroot yangxikun/centos-dev:base-v1.2 /bin/zsh将“宿主机”的根目录挂载到容器的/hostroot目录下,这样我就能用自己熟悉的环境修改“宿主机”的配置了。当然,前提是要宿主机支持docker。