1、添加创建镜像的配置文件
vim Dockerfile 输入以下内容:FROM jdeathe/centos-ssh
MAINTAINER baxk"xxx@honghe-tech.com"RUN yum install -y openssh-server nginx mysql-server mysql supervisorRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_configRUN sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_configRUN sed -i 's/PermitRootLogin no/PermitRootLogin no/g' /etc/ssh/sshd_configRUN yum -y updateRUN useradd adminRUN echo "admin:admin" | chpasswdRUN echo "root:123456" | chpasswdRUN gpasswd -a admin rootRUN /etc/init.d/mysqld start &&\
mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'root';"&&\ mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'root';"&&\ mysql -u root -proot -e "show databases;"RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisord.confEXPOSE 22 80 3306
CMD ["/usr/bin/supervisord"] 2、添加容器启动的配置文件 vim supervisord.conf 输入以下内容:#command 标示容器启动时,需要执行的命令[supervisord]nodaemon=true[program:sshd]command=/usr/sbin/sshd -D[program:mysqld]command=/usr/bin/mysqld_safe[program:nginx]command=/usr/sbin/nginx3、创建镜像 docker build -t my_centos .4、docker run -d --name=my_centos -p 50001:22 -p 50002:3306 -p 8080:80 my_centos5、通过ssh 登录容器 ssh admin@localhost -p 50001 密码为:admin6、通过浏览器访问nginx localhost:80807、远程连接容器中的mysql mysql -h 0.0.0.0 -u root -P 50002 -p 密码为:letmein # 0.0.0.0 为容器ip地址 通过命令查看容器映射的ip地址 root@xxx-All-Series:~/docker/centos# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES62d473045406 centos_nginx_test2:latest /usr/bin/supervisord 55 minutes ago Up 55 minutes 0.0.0.0:49153->22/tcp, 0.0.0.0:49154->3306/tcp, 0.0.0.0:49155->80/tcp nginx2
docker可以支持把一个宿主机上的目录挂载到镜像里。
docker run -it -
v
/home/dock/Downloads
:
/usr/Downloads
ubuntu64
/bin/bash
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
默认挂载的路径权限为读写。如果指定为只读可以用:ro
docker run -it -
v
/home/dock/Downloads
:
/usr/Downloads
:ro ubuntu64
/bin/bash
====================================================================
docker run -it -p 80:80 -v `pwd`/logs:/var/log/nginx dockerfile/nginx
这个命令会在当前目录下创建logs目录,存放access.log和error.log
docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx
-v
pwd/www:/www
,将当前路径下的www
目录设置为/www
,和server
配置的路径对应-v
pwd/config:/etc/nginx/sites-enabled
,server
文件的本地路径,映射到docker容器的nginx配置路径
=============================================================================
docker run --rm busybox sh -c 'ls /var/log/*'