1. 程式人生 > >docker創建自己的鏡像並配置nginx

docker創建自己的鏡像並配置nginx

end 網絡連接 cti ble tee loaded enforce 允許 idt

前言

最近在研究docker,記錄一下如何創建一個屬於自己的鏡像

本次使用linux版本為centos7.4(centos6也可以使用docker,只不過有部分功能只有7才有)

本次創建的鏡像為centos系統中搭建nginx

一、統一環境

系統版本

[root@docker ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

內核版本

[root@docker ~]# uname -r
3.10.0-693.2.2.el7.x86_64

selinux關閉

[root@docker ~]# getenforce 
Disabled

關閉防火墻

[root@docker ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

配置yum源(這裏可以保留自己需要的yum源,自己視情況而定)

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# rm -rf *
[root@docker yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

二、開始安裝並配置docker

下載並設置開機自啟

[root@docker ~]# yum install -y docker
[root@docker ~]# systemctl enable docker.service

修改docker鏡像源(默認使用國外的,改為國內阿裏,速度會提升不少)

有兩種方法,效果相同,在這裏共同展示

方法一:

vim /usr/lib/systemd/system/docker.service(默認配置文件)
[service]
...............
ExecStart=/usr/bin/dockerd-current --registry-mirror=阿裏雲鏡像加速地址 找到對應行,添加鏡像加速器

方法二:

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-EOF
{
  "registry-mirrors": ["阿裏雲鏡像加速地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker

此方法為阿裏雲官方提供

三、啟動docker並查看其狀態

重新加載docker參數

[root@docker ~]# systemctl daemon-reload

啟動docker並查看狀態

[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl status docker

四、下載官方系統centos鏡像並查看

[root@docker ~]# docker pull centos
[root@docker yum.repos.d]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              49f7960eb7e4        6 weeks ago         200 MB

五、開始鏡像制作

啟動並進入到鏡像中

[root@docker ~]# docker run -it --name mynginx centos /bin/bash
[root@a8882e2ef0d9 /]#

鏡像定制化(進入之後的操作就跟正常在centos中操作是一樣的)

[root@a8882e2ef0d9 /]# yum install -y wget   #默認沒有get所以需要安裝
#與之前環境統一一樣的操作
[root@a8882e2ef0d9 /]# cd /etc/yum.repos.d
[root@a8882e2ef0d9 yum.repos.d]# rm -f *
[root@a8882e2ef0d9 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@a8882e2ef0d9 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

開始安裝nginx

[root@a8882e2ef0d9 ~]# yum install -y nginx #默認的網絡連接方式是可以連接外網的
[root@a8882e2ef0d9 ~]# vim /etc/nginx/nginx.conf #修改參數
找到user nginx;,在他下面加上一行 daemon off;(禁止後臺運行,docker不允許nginx後臺運行)
[root@a8882e2ef0d9 ~]# nginx -t    #檢查nginx配置文件語法
[root@a8882e2ef0d9 ~]# nginx    #啟動ngin

檢查結果

正常在nginx命令運行後,界面是夯住的,所以另外打開一個ssh渠道執行
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
860e2e2f3d93        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            mynginx

這樣的結果證明是沒問題的

六、提交鏡像並查看

[root@docker ~]# docker commit -m "add new nginx docker images" mynginx murry/nginx:v1
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
murry/nginx         v1                  b96902fb932a        25 hours ago        397 MB
docker.io/centos    latest              49f7960eb7e4        6 weeks ago         200 MB

到這裏,自己的鏡像就已經提交到本地

七、測試nginx

運行自己的鏡像

docker run -p 80:80 --name web_nginx b96902fb932a nginx  #-p表示端口映射,後面那一串字符代表鏡像id

瀏覽器訪問服務器IP地址

技術分享圖片

出現此界面證明nginx配置成功

八、上傳到自己的docker hub中

如果小夥伴想要把自己辛辛苦苦做出來的鏡像上傳到docker hub可以自己先創建一個自己的docker id

在服務器上

[root@docker ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you dont have a Docker ID, head over to https://hub.docker.com to create one.
Username : murry
Password: 
Login Succeeded

登陸成功後

[root@docker ~]# docker tag 鏡像ID docker.io/用戶名/鏡像名
[root@docker ~]# docker push docker.io/用戶名/鏡像名

這樣就可以在docker hub官網上看到自己的作品啦

番外:本篇博客部分技術支持來自我的一位好友:http://www.cnblogs.com/zhangzhifan1208/

其中記錄不少炫酷的知識,歡迎大家查閱

docker創建自己的鏡像並配置nginx