注意: 查看docker狀態使用的命令:html
常見的選項介紹:node
--name
: 指定容器名稱-i
: 交互式運行和-t
一塊兒使用,能夠合成-it
使用-t
: 容許tty-e
: 設置容器啓動的環境變量,例如mysql的容器啓動須要指定-e MYSQL_ROOT_PASSWORD='12345'
等-d
: detach,後臺運行--network
: 指定網絡--restart
: always,-p
: 端口映射-v
: 指定存儲卷--rm
: 運行以後刪除,須要與-it
配合使用,可是與-d
互斥-m
: 限制最大使用內存--oom-kill-disable
:禁止oom--cpus
: 限定使用的CPU容量mysql
[root@centos7-node1 ~]# docker run --name redis -d redis:4-alpine
常見的選項介紹:linux
-d
: 後臺運行-e
: 指定環境變量-it
: 交互模式-u
: 指定用戶-w
: 指定工做路徑nginx
[root@centos7-node1 ~]# docker container exec redis netstat -tanlp #對容器執行命令 [root@centos7-node1 ~]# docker exec -it redis /bin/sh /data # redis-cli #客戶端鏈接redis 127.0.0.1:6379> set hello my_name_is_wanghui OK 127.0.0.1:6379> get hello "my_name_is_wanghui"
[root@centos7-node1 ~]# docker stop redis # 未指定存儲卷的狀況下,中止容器以後數據會丟失 [root@centos7-node1 ~]# docker start redis
[root@centos7-node1 ~]# docker image pull nginx:1.18-alpine [root@centos7-node1 ~]# docker run --name web -it --rm nginx:1.18-alpine /bin/sh #推出交互模式就自動退出並刪除容器 [root@centos7-node1 ~]# docker run --name web -d nginx:1.18-alpine [root@centos7-node1 ~]# docker container exec web ifconfig #獲取建立機器的ip [root@centos7-node1 ~]# elinks -dump 172.17.0.3 #訪問頁面 [root@centos7-node1 ~]# docker logs web -f #查看Nginx 滾動日誌 [root@centos7-node1 ~]# docker stats web #查看web這個容器運行時資源佔用狀況 [root@centos7-node1 ~]# docker top web #查看web這個容器的進程狀態 [root@centos7-node1 ~]# docker run --name c2 -it centos:7 [root@f879de456c8d /]# [root@f879de456c8d /]# [root@centos7-node1 ~]# `ctrl+p,ctrl+q` [root@centos7-node1 ~]# docker ps #c2是運行狀態的 [root@centos7-node1 ~]# docker attach c2 #進入容器
docker鏡像含有啓動容器時所須要的文件系統及其內容,所以,其用於建立並啓動容器web
分層
構建機制,最底層爲bootfs,其次爲rootfs
只讀
模式,完整性比肩完成以後從新掛載爲讀寫模式
只讀
模式,然後經過聯合掛載
技術,額外在掛載一個可寫層
特色: 分層疊加,寫時複製(COW)
此文件系統是建構在底層操做系統文件系統之上用於存放鏡像的文件系統,建議底層支持操做系統務必使用xfs文件系統
分類以下:redis
聯合掛載
Registry用於保存docker鏡像,包括景象的層次結構和元數據
用戶能夠自建Registry,也能夠使用官方的dockerhubsql
Repostorydocker
頂層倉庫
和用戶倉庫
用戶名/倉庫名
Tag
,每一個Tag只對應一個鏡像docker registry中的鏡像由開發或者運維人員製做,然後推送到「公共」或者「私有」Repostry上保存,供其餘人使用
例如: 部署到生產環境ubuntu
myimg
倉庫[root@centos7-node1]# docker pull busybox:latest [root@centos7-node1 ~]# docker run --name b1 -it -d busybox /bin/sh / # mkdir /data/web/html -p / # echo "<h1>this is a test page @busyboxServer</h1>" > /data/web/html/index.html [root@centos7-node1 ~]# docker container commit b1 wanghui122725501/myimg:v0.1 #另起終端打包鏡像 [root@centos7-node1 ~]# docker images #查看鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE wanghui122725501/myimg v0.1 baf6ad6a846f About a minute ago 1.22MB [root@centos7-node1 ~]# docker run --name mybbox1 -it wanghui122725501/myimg:v0.1 #運行容器 / # ls /data/web/html/ #此文件已被寫入文件系統 [root@centos7-node1 ~]# docker login #登錄dockerhub [root@centos7-node1 ~]# docker push wanghui122725501/myimg:v0.1 #推送鏡像 [root@centos7-node1 ~]# docker container commit -p -a "wanghui@yeecall.com" -c "CMD ['/bin/httpd -f -h /data/web/html']" b1 wanghui122725501/myimg:v0.2 #前臺運行httpd [root@centos7-node1 ~]# docker tag wanghui122725501/myimg:v0.2 wanghui122725501/myimg:latest [root@centos7-node1 ~]# docker push wanghui122725501/myimg:v0.2 #鏡像推送 -----另起終端,進入b1容器 [root@centos7-node1 ~]# docker exec -it b1 sh / # /bin/httpd -f -h /data/web/html/ #執行httpd [root@centos7-node1 ~]# curl 172.17.0.5 #另起終端執行 <h1>this is a test page @busyboxServer</h1> [root@centos7-node1 ~]# docker commit -p -a "wanghui@yeecall.com" -c 'CMD ["/bin/sh","-c","/bin/httpd -f -h /data/web/html"]' b1 wanghui122725501/myimg:v0.4 [root@centos7-node1 ~]# docker run --name mytinyweb2 -d wanghui122725501/myimg:v0.4