環境準備html
IP 主機名 操做系統 192.168.56.11 linux-node1 centos7 注意:我這裏使用的是centos7,若是是使用centos5或者centos6,須要升級操做系統內核,不然Docker的許多新功能都沒法使用
- 手動構建 - 自動構建,(經過Dockerfile方式)
爲了防止干擾,將之前建立的容器所有刪掉。node
切記 切記 切記:生產環境慎用。 不然真的會發生 從刪除到跑路。。。
獲取容器IDlinux
[root@linux-node1 ~]# docker ps -a -q #獲取全部容器ID 4c37ade49a7a 1a0ec7a5b1a5 fd11374b2a58 cbc91bef8ea7 1b1113fe3b8e c4c9b4947e61 17df7e2a5667 4d5a21ea94e0 d6e7283abf0a 7ada4ff8323a c627741a7dc1 9476c8be9125
而後停掉全部的容器nginx
[root@linux-node1 ~]# docker kill $(docker ps -a -q) 4c37ade49a7a 1b1113fe3b8e c4c9b4947e61 17df7e2a5667 c627741a7dc1 Failed to kill container (1a0ec7a5b1a5): Error response from daemon: Cannot kill container 1a0ec7a5b1a5: Container 1a0ec7a5b1a5d931f2f887ee2fb3680d9d56b109be37044414346269f2a0bf72 is not running Failed to kill container (fd11374b2a58): Error response from daemon: Cannot kill container fd11374b2a58: Container fd11374b2a58741542c931a4eb661c6a8f3a230a13057d28a96e1cdb6c898530 is not running Failed to kill container (cbc91bef8ea7): Error response from daemon: Cannot kill container cbc91bef8ea7: Container cbc91bef8ea779668a696046c1aa905ba2dc65e64ed5b403633b3284e00ec126 is not running Failed to kill container (4d5a21ea94e0): Error response from daemon: Cannot kill container 4d5a21ea94e0: Container 4d5a21ea94e0df102198812fd899d8293198a2376dd5d952642113b76448ca65 is not running Failed to kill container (d6e7283abf0a): Error response from daemon: Cannot kill container d6e7283abf0a: Container d6e7283abf0a7e423576df645ac36c35a691153d06d63439faf72d3ce3037529 is not running Failed to kill container (7ada4ff8323a): Error response from daemon: Cannot kill container 7ada4ff8323a: Container 7ada4ff8323ad67e33fa4c52cd585a46cf9e62733505a54a7a7eb13cf33c0873 is not running Failed to kill container (9476c8be9125): Error response from daemon: Cannot kill container 9476c8be9125: Container 9476c8be91256e20da7f567f5a261f3f754b736ab6402c714180db713e3d346b is not running
刪除全部容器docker
[root@linux-node1 ~]# docker rm $(docker ps -a -q) 4c37ade49a7a 1a0ec7a5b1a5 fd11374b2a58 cbc91bef8ea7 1b1113fe3b8e c4c9b4947e61 17df7e2a5667 4d5a21ea94e0 d6e7283abf0a 7ada4ff8323a c627741a7dc1 9476c8be9125
手動建立一個Nginx的鏡像centos
root@linux-node1 ~]# docker run --name mynginx -it centos #運行一個docker容器 [root@312bc2c902da /]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm #配置epel源 Retrieving http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm warning: /var/tmp/rpm-tmp.QKhuVj: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:epel-release-7-8 ################################# [100%] [root@312bc2c902da /]# yum install -y nginx #經過方式安裝nginx 編輯nginx配置文件,讓它前臺運行 [root@312bc2c902da nginx]# cat /etc/nginx/nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ daemon off; #是否以守護進程的方式運行nginx,守護進程是指脫離終端而且在後頭運行的進程,關閉守護進程執行的方式可讓咱們方便調試nginx user nginx; worker_processes auto; error_log /var/log/nginx/error.log;
將鏡像提交到本地tcp
[root@linux-node1 ~]# docker commit -m "my nginx" 312bc2c902da onepiece/mynginx:v1 sha256:273e37f59d87495c481ef8c23d32b33723103799aeb1194c1c632703fc70ad9f 提交到本地 -m是描述,後面跟容器ID ,onepiece是一個倉庫名稱
查看鏡像ide
[root@linux-node1 ~]# docker p_w_picpaths #能夠看到咱們剛纔建立的鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE onepiece/mynginx v1 273e37f59d87 4 minutes ago 261.9 MB
建立端口映射ui
[root@linux-node1 ~]# docker run --name mynginxv1 -d -p 81:80 onepiece/mynginx:v1 nginx 3213254d75a9ab740c180cca295b427a408f8a50881cf844dfcc3f904751e53b [root@linux-node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3213254d75a9 onepiece/mynginx:v1 "nginx" 12 seconds ago Up 11 seconds 0.0.0.0:81->80/tcp mynginxv1 #使用以前建立的腳本登陸到容器 [root@linux-node1 ~]# ./docker_in.sh mynginxv1 [root@3213254d75a9 /]# cd /var/log/nginx/ [root@3213254d75a9 nginx]# ls access.log error.log [root@3213254d75a9 nginx]# cat access.log #查看容器的訪問日誌 192.168.56.1 - - [19/Sep/2016:09:02:17 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-" 192.168.56.1 - - [19/Sep/2016:09:02:17 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.56.11:81/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"
Dockerfile:是一種文本格式centos7
首先咱們先規劃一下Dockerfile的所在目錄,例如/opt/dockerfile/nginx
注意:D必須是大寫。當使用Dockerfile構建鏡像時,它會在當前目錄下去讀一個名稱爲Dockerfile的文件。
[root@linux-node1 /opt/dockerfile/nginx]# cat Dockerfile #base p_w_picpaths FROM centos #除了註釋的第一行,必須是FROM centos,用於設置基礎鏡像 #maintainer MAINTAINER JackyWang #維護信息 #Commands RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm RUN yum install -y nginx && yum clean all #RUN做爲關鍵字,後面接要運行的命令 RUN echo "daemon off;" >> /etc/nginx/nginx.conf ADD index.html /usr/share/nginx/html/index.html #ADD是關鍵字, 添加一個首頁文件 #index.html是放在當前目錄下 EXPOSE 80 #對外開放的是80端口 CMD ["nginx"] #鏡像啓動時,啓動的是nginx命令
寫好Dockerfile後,咱們開始構建
[root@linux-node1 /opt/dockerfile/nginx]# docker build -t mynginx:v2 . Sending build context to Docker daemon 3.072 kB Step 1 : FROM centos ---> 980e0e4c79ec Step 2 : MAINTAINER JackyWang ---> Using cache ---> 33f84558f81d Step 3 : RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm ---> Using cache ---> 21a39298e95b Step 4 : RUN yum install -y nginx && yum clean all ---> Using cache ---> c16994d2c471 Step 5 : RUN echo "daemon off;" >> /etc/nginx/nginx.conf ---> Using cache ---> 39308efba34d Step 6 : ADD index.html /usr/share/nginx/html/index.html ---> Using cache ---> 86464cc2b1d3 Step 7 : EXPOSE 80 ---> Using cache ---> 89a262db6b6c Step 8 : CMD nginx ---> Using cache ---> f735be220129 Successfully built f735be220129 從記錄信息中咱們能夠看到docker每一步都作了什麼
構建後運行容器,能夠正常運行。
[root@linux-node1 /opt/dockerfile/nginx]# docker run --name mynginxv2 -d -p 82:80 mynginx:v2 6ec8783771d6aa06ec0c8628c9fa643c47efcca8b698ab5f6a4dade5c3cb335d