一、準備工作
1、下載下傳基礎鏡像
[[email protected] ~]# docker pull centos
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 9f38484d220f 2 months ago 202MB
2、建立存放nginx的目錄和Dockerfile檔案(注意Dockerfile的D需要大寫)
[[email protected] ~]# mkdir docker_nginx
[[email protected] ~]# cd docker_nginx/
[[email protected] docker_nginx]# touch Dockerfile
[[email protected] docker_nginx]# pwd
/root/docker_nginx
[[email protected] docker_nginx]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 14 02:48 Dockerfile
3、下載下傳nginx源碼包到docker_nginx目錄下
[[email protected] docker_nginx]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
二、編寫Dockerfile
1、配置檔案,注意添加daemon off;不是以守護程序啟動,否則程序進行完成會自動關閉,容器無法再通路
[[email protected] docker_nginx]# cat Dockerfile
FROM centos
MAINTAINER [email protected]
ADD nginx-1.12.2.tar.gz /usr/local/src
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
ENTRYPOINT ["nginx"]
CMD ["-g","daemon off;"]
2、檢視docker_nginx目錄情況
[[email protected] docker_nginx]# pwd
/root/docker_nginx
[[email protected] docker_nginx]# ll
total 964
-rw-r--r-- 1 root root 509 Jun 14 03:17 Dockerfile
-rw-r--r-- 1 root root 981687 Oct 17 2017 nginx-1.12.2.tar.gz
3、執行docker build進行建構
[[email protected] docker_nginx]# docker build -t centos_nginx:v1 .
4、建構成功提示,并檢視
Removing intermediate container 9976df44f135
Successfully built 18be94a7553b
[[email protected] docker_nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v1 18be94a7553b 4 minutes ago 524 MB
三、啟動新鏡像并映射端口到主控端
1、-d背景運作,-p指定端口
[[email protected] docker_nginx]# docker run -d -p 80:80 centos_nginx:v1
80c508a81a1b2d5f9ecbd6359d16652e1f0c7d8b4cff19035e49351ba84b3921
2、檢視容器,可以看到映射端口
[[email protected] docker_nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80c508a81a1b centos_nginx:v1 "nginx -g 'daemon ..." 20 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp ecstatic_clarke
3、容器名稱更改:rename 舊名稱 新名稱
[[email protected] docker_nginx]# docker rename ecstatic_clarke nginx_v1
[[email protected] docker_nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80c508a81a1b centos_nginx:v1 "nginx -g 'daemon ..." 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp nginx_v1
4、網頁通路
