docker組成:docker客戶端 、docker服務器端 、docker鏡像 、docker容器css
Doeker容器:開源容器引擎,打包可移植,沙箱機制,輕量級html
1. 虛擬機node
2. 使用複雜linux
3. 啓動過程相對慢(分鐘)nginx
4. 模版文件較大redis
5. 和物理徹底隔離sql
6. 模擬的是一個完整系統,能夠登陸並實現管理docker
1. 直接虛擬出來一個用戶空間apache
2. 使用簡單json
3. 啓動很是塊(秒級)
4. 模版文件很小
5. 在必定程度上和物理機隔離
6. 僅僅是模擬一部分用戶空間,不方便管理
須要提早配置的yum源:epel,extra,本地源
第一步:須要下載阿里雲較新版的docker源文件
[root@ken-node3 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第二步:移動文件到yum.repos.d下
[root@ken-node3 ~]# mv docker-ce.repo /etc/yum.repos.d/
第三步:下載docker-ce
docker-ce 社區免費版
docker-ee 企業收費版
[root@ken-node3 ~]# yum install docker-ce -y
第四步:直接啓動docker並設置開機自啓
[root@ken-node3 ~]# systemctl restart docker
[root@ken-node3 ~]# systemctl enable docker
https://www.cnblogs.com/modestlin/p/11629026.html 出現container-selinux 版本不符的問題是,可依據該博客內容進行
注:
若是不啓動docker服務會報以下的錯誤:
[root@ken-node3 ~]# docker image ls
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
第五步:驗證docker服務是否能夠正常運行
[root@ken1 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
爲何鏡像加速?
由於docker在拉取鏡像的時候是默認使用dockerhub上面的鏡像即國外鏡像,因此拉取速度是很慢的,
爲了解決這個問題,咱們就能夠使用阿里雲鏡像加速
第一步:瀏覽器輸入阿里雲進入官網並登錄
略
第二步:進入控制檯–》產品與服務–》容器鏡像服務–》鏡像加速器
第三步:建立一個腳本寫入以下內容
略
#!/bin/bash wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo mv docker-ce.repo /etc/yum.repos.d sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
docker鏡像操做相關的指令
docker使用技巧:
[root@ken-node3 ~]# docker –help #能夠查看docker全部使用方法
[root@ken-node3 ~]# docker image –help #能夠查看docker鏡像操做的全部方法
[root@ken-node3 ~]# docker image ls –help #能夠查看docker鏡像操做中ls指令的用法
鏡像操做指令:
build 從dockerfile中建立鏡像
history 能夠顯示鏡像的構建歷史 #docker鏡像分層構建,每一層都有一個指令
import 從一個壓縮包建立鏡像
save 建立鏡像壓縮包
load 從壓縮包導入鏡像
ls 列出來鏡像
prune 清除不使用的鏡像
pull 拉取鏡像
push 推送鏡像
rm 刪除鏡像
tag 更名
例子1:拉取鏡像
格式:docker image pull REPOSITORY:TAG
[root@ken1 ~]# docker image pull busybox
注意:
若是在拉取鏡像的時候只指定了REPOSITORY的話,默認拉取的是tag爲latest的版本
例子2:查看當前有哪些鏡像
[root@ken1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox 1.31.0 db8ee88ad75f 3 weeks ago 1.22MB busybox latest db8ee88ad75f 3 weeks ago 1.22MB
例子3:查看鏡像構建歷史
[root@ken1 ~]# docker image history busybox IMAGE CREATED CREATED BY SIZE COMMENT db8ee88ad75f 3 weeks ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) ADD file:9ceca008111a4ddff… 1.22MB
例子4:製做鏡像壓縮包
方法一:使用-o選項,output
[root@ken1 ~]# docker image save busybox:1.31.0 -o busybox1.31.tar [root@ken1 ~]# ls anaconda-ks.cfg busybox1.31.tar docker-speend.sh test test1
方法二:使用標準輸出
[root@ken1 ~]# docker image save busybox:1.31.0 > busybox1.31-v2.tar [root@ken1 ~]# ls anaconda-ks.cfg busybox1.31.tar busybox1.31-v2.tar docker-speend.sh test test1
例子5:使用鏡像壓縮包
方法一:使用-i,input
[root@ken-node3 ~]# docker image load -i busybox1.31.tar Loaded image: busybox:1.31.0 [root@ken-node3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox 1.31.0 db8ee88ad75f 3 weeks ago 1.22MB
方法二:
[root@ken-node3 ~]# docker image load < busybox1.31.tar Loaded image: busybox:1.31.0 [root@ken-node3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox 1.31.0 db8ee88ad75f 3 weeks ago 1.22MB
例子6:刪除鏡像
方法一:
[root@ken1 ~]# docker image rm busybox:1.31.0 Untagged: busybox:1.31.0 [root@ken1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 3 weeks ago 1.22MB
方法二:
[root@ken1 ~]# docker rmi busybox
例子7:鏡像更名
[root@ken1 ~]# docker image tag busybox:1.31.0 busybox:latest [root@ken1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE busybox 1.31.0 db8ee88ad75f 3 weeks ago 1.22MB busybox latest db8ee88ad75f 3 weeks ago 1.22MB
例子8:清除不常常使用的鏡像
[root@ken1 ~]# docker image prune -f
Total reclaimed space: 0B
run 運行容器
commit 使用當前運行的容器製做鏡像
exec 能夠在容器中執行命令或者進入容器
inspect 查看容器的詳細信息,也能夠查看鏡像的信息
kill 強制殺掉容器
logs 查看容器產生的日誌信息
ls 查看當前運行的容器
ps 查看當前運行的容器
pause 暫停容器
unpause 開啓容器
port 查看容器端口映射信息
rename 對容器更名
restart 重啓容器
start 啓動容器
stop 停掉容器
rm 刪除容器,默認刪除不了正在運行的容器,-f
stats 查看容器的運行狀態
top 查看容器的系統內存,磁盤使用信息
例子1:啓動容器
前臺運行容器
[root@ken1 ~]# docker run -i -t busybox /bin/sh
-i 交互模式
-t分配終端
後臺運行容器
[root@ken1 ~]# docker run -d nginx-game:v1
-d後臺運行
例子2:查看正在運行的容器
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 95a695cffb03 nginx-game:v1 "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:88->80/tcp hardcore_shannon
查看正在運行以及已經退出的容器
[root@ken1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 95a695cffb03 nginx-game:v1 "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:88->80/tcp hardcore_shannon 40799b6b38f2 busybox "/bin/sh" 7 minutes ago Exited (0) 6 minutes ago infallible_benz ac864729390b busybox "/bin/bash" 7 minutes ago Created elastic_swartz adbc635a8bf1 busybox "ip a" 8 minutes ago Exited (0) 8 minutes ago nervous_noyce
例子3:在容器外執行命令
[root@ken1 ~]# docker exec -it 95a695cffb03 ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr
注意:
若是你要想操做容器的話,必須保證容器時up狀態即正在運行的狀態,exited狀態的容器時沒法進行操做的。
例子1:查看正在運行的容器
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
例子2:查看全部的容器包括已經中止運行的容器
[root@ken1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9105c43602d9 nginx-game:v1 "nginx -g 'daemon of…" 32 minutes ago Exited (0) 13 minutes ago laughing_moser 2c85ff7cc53b nginx-game:v1 "nginx -g 'daemon of…" 19 hours ago Exited (0) 9 hours ago ecstatic_blackburn 6a1d4f6a015c nginx-game:v1 "nginx -g 'daemon of…" 22 hours ago Exited (0) 22 hours ago youthful_kowalevski 95a695cffb03 nginx-game:v1 "nginx -g 'daemon of…" 22 hours ago Exited (137) 22 hours ago hardcore_shannon 40799b6b38f2 busybox "/bin/sh" 22 hours ago Exited (0) 22 hours ago infallible_benz ac864729390b busybox "/bin/bash" 22 hours ago Created elastic_swartz adbc635a8bf1 busybox "ip a" 22 hours ago Exited (0) 22 hours ago nervous_noyce
例子3:刪除一個容器
方法一:長ID
[root@ken1 ~]# docker rm 9105c43602d9 9105c43602d9
方法二:短ID
[root@ken1 ~]# docker rm 2c85ff7 2c85ff7
方法三:容器名
[root@ken1 ~]# docker rm youthful_kowalevski youthful_kowalevski
注意:刪除鏡像同樣!
例子4:後臺運行容器
[root@ken1 ~]# docker run -d nginx-game:v1 72f712bff84eff8ad0b371291ff488d21f25aca69c2f08a1fd52dd2718d2158c [root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 80/tcp laughing_lovelace
例子5:運行容器加多個參數
[root@ken1 ~]# docker run --name nginxtest -d --rm nginx-game:v1 2cdec372f4350dea46b9fc6ce37d14314a4ef1351f2ec10da662aa36919b6bbe [root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2cdec372f435 nginx-game:v1 "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 80/tcp nginxtest
–name 指定容器名字
-d 後臺運行
–rm 容器停掉以後自動刪除
例子6:批量刪除容器
[root@ken1 ~]# docker rm $(docker ps -aq) 95a695cffb03 40799b6b38f2 ac864729390b adbc635a8bf1
注意:
這樣只能刪除已經退出的容器,沒法刪除正在運行的容器
若是也想要刪掉正在運行的容器,能夠在docker rm 後加-f選項進行強制刪除
例子7:查看容器信息
[root@ken1 ~]# docker inspect 72f712bff84e
注:
查看容器暴露的端口:
方法一:
docker history IMAGE_ID
方法二:
查看容器詳細信息 docker inspect CONTAINER_ID
例子8:查看容器運行狀態
[root@ken1 ~]# docker stats 72f712bff84e CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 72f712bff84e laughing_lovelace 0.00% 1.344MiB / 1.779GiB 0.07% 648B / 0B 0B / 0B 2
例子9:對容器內存使用量進行限制
[root@ken1 ~]# docker run -d -m 64M nginx-game:v1
-m選項指定容器能夠使用的內存量
例子10:中止容器
[root@ken1 ~]# docker stop 8cd65493c7c1 8cd65493c7c1 [root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" 15 minutes ago Up 15 minutes 80/tcp laughing_lovelace
例子11:啓動容器
[root@ken1 ~]# docker start 8cd65493c7c1 8cd65493c7c1 [root@ken1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8cd65493c7c1 nginx-game:v1 "nginx -g 'daemon of…" 2 minutes ago Up 1 second 80/tcp loving_sammet 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" 15 minutes ago Up 15 minutes 80/tcp laughing_lovelace
例子12:殺掉容器
[root@ken1 ~]# docker kill 8cd65493c7c1 8cd65493c7c1 [root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" 16 minutes ago Up 16 minutes 80/tcp laughing_lovelace [root@ken1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8cd65493c7c1 nginx-game:v1 "nginx -g 'daemon of…" 2 minutes ago Exited (137) 6 seconds ago loving_sammet 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" 16 minutes ago Up 16 minutes 80/tcp laughing_lovelace
docker容器操做的kill和stop區別:
stop優雅退出。-15 10秒以後-9
kill -9
例子13:查看容器日誌
[root@ken1 ~]# docker logs 8cd65493c7c1
持續刷新檢測日誌:
[root@ken1 ~]# docker logs 8cd65493c7c1 -f
-f 持續刷新
例子14:容器更名
[root@ken1 ~]# docker rename loving_sammet nginx-game
例子14:查看容器系統使用信息
[root@ken1 ~]# docker top nginx-game UID PID PPID C STIME TTY TIME CMD root 3054 3036 0 18:04 ? 00:00:00 nginx: master process nginx -g daemon off; 101 3088 3054 0 18:04 ? 00:00:00 nginx: worker process
例子15:暫停容器
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8cd65493c7c1 nginx-game:v1 "nginx -g 'daemon of…" 12 minutes ago Up 9 minutes (Paused) 80/tcp nginx-game
例子16:再開啓容器
[root@ken1 ~]# docker unpause nginx-game nginx-game [root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8cd65493c7c1 nginx-game:v1 "nginx -g 'daemon of…" 13 minutes ago Up 9 minutes 80/tcp nginx-game
例子17:查看容器端口映射信息
[root@ken1 ~]# docker port 8cd65493c7c1
例子18:進入容器
[root@ken1 ~]# docker exec -it 8cd65493c7c1 sh # # # # exit [root@ken1 ~]# docker exec -it 8cd65493c7c1 bash root@8cd65493c7c1:/# root@8cd65493c7c1:/# root@8cd65493c7c1:/#
能夠選擇使用sh和bash進入容器
總結:進入容器的方式:4種進入容器的方法
方法一:exec #在容器裏面退出,容器自己不會退出
方法二:attach #容器自己退出 exitd
方法三:ssh
方法四:nsenter
實現了外部環境訪問容器內部
四類端口映射:
第一類:把容器的端口隨機映射爲物理機的一個端口
第二類:把容器的端口映射爲物理機特定的一個端口
第三類:把容器的端口映射爲物理機特定網卡上的特定端口
第四類:把容器的端口映射爲物理機特定網卡上的隨機端口
第一類:把容器的端口隨機映射爲物理機的一個端口
使用的是大寫的-P
[root@ken1 ~]# docker run -d -P httpd #隨機映射爲物理機的端口 cd662b604a59f6715b28c1af62956dbf665d5c4916897fbeb844e0e77ba8b99e [root@ken1 ~]# docker ps #能夠查看到容器映射信息 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cd662b604a59 httpd "httpd-foreground" 12 seconds ago Up 11 seconds 0.0.0.0:32768->80/tcp happy_cray 50405dd6b651 httpd "httpd-foreground" 6 minutes ago Up 6 minutes 80/tcp busy_ardinghelli 72f712bff84e nginx-game:v1 "nginx -g 'daemon of…" About an hour ago Up About an hour 80/tcp laughing_lovelace [root@ken1 ~]# ss -tnl #物理機啓動會了相應的端口 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::32768 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
或者
[root@ken1 ~]# docker port cd662b604a59 80/tcp -> 0.0.0.0:32768
注意:
使用-P選線。是把容器內全部expose的端口都映射爲物理機的隨機端口
第二類:把容器端口映射爲物理機特色端口
使用的是小寫的-p
[root@ken1 ~]# docker run -d -p 80:80 httpd #使用小寫p進行特定端口映射 15a01c693f4c4ffc0774bcb535fc5ec415aec9944f295ae9d468915b35019fae [root@ken1 ~]# docker port 15a01c693f4c 80/tcp -> 0.0.0.0:80 [root@ken1 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::32768 :::* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
– p 80:80 第一個80是 物理機端口,第二個80是容器端口,順序不能亂!另外物理機的端口不能被佔用!
第三類:把容器端口映射爲特色網卡上的隨機端口
使用小寫的p
[root@ken1 ~]# docker run -d -p 192.168.163.151::80 httpd ba79a389a467f56c31a0f8489c39a35c756d56bd6a53486d4bee68b3103589bf [root@ken1 ~]# docker port ba79a389a467f56c31a0f 80/tcp -> 192.168.163.151:32769
-p 192.168.163.151::80把容器的80端口隨機映射爲192.168.163.151上的一個隨機端口
第四類:把容器端口映射爲特色網卡上的特色端口
[root@ken1 ~]# docker run -d -p 192.168.163.151:81:80 httpd 64ce1f926979f66992a0377fabef5859b45d9466854649b457d741e3020257d6 [root@ken1 ~]# docker port 64ce1f926979f66 80/tcp -> 192.168.163.151:81 [root@ken1 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 192.168.163.151:32769 *:* LISTEN 0 128 192.168.163.151:81 *:*
-p 192.168.163.151:81:80
把容器80端口映射爲192.168.163.151上的81端口
總結;
1.在端口映射中使用到了兩個選項一個是大寫的P,表示把容器暴露的端口隨機映射爲物理機上的一個隨機端口,不能指定特定網卡
2.另一個是小寫的p,能夠把容器暴露的端口映射爲物理機特定的端口
3.或者映射爲物理機特定網卡上的隨機端口
4.或者特定網卡上的特定端口
製做鏡像的方法:
方法一:
commit
使用commit製做鏡像使基於一個現有的容器
方法二:
Dockefile
第一步:啓動容器
[root@ken1 ~]# docker run -d httpd
第二步:修改網站首頁文件
[root@ken1 ~]# docker exec -it 3cf31d57a61569c09c8024 bash root@3cf31d57a615:/usr/local/apache2# pwd /usr/local/apache2 root@3cf31d57a615:/usr/local/apache2# ls bin build cgi-bin conf error htdocs icons include logs modules root@3cf31d57a615:/usr/local/apache2# cd htdocs/ root@3cf31d57a615:/usr/local/apache2/htdocs# ls index.html root@3cf31d57a615:/usr/local/apache2/htdocs# echo "this is for testing commit" > index.html root@3cf31d57a615:/usr/local/apache2/htdocs# exit exit [root@ken1 ~]# curl 192.168.163.5:88 this is for testing commit
第三步:進行commit提交
[root@ken1 ~]# docker commit -p 3cf31d57a61569c09c8 nginx-com:v1 sha256:5de6e803346c00b4373ad2b49b9caf0dbe12f23a105d8a47c6e6aaca465ff6e6 [root@ken1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx-com v1 5de6e803346c 4 seconds ago 178MB
如今就能夠把配置好的環境發送給其餘人使用
第四步:把鏡像製做成壓縮包
[root@ken1 ~]# docker image save nginx-com:v1 > nginx-com.tar [root@ken1 ~]# ls anaconda-ks.cfg busybox1.31-v2.tar httpd_img.tar.gz nginx-game.tar test1 busybox1.31.tar docker-speend.sh nginx-com.tar test
第五步:進行發送
[root@ken1 ~]# scp nginx-com.tar 192.168.163.134:/root root@192.168.163.134's password: nginx-com.tar 100% 178MB 37.2MB/s 00:04
第六步:其餘人進行使用
[root@ken-node3 ~]# docker image load < nginx-com.tar 9f5d674a9055: Loading layer [==================================================>] 7.168kB/7.168kB Loaded image: nginx-com:v1 [root@ken-node3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx-com v1 5de6e803346c Less than a second ago 178MB [root@ken-node3 ~]# docker run -d -p 87:80 nginx-com:v1 515ec3c0d991ea617dfa243096538d78ba323b1b96c2e8ab13f5d61f1d5ea45d [root@ken-node3 ~]# curl 192.168.163.134:87 this is for testing commit
鏡像倉庫
1,阿里雲鏡像倉庫
2.dockerhub
3.registory私有鏡像倉庫
第一步:註冊登陸
略
第二步:建立鏡像倉庫
第三步:命令行登陸阿里雲
[root@ken1 ~]# docker login --username=kenkendyg registry.cn-hangzhou.aliyuncs.com Password: #是你註冊的阿里雲帳號密碼 WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
第四步:更名
[root@ken1 ~]# docker tag nginx-com:v1 registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com:v1 [root@ken1 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx-com v1 5de6e803346c 11 minutes ago 178MB registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com v1 5de6e803346c 11 minutes ago 178MB
第五步:推送
[root@ken1 ~]# docker push registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com:v1
第六步:查看
阿里雲鏡像版本
第七步:拉取
[root@ken-node3 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com:v1
能夠進行更名操做
第一步:首先查看相關鏡像
[root@ken-node3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx-com v1 5de6e803346c Less than a second ago 178MB registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com v1 5de6e803346c Less than a second ago 178MB
第二步:更名
[root@ken-node3 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com:v1 nginx-com:v1
第三步:刪除相關鏡像
[root@ken-node3 ~]# docker rmi registry.cn-hangzhou.aliyuncs.com/kenken/nginx-com:v1
鏡像分類:
1,工具類的鏡像(容器)
2,服務類的鏡像(容器)
工具類鏡像好比busybox,centos啓動工具類鏡像是使用交互模式docker run -it
服務類鏡像好比nginx,redis,httpd啓動服務類鏡像使用的是docker -d