dockerfile构建nginx的镜像
安装nginx的命令
install_nginx.sh
#!/bin/bash
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/nginx-1.16.0
sh configure --prefix=/usr/local/nginx && make && make install
注:--prefix=/usr/local/nginx指定安装路径
dockerfile文件内容:
FROM centos:7
ADD nginx-1.16.0.tar.gz /usr/local
COPY install_nginx.sh /usr/local
RUN sh /usr/local/install_nginx.sh
EXPOSE 80
构建nginx的容器:
再dockerfile和instal_nginx.sh的当前路径下执行:
docker build -t mycentos:nginx .
docker启动nginx要以启动前台的方式启动nginx
docker run -itd -p 80:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
注:
-p 80:80 表示把nginx的容器的端口80映射给宿主机的80端口
/usr/local/nginx/sbin/nginx -g "daemon off;" 表示把nginx的容器启动nginx时以前台方式启动
dockerfile构建redis的镜像
install_redis.sh
#!/bin/bash
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /home/redis-4.0.9
make && make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf/
cp /home/redis-4.0.9/redis.conf /usr/local/redis/conf/
sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf
sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf
【注】:
cp /home/redis-4.0.9/redis.conf /usr/local/redis/conf/ 拷贝解压包的redis.conf文件是
因为启动redis需要使用到该配置文件。
默认启动方式:该启动方式为前台自动,并非以守护进程方式启动,所以再docker容器中正需要如此,
故无需过多更改redis.conf配置文件的启动方式
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
【注】:
redis启动后默认监听端口号:6379
【注】:
sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf 表示所有机器都可以远程连接redis,69s表示定位到69行
sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf 表示关闭redis的保护模式,88s表示定位到88行
dockerfile内容:
FROM centos:7
ADD redis-4.0.9.tar.gz /home
COPY install_redis.sh /home
RUN sh /home/install_redis.sh
ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
构建redis的docker容器:
将install_redis.sh和dockerfile放置当前路径下:
docker build -t mycentos:redis .
启动redis的docker容器:
docker run -itd -p 6380:6379 mycentos:redis
映射宿主机的6380端口到redis容器的6379
连接redis测试:
在宿主机的目录下:
/data/hudechao/redis/bin/redis-cli -p 6380
set hdc hudechao #结果:ok
get hdc #结果:hudechao
或者:指定IP地址
/data/hudechao/redis/bin/redis-cli -h 172.17.0.2 -p 6379
get hdc #结果:hudechao
/data/hudechao/redis/bin/redis-cli -h 172.17.0.2 -p 6380
结果:因为172.17.0.2是redis的内部容器的IP地址,所以再使用时就该使用容器内部的端口连接redis
Could not connect to Redis at 172.17.0.2:6380: Connection refused
Could not connect to Redis at 172.17.0.2:6380: Connection refused
查看redis容器的内部IP地址:
docker inspect mycentos:redis
网友评论