1 创建用于存放 Dockerfile 的目录
- mkidr /root/docker/ubuntu
2 创建 Dockerfile 文件
- cd /root/docker/ubuntu
- vim /root/docker/ubuntu/Dockerfile
- # Set the base image to Ubuntu
- FROM ubuntu/lamp
- # File Author / Maintainer
- MAINTAINER Author zhongzuzhu
- #RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
- RUN apt-get install -y supervisor
- RUN mkdir -p /var/log/supervisor
- COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
- EXPOSE 22 80
- CMD ["/usr/bin/supervisord"]
这里说明一点 我的镜像是自己已搭建好的LAMP的环境, 如果不是请下载lamp 的镜像或者自己创建,当然也可以在Dockerfile中安装,看个人需求了。
指令
指令的一般格式为 INSTRUCTION arguments,指令包括 FROM、MAINTAINER、RUN 等。
FROM
格式为 FROM 或FROM :。
第一条指令必须为 FROM 指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次)。
MAINTAINER
格式为 MAINTAINER ,指定维护者信息。
RUN
格式为 RUN
- vim supervisord.conf
- [supervisord]
- nodaemon=true
- [program:sshd]
- command=/usr/sbin/sshd -D
- [program:apache2]
- command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
- [program:mysqld]
- user=mysql
- command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe
对应 Dockerfile 中的COPY
3 创建新的镜像
- docker build -t ubuntu/supervisord .
注意: 点不能丢了 这里的点 不是标点符号。
4 查看镜像 docker images
- root@120413:~/docker/2# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- ubuntu/supervisord latest 2b5b877d05dd 11 minutes ago 945.6 MB
- ubuntu/lamp Supervisor 7ebefe1cbeb0 23 hours ago 1.021 GB
5 启动容器
- docker run -d -i -t -p 23.88.229.213:8081:80 -p 23.88.229.213:2222:22 --hostname=supervisord-alive.com -v /home/docker/test/:/home/wwwroot/88885345.com --name ubuntu-supervisord ubuntu/supervisord
- docker ps -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 39702a0e56eb ubuntu/lampa "/usr/bin/supervisord" 6 seconds ago Up 6 seconds 23.88.229.213:2222->22/tcp, 23.88.229.213:8081->80/tcp ubuntu-docker-LAMP
最后使用这种方式启动的容器不能 docker attach 容器ID的方式去连接 , 可以通过 ssh 前提是你封装的 镜像有这个open-ssh 服务哦
没有评论