一、拉取带sshd服务的centos docker镜像到本地
命令:
docker pull freedoms1988/centos7-sshd
解释:
docker pull【拉取命令】 freedoms1988/centos7-sshd【远程镜像名】
二、启动带sshd服务的centos docker容器
命令:
docker run -p 10022:22 -d freedoms1988/centos7-sshd /usr/sbin/sshd -D
解释:
docker run【运行命令】 -p 10022:22【映射端口:宿主机10022到docker22】 -d freedoms1988/centos7-sshd【本地镜像名】 /usr/sbin/sshd -D【启动sshd命令】
三、登录容器
命令:
ssh root@localhost -p 10022
解释:
ssh root【用户】@localhost【主机名】 -p 10022【端口号】
四、安装openssh-clients
命令:
yum install openssh-clients
解释:
yum install【安装命令】openssh-clients【软件名称】
五、安装wget
命令:
yum install wget
解释:
yum install【安装命令】wget【软件名称】
六、下载httpd
命令:
1、cd /usr/local/src
2、wget [http://apache.01link.hk//httpd/httpd-2.4.29.tar.gz](http://apache.01link.hk//httpd/httpd-2.4.29.tar.gz)
3、tar -zxvf httpd-2.4.29.tar.gz
4、cd httpd-2.4.29
解释:
1、进入源码暂存路径
2、下载httpd2.4.29
3、解压
4、进入httpd2.4.29源码路径
七、安装gcc、make、apache依赖
命令:
yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel
解释:
yum install【安装命令】 -y【自动确认参数】 gcc make apr-devel apr apr-util apr-util-devel pcre-devel【软件名称】
八、编译、安装httpd
命令:
1、./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so
2、make && make install
解释:
1、配置编译参数,安装路径
2、编译并安装
九、修改httpd配置
命令:
sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf
解释:
sed【查找命令】 -i【替换参数】 's/#ServerName www.example.com:80/ServerName localhost:80/g' 【待替换参数/替换参数】/usr/local/apache2/conf/httpd.conf【文件路径】
十、启动httpd
命令:
1、/usr/local/apache2/bin/httpd
2、systemctl enable httpd.service
解释:
1、启动httpd
2、设置开机自启动
十一、编辑ssh、httpd启动脚本
操作:
1、cd /usr/local/sbin
2、vim httpd.sh
3、编辑内容:
#!/bin/bash
/usr/sbin/sshd &
/usr/local/apache2/bin/httpd -D FOREGROUND
4、保存退出
5、更改文件权限
chmod 755 httpd.sh
十二、生成支持ssh的centos镜像
命令:
1、docker ps -a
2、docker commit 6c40d0d2d8e centos7-sshd
3、docker images
解释:
1、docker ps【列出容器列表】 -a【可选参数,列出未启动容器列表】
2、docker commit【提交】6c40d0d2d8e【上一步中容器id】 centos7-httpd2.4-sshd【自定义镜像名称】
3、docker images【列出本地镜像列表】
十三、使用生成的镜像运行容器
命令:
docker run -d -p 10022:22 -p 8080:80 freedoms1988/centos7-httpd2.4-sshd /usr/local/sbin/httpd.sh
解释:
docker run【运行命令】 -d【后台进程参数】 -p 10022:22【端口映射:宿主机10022到docker22】 -p 8080:80 【端口映射:宿主机8080到docker80】freedoms1988/centos7-httpd2.4-sshd【镜像名称】 /usr/local/sbin/httpd.sh【运行镜像时运行脚本路径】
十四、测试httpd
操作:
浏览器中输入localhost:8080
结果:
看到it'work
十五、测试sshd
操作:
ssh root@localhost -p 10022
结果:
成功进入容器
十六、挂载宿主机项目目录到容器httpd服务目录
命令:
docker run -d -p 10022:22 -p 8080:80 -v /Users/freedoms/work/Docker/httpd/www:/usr/local/apache2/htdocs freedoms1988/centos7-httpd2.4-sshd /usr/local/sbin/httpd.sh
解释:
docker run【运行命令】 -d -p 10022:22【端口映射:宿主机10022到docker22】 -p 8080:80【端口映射:宿主机8080到docker80】 -v /Users/freedoms/work/Docker/httpd/www:/usr/local/apache2/htdocs 【目录映射:宿主机目录:docker目录】freedoms1988/centos7-httpd2.4-sshd 【镜像名称】 /usr/local/sbin/httpd.sh 【运行镜像时运行脚本路径】
十七、测试宿主机项目目录挂载有效性
操作:
1、在宿主机项目目录中创建index.html文件,并输入任意内容
2、在宿主机或容器内 curl localhost:8080
结果:
应打印index.html文件内容