第三章docker命令使用

Docker常用命令

#查看docker詳細信息
docker info
#查看版本
docker version
#查看當前docker所有鏡像
docker images
#搜索可用鏡像
docker search 鏡像名
#下載鏡像(alpine鏡像小,可用來測試)
docker pull 鏡像名
#創建容器不啓動
docker create 鏡像名
#在docker容器中運行hello world!
docker run centos echo "hello word"
#在容器中安裝ntpdate的程序
docker run centos yum install ntpdate
#命令獲得最後一個容器的id
docker ps -l
#查看所有的容器
docker ps -a
#容器裏啓動個shell環境,可以登錄進入操作
docker run -it centos /bin/bash
    -t表示打開一個終端的意思
    -i表示可以交互輸入
#-d表示在後臺啓動,以daemon方式啓動
docker run -d centos:v1
#容器因某種錯誤而停止運行能夠自動重啓
docker run -d --restart=always httpd
    --restart=always(無論容器因何種原因退出,包括正常退出,都立即重啓)
    --restart=on-failure:3(意思是如果啓動進程退出代碼非0,則重啓容器,最多重啓3次)
#提交保存剛修改的容器
docker commit ID new_name:tag
例如:docker  commit  ID  -a="XXX"  -m="XXX"  容器名:TAG
    -m="描述信息"
    -a="指定鏡像作者"

#更改鏡像名
docker tag ID new_iso
#關閉容器
docker stop ID\docker kill ID
#啓動某個容器
docker start ID
#重啓一個容器
docker restart ID
#刪除容器(-f強制刪除)
docker rm -f ID
#刪除鏡像
docker rmi images
#批量刪除所有容器
docker rm $(docker ps -aq)
#批量刪除已經停止的容器
docker rm $(docker ps --filter ststus=exited -q)或
docker rm -v $(docker ps -aq -f status=exited)
#Docker容器導成鏡像
docker export ID > cenos6.tar
#Docker導入鏡像
docker import centos.tar
#備份鏡像
docker save    -o 備份後鏡像的名字.tar    本地鏡像名
#導入鏡像
docker load -i 鏡像名.tar
#監控docker容器狀態
docker events
docker run -d -p 8888:80 -p 8022:22 centos:v2
    -p
指定容器啓動後docker上運行的端口映射及容器裏運行的端口,8888表示host本機的端口,第二個80表示docke容器內的端口。用戶默認訪問本機8888端口,自動映射到容器裏面的80端口
#查看映射的端口
docker port ID
#查看WEB應用程序日誌-f相當於tail -f
docker logs -f ID

切換進容器

docker attach 容器ID

docker exec -it 容器ID /bin/bash

attach與exec主要區別如下:
    attach直接進入容器啓動命令的終端,不會啓動新的進程
    exec則是在容器中打開新的終端,並且可以啓動新的進程
    如果想直接在終端中查看啓動命令的輸出,用attach;其他情況使用exec
    如果只是爲了查看啓動命令的輸出,可以使用dockerlogs命令-f類似於tail-f

#退出而不終止容器運行
[ctrl + P][ctrl + Q]


docker CPU限制
#限制容器使用CPU的百分比1000相當於CPU的1%
docker run --cpu-quota 1000
#安裝比例自動調節CPU使用率(多個容器適用)
docker run --cpu-shares 1000
#綁定容器運行在哪個CPU核上
docker run --cpuset-cpus 0,3

docker內存限制
#限制容器使用的內存或--memory(超過系統會自動強制kill掉)
docker run -m 100m
#設置內存+swap的使用限額
docker run -m 100m --memory-swap 0
#暫停或恢復容器(相當於快照)
docker pause/unpause ID

#設置容器使用CPU權重,不指定默認1024
docker -c或--cpu-shares
docker run -it -c 512 httpd
cat /sys/fs/cgroup/cpu/docker/dd21114479dcb2edb0d8c8b48dee553113acbcc9050aafded4dc5340c18434a9/cpu.shares
512
#設置block IO相對權重值默認500
docker run -it --blkio-weight xx httpd

docker限制bps和iops
    bps是byte per second,每秒讀寫的數據量
    iops是io per second,每秒IO的次數
可通過以下參數控制容器的bps和iops:
    --device-read-bps 限制讀某個設備的 bps
    --device-write-bps 限制寫某個設備的 bps
    --device-read-iops 限制讀某個設備的 iops
    --device-write-iops 限制寫某個設備的 iops

例如    docker run -it --device-write-bps /dev/sda:10M httpd
測試    dd if=/dev/zero of=/opt/test  bs=1M count=400 oflag=direct

namespace實現容器間資源的隔離
六種namespace分別對應六種資源:Mount、UTS、IPC、PID、Network、User
Mount namespace 讓容器看上去擁有整個文件系統
UTS namespace 讓容器有自己的hostname,默認器的hostname是它的短ID,可以通過-h或--hostname參數設置
    docker run -h test -it httpd
IPC namespace 讓容器擁有自己的共享內存和信號量(semaphore)來實現進程間通信,而不會與host和其他容器的IPC混在一起,容器擁有自己獨立的一套PID,這就是PID namespace提供的功能
Network namespace 讓容器擁有自己獨立的網卡、IP、路由等資源
User namespace 讓容器能夠管理自己的用戶,host不能看到容器中創建的用戶

126.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章