Docker通过Dockerfile创建Redis、Nginx--详细过程

创建Nginx镜像

我们先创建一个目录,在目录里创建Dockerfile

[root@docker-3 ~]# mkdir mynginx
[root@docker-3 ~]# cd mynginx
[root@docker-3 ~]# vim Dockerfile

Dockerfile的内容

FROM daocloud.io/library/centos:7
RUN buildDeps='readline-devel pcre-devel openssl-devel gcc telnet wget curl make' && \
    yum -y install $buildDeps && \
    yum clean all
RUN wget https://nginx.org/download/nginx-1.24.0.tar.gz && \
    tar zfx nginx-1.24.0.tar.gz -C /opt
RUN cd /opt/nginx-1.24.0 && \
    mkdir /usr/local/nginx && \
    ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module && \
    make && make install && \
    rm -rf /usr/local/nginx/html/* && \
    echo "nihao" > /usr/local/nginx/html/index.html && \
    cd / && rm -rf /opt/nginx-1.24.0 && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH /usr/local/nginx/sbin:$PATH
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

开始构建,别忘了最后的  . 

[root@docker-3 mynginx]# docker build -t nginx:v1 .

构建过程

[+] Building 241.2s (9/9) FINISHED                                                                                  docker:default
 => [internal] load build definition from Dockerfile                                                                          0.0s
 => => transferring dockerfile: 824B                                                                                          0.0s
 => [internal] load .dockerignore                                                                                             0.0s
 => => transferring context: 2B                                                                                               0.0s
 => [internal] load metadata for daocloud.io/library/centos:7                                                                 1.3s
 => CACHED [1/5] FROM daocloud.io/library/centos:7@sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9    0.0s
 => [2/5] RUN buildDeps='readline-devel pcre-devel openssl-devel gcc telnet wget curl make' &&     yum -y install $buildDe  210.5s
 => [3/5] RUN wget https://nginx.org/download/nginx-1.24.0.tar.gz &&     tar zfx nginx-1.24.0.tar.gz -C /opt                  7.8s
 => [4/5] RUN cd /opt/nginx-1.24.0 &&     mkdir /usr/local/nginx &&     ./configure --prefix=/usr/local/nginx     --with-ht  21.0s
 => [5/5] WORKDIR /usr/local/nginx                                                                                            0.0s
 => exporting to image                                                                                                        0.6s
 => => exporting layers                                                                                                       0.6s
 => => writing image sha256:0cef6f4d7d9fdb2438160b5df566e442fe72b2eb04150ac0504d5af34472fb9d                                  0.0s
 => => naming to docker.io/library/nginx:v1                                                                                   0.0s

查看镜像

[root@docker-3 mynginx]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v1        0cef6f4d7d9f   10 seconds ago   325MB

运行镜像

[root@docker-3 mynginx]# docker run -itd --name nginxv1 -p 80:80 nginx:v1
3ba682f5bb1f12b6c318903e6d8e83fe22c7e9769c196d361862152da2d4c29d
[root@docker-3 mynginx]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED         STATUS         PORTS                               NAMES
3ba682f5bb1f   nginx:v1   "nginx -g 'daemon of…"   7 seconds ago   Up 7 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginxv1

网页查看

Docker通过Dockerfile创建Redis、Nginx--详细过程_第1张图片

创建Redis镜像

创建目录,在目录里创建Dockerfile

[root@docker-2 ~]# mkdir myRedis
[root@docker-2 ~]# cd myRdis
[root@docker-2 ~]# vim Dockerfile
FROM daocloud.io/library/centos:7
RUN yum -y install gcc gcc-c++ net-tools make wget \
    && mkdir -p /data/application/ \
    && wget https://download.redis.io/releases/redis-6.2.7.tar.gz \
    && tar zxf redis-6.2.7.tar.gz -C  /data/application/
RUN cd /data/application \
    && mv redis-6.2.7/ redis \
    && cd redis/ \
    && make \
    && sed -i -e 's/bind 127.0.0.1 -::1/bind 0.0.0.0/g' ./redis.conf
EXPOSE 6379
ENTRYPOINT /data/application/redis/src/redis-server /data/application/redis/redis.conf

构建

[root@docker-2 myRedis]# docker build -t redis:v1 .

构建过程

[+] Building 0.1s (7/7) FINISHED                                                                                    docker:default
 => [internal] load build definition from Dockerfile                                                                          0.0s
 => => transferring dockerfile: 591B                                                                                          0.0s
 => [internal] load .dockerignore                                                                                             0.0s
 => => transferring context: 2B                                                                                               0.0s
 => [internal] load metadata for daocloud.io/library/centos:7                                                                 0.0s
 => [1/3] FROM daocloud.io/library/centos:7                                                                                   0.0s
 => CACHED [2/3] RUN yum -y install gcc gcc-c++ net-tools make wget     && mkdir -p /data/application/     && wget https://d  0.0s
 => CACHED [3/3] RUN cd /data/application     && mv redis-6.2.7/ redis     && cd redis/     && make     && mkdir /data/appli  0.0s
 => exporting to image                                                                                                        0.0s
 => => exporting layers                                                                                                       0.0s
 => => writing image sha256:15c74862351b269ae259a12d6c8d43a4e68dd97db5363acdd7e965c885b33a15                                  0.0s
 => => naming to docker.io/library/redis:v1                                                                                   0.0s

运行容器

[root@docker-2 myRedis]# vim Dockerfile 
[root@docker-2 myRedis]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED       SIZE
redis                        v1        15c74862351b   6 days ago    672MB
[root@docker-2 myRedis]# docker run -itd --name redis1 -p 6379:6379 redis:v1
dc76e2462b7ae0a63ed673bc2f247302a1bec336bc6320a5f67c5cd2051ebf41
[root@docker-2 myRedis]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED         STATUS         PORTS                                       NAMES
dc76e2462b7a   redis:v1   "/bin/sh -c '/data/a…"   4 seconds ago   Up 3 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis1

进入容器运行Redis

[root@docker-2 myRedis]# docker exec -it redis1 /bin/sh
sh-4.2# ls
anaconda-post.log  bin	data  dev  etc	home  lib  lib64  media  mnt  opt  proc  redis-6.2.7.tar.gz  root  run	sbin  srv  sys	tmp  usr  var
sh-4.2# cd data/application/redis/
sh-4.2# ./src/redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 

我这里只修改了配置文件的bind,  如果有需要其他使用sed更改即可

你可能感兴趣的:(docker,nginx,jenkins)