Docker容器的管理
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Docker容器的管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            創建容器的工作原理: 當利用docker run來創建容器時,Docker在后臺運行的標準操作包括:檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載,利用鏡像創建并啟動一個容器分配一個文件系統,并在只讀的鏡像層外面掛在一層可讀寫層;從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去;從地址池配置一個ip地址給容器;執行用戶指定的應用程序,執行完畢后容器被終止。 注:容器不是一個虛擬機,因為他就是一個進程,如果我們退出,這個進程就退出了。 創建容器的常用選項: 指令 描述  -i, --interactive? ? ? ? ? ? ? ? 交互式 -t, --tty? ? ? ? ? ? ? ? ? ? ? ? 分配一個偽終端 -d, --detach? ? ? ? ? ? ? ? ? ? ?運行容器到后臺 -a, --attach list? ? ? ? ? ? ? ? 附加到運行的容器 --dns list? ? ? ? ? ? ? ? ? ? ? ?設置DNS服務器 -e, --env list? ? ? ? ? ? ? ? ? ?設置環境變量 --env-file list? ? ? ? ? ? ? ? ? 從文件讀取環境變量 -p, --publish list? ? ? ? ? ? ? ?發布容器端口到主機 -P, --publish-all? ? ? ? ? ? ? ? 發布容器所有EXPOSE的端口到宿主機隨機端口 -h, --hostname string? ? ? ? ? ? 設置容器主機名 --ip string? ? ? ? ? ? ? ? ? ? ? 指定容器IP,只能用于自定義網絡 --link list? ? ? ? ? ? ? ? ? ? ? 添加連接到另一個容器 --network? ? ? ? ? ? ? ? ? ? ? ? 連接容器到一個網絡 --mount mount? ? ? ? ? ? ? ? ? ? 掛載宿主機分區到容器 -v, --volume list? ? ? ? ? ? ? ? 掛載宿主機目錄到容器 --restart string? ? ? ? ? ? ? ? ?容器退出時重啟策略,默認no[always|on-failure] --add-host list? ? ? ? ? ? ? ? ? 添加其他主機到容器中/etc/hosts  創建一個bs容器,并在后臺運行。  [root@linux-docker01 ~]# docker container run -itd --name bs busybox 0490de553573ae9d30ca68a15a901e2b8c150528a11248c832ac36e42d5a41b4  進入到bs容器里面  [root@linux-docker01 ~]# docker container attach bs #如果退出不終止容器的話,按Ctrl+p+q即可 / #  創建bs1容器并傳入a變量  [root@linux-docker01 ~]# docker container run -itd -e a=123 --name bs1 busybox d46fd062fd659f712b8128aa4706389317d32ed64b885b38efd8a068739bf655 [root@linux-docker01 ~]# docker exec -it bs1 sh / # echo $a 123  運行nginx01容器,并分配容器端口為80,與宿主機8080端口作為映射。  [root@linux-docker01 ~]# docker container run -itd -p 8080:80 --name nginx01 nginx 8b90babd6f7a2042bb1121ed11b048bbf9f382be31426f51f94aae8445b8c844 [root@linux-docker01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b90babd6f7a nginx "nginx -g 'daemon of…" 18 seconds ago Up 17 seconds 0.0.0.0:8080->80/tcp nginx01  資源限制命令: 指令 描述  -m,--memory? ? ? ? ? ? ? ? ? 容器可以使用的最大內存量 --memory-swap? ? ? ? ? ? ? ? ?允許交換到磁盤的內存量 --memory-swappiness=<0-100>? ?容器使用SWAP分區交換的百分比(0-100,默認為-1) --memory-reservation? ? ? ? ? 內存軟限制,Docker檢測主機容器爭用或內存不足時所激活的軟限制,使用此選項,值必須設置低于—memory,以使其優先 --oom-kill-disable? ? ? ? ? ? 當宿主機內存不足時,內核會殺死容器中的進程。建議設置了-memory選項再禁用OOM。如果沒有設置,主機可能會耗盡內存 --cpus? ? ? ? ? ? ? ? ? ? ? ? 限制容器可以使用多少可用的CPU資源 --cpuset-cpus? ? ? ? ? ? ? ? ?限制容器可以使用特定的CPU --cpu-shares? ? ? ? ? ? ? ? ? 此值設置為大于或小于默認1024值,以增加或減少容器的權重,并使其可以訪問主機CPU周期的更大或更小比例  管理容器的常用選項: 指令 描述  ls? ? ? ? ? ? ? ? ? ? ? ? ? ? 列出容器 inspect? ? ? ? ? ? ? ? ? ? ? ?顯示一個或多個容器詳細信息 attach? ? ? ? ? ? ? ? ? ? ? ? 附加本地標準輸入,輸出和錯誤到一個運行的容器 exec? ? ? ? ? ? ? ? ? ? ? ? ? 在運行容器中執行命令 commit? ? ? ? ? ? ? ? ? ? ? ? 創建一個新鏡像來自一個容器 cp? ? ? ? ? ? ? ? ? ? ? ? ? ? 拷貝文件/文件夾到一個容器 logs? ? ? ? ? ? ? ? ? ? ? ? ? 獲取一個容器日志 port? ? ? ? ? ? ? ? ? ? ? ? ? 列出或指定容器端口映射 stats? ? ? ? ? ? ? ? ? ? ? ? ?顯示容器資源使用統計 top? ? ? ? ? ? ? ? ? ? ? ? ? ?顯示一個容器運行的進程 update? ? ? ? ? ? ? ? ? ? ? ? 更新一個或多個容器配置 stop/start? ? ? ? ? ? ? ? ? ? 停止/啟動一個或多個容器 rm? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除一個或多個容器  查看當前運行的容器  [root@linux-docker01 ~]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b90babd6f7a nginx "nginx -g 'daemon of…" 3 days ago Up 3 days 0.0.0.0:8080->80/tcp nginx01 d46fd062fd65 busybox "sh" 3 days ago Up 3 days bs1 0490de553573 busybox "sh" 3 days ago Up 3 days bs  查看容器的詳細信息  [root@linux-docker01 ~]# docker container inspect 0490de553573  使用attach命令進入容器時會卡住,是因為將當前linux標準的輸入輸出附加到nginx容器中,那么nginx容器中是運行有一個進程的,可以用top命令查看到nginx -g daemon off是運行在前臺實時運行了。這是用attach命令附加標準的輸入輸出就會造成進程的堵塞,附加不進去,也一直就會等待。  [root@linux-docker01 ~]# docker attach nginx01 [root@linux-docker01 ~]# docker top nginx01 UID PID PPID C STIME TTY TIME CMD root 12421 12409 0 14:55 pts/0 00:00:00 nginx: master process nginx -g daemon off; 101 12445 12421 0 14:55 pts/0 00:00:00 nginx: worker process  可以使用exec進入容器  [root@linux-docker01 ~]# docker exec -it nginx01 bash  拷貝宿主機的文件到容器中  [root@linux-docker01 ~]# docker container cp anaconda-ks.cfg bs1:/root [root@linux-docker01 ~]# docker container exec bs1 ls /root/ anaconda-ks.cfg  查看容器的日志  [root@linux-docker01 ~]# docker logs 8b90babd6f7a  查看容器的端口  [root@linux-docker01 ~]# docker container port nginx01 80/tcp -> 0.0.0.0:8080  查看容器資源的實時利用率  [root@linux-docker01 ~]# docker stats nginx01 CONTAINER ID????????NAME????????????????CPU %???????????????MEM USAGE / LIMIT?????MEM %???????????????NET I/O?????????????BLOCK I/O???????????PIDS 8b90babd6f7a????????nginx01?????????????0.00%???????????????1.348MiB / 3.685GiB???0.04%???????????????648B / 0B???????????0B / 0B?????????????2 CONTAINER ID????????NAME????????????????CPU %???????????????MEM USAGE / LIMIT?????MEM %???????????????NET I/O?????????????BLOCK I/O???????????PIDS 8b90babd6f7a????????nginx01?????????????0.00%???????????????1.348MiB / 3.685GiB???0.04%???????????????648B / 0B???????????0B / 0B?????????????2 CONTAINER ID????????NAME????????????????CPU %???????????????MEM USAGE / LIMIT?????MEM %???????????????NET I/O?????????????BLOCK I/O???????????PIDS 8b90babd6f7a????????nginx01?????????????0.00%???????????????1.348MiB / 3.685GiB???0.04%???????????????648B / 0B???????????0B / 0B?????????????2 CONTAINER ID????????NAME????????????????CPU %???????????????MEM USAGE / LIMIT?????MEM %???????????????NET I/O?????????????BLOCK I/O???????????PIDS 8b90babd6f7a????????nginx01?????????????0.00%???????????????1.348MiB / 3.685GiB???0.04%???????????????648B / 0B???????????0B / 0B?????????????2  刪除所有的容器  [root@linux-docker01 ~]# docker rm -f $(docker ps -q -a)  
 
                        
                        
                        轉載于:https://www.cnblogs.com/xiaoliangxianshen/p/9231240.html
總結
以上是生活随笔為你收集整理的Docker容器的管理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Hadoop环境 IDE配置(在ecl
- 下一篇: There is no getter f
