标签:
Docker所倡导的方向是Paas, 即每个容器都应该是一个产品,精简才是核心.
所以很多基础镜像启动起来后, 一个服务进程都没有.
基于每个容器都应该是一个产品的宗旨, 只要提供一个端口即可提供服务, 所以docker默认不提供固定ip的解决方案.
也就是说, 所有容器都是没有ip的, 由宿主机开启端口, 然后映射到某个容器上.
就目前为止, 我采用的还是原来的套路来使用docker(固定ip, 每个容器都至少监听22端口和自己提供服务的端口).
下面是制作镜像的过程:
# 制作一个提供sshd服务的容器, 并且该镜像要足够强健能够满足多种应用场景. [root@localhost ~]# mkdir -p build_dockerfile/sshd [root@localhost ~]# cd /root/build_dockerfile/sshd # run.sh 起到的作用优点类似原系统中的 /etc/rc.local的作用, 即将想要 # 开机启动的服务预先写入到该文件中, 然后再制作镜像, 因为制作镜像过程中 # 需要将该文件当作post-install去运行的, 而且每次启动镜像的时候都会运行. [root@localhost sshd]# vim run.sh #!/bin/bash /usr/sbin/sshd -D # 编写一个dockerfile [root@localhost sshd]# vim dockerfile FROM docker.io/centos:7 MAINTAINER zhengtong 330356463@qq.com RUN mkdir /var/run/sshd -p RUN echo ‘root:123456‘ | chpasswd RUN echo "vm.hugetlb_shm_group = 501" >> /etc/sysctl.conf RUN yum install wget screen unzip zip bridge-utils bc net-tools vim sysstat mlocate gcc gcc-c++ glibc-devel libstdc++ libstdc++-devel make dos2unix tar openssl-devel ncurses-devel epel-release lrzsz nc bzip2-devel ntpdate compat-libstdc++* libXp* xscreensaver gnome-libs glibc glibc-common pdksh control-center compat-db binutils openssh* libaio.so.1* libgcc_s.so.1* glibc*i686 glibc* -y RUN ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa_key RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key ADD run.sh /run.sh RUN chmod 777 /run.sh EXPOSE 22 CMD ["/run.sh"] # 构建一个新的镜像: 含开启后自动启动ssh服务的镜像 [root@localhost sshd]# docker build -t centos:sshd . # 制作完成后可以查看镜像库中现在的情况. [root@localhost 01_yumed]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos sshd e775e34475b8 2 minutes ago 853.4MB docker.io/centos 7 8b44529354f3 4 minutes ago 202.6 MB
备注: 可以将多个服务启动的命令写入run.sh文件中,然后再制作镜像, 这样的话这个镜像就不仅仅是提供sshd服务而已了.
标签:
原文地址:http://my.oschina.net/u/2452965/blog/513545