Docker基礎知識

xjwtt發表於2018-08-08

Docker 基本命名學習

檢視容器的 ip 等資訊

docker inspect Id/name  
#檢視容器的IP  
docker inspect mysql_3306 | grep IPAddress 
複製程式碼

將使用者加入 docker

sudo groupadd docker  
#將使用者加入該 group 內。然後退出並重新登入就生效啦。  
  
sudo gpasswd -a ${USER} docker  
#重啟 docker 服務  
  
  
#切換當前會話到新 group 或者重啟 X 會話  
  
newgrp - docker
複製程式碼

修改容器內的時區

Alpine

進入容器 然後執行

apk --no-cache add tzdata

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 echo "Asia/Shanghai" > /etc/timezone
複製程式碼

Ubuntu

echo "Asia/Shanghai" > /etc/timezone  

dpkg-reconfigure -f noninteractive tzdata  
複製程式碼

Centos

echo "Asia/shanghai" > /etc/timezone
複製程式碼

docekr log

--log-opt max-size=[0-9+][k|m|g] #檔案的大小
--log-opt max-file=[0-9+] #檔案數量
複製程式碼

docker 備份遷移

儲存映象(image)和載入映象

# 儲存格式 docker save xxx(image) > xxx.tar
docker save docker.iretailer.net/javadr:latest  > javadr.tar
# 載入映象格式 docker load < xxx.tar
docker load < javadr.tar
複製程式碼

儲存一個容器

#docker export [-o|--output[=""]] CONTATINER
docker export iretailer_v01 > iretailer.tar
#載入  docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]
docker import 
複製程式碼

docker空間使用分析與清理

典型問題場景

使用者發現Docker宿主機的磁碟空間使用率非常高。通過du逐層分析。

[root@SHDCTCAPPQA03 home]# du -h --max-depth=1|sort
5.8M    ./user
86G     .
86G     ./iretailer 
複製程式碼

分析Docker空間分佈

[root@SHDCTCAPPQA03 home]# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              5                   3                   608.7MB             364MB (59%)
Containers          3                   3                   336.4MB             0B (0%)
Local Volumes       3                   0                   0B                  0B
Build Cache                                                 0B                  0B
複製程式碼

可以通過 docker system df -v 檢視更詳細的資訊

[root@SHDCTCAPPQA03 home]# docker system df -v
Images space usage:

REPOSITORY                    TAG                 IMAGE ID            CREATED ago         SIZE                SHARED SIZE         UNIQUE SiZE         CONTAINERS
javadr                        latest              521768d33a7f        4 months ago ago    161.9MB             107.8MB             54.1MB              1
mysql                         5.5                 87ce9047ca62        4 months ago ago    256.2MB             256.2MB             264B                1
hub.c.163.com/library/mysql   5.5                 157f9c7bf6c6        14 months ago ago   256.2MB             256.2MB             0B                  0
java                          8-jre-alpine        fdc893b19a14        16 months ago ago   107.8MB             107.8MB             0B                  0
cloudwattfr/ntpserver         latest              779ba01899da        2 years ago ago     190.6MB             0B                  190.6MB             1

Containers space usage:

CONTAINER ID        IMAGE                          COMMAND                  LOCAL VOLUMES       SIZE                CREATED ago         STATUS              NAMES
b431798d9a5d        javadr:latest                  "java -jar app.jar"      0                   336MB               3 months ago ago    Up 4 weeks          v01_iretailer
9b833c41381e        mysql:5.5                      "docker-entrypoint.s…"   0                   53.8kB              3 months ago ago    Up 7 weeks          mysql_iretailer
1a69840b8ca6        cloudwattfr/ntpserver:latest   "/usr/sbin/ntpd -n"      0                   0B                  3 months ago ago    Up 7 weeks          ntp-server

Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
367830190cac5b8b3c6ffef9afe653fa674b326bc278bbd293823db06da3ed89   0                   0B
4561f38abdf533fbb1e964fdf69d51cb7d847a497d5dd57abce23c2beab8a9fa   0                   0B
9da07a60d5e0ff93196c4192c3344fb5947215e7e18a27b45538f111f80ed45c   0                   0B

Build cache usage: 0B

複製程式碼

空間清理

docker system prune 自動空間清理

[root@SHDCTCAPPQA03 home]# docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
  -a, --all             Remove all unused images not just dangling ones
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes
複製程式碼

手工清理

# 刪除所有未被任何容器關聯引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)
複製程式碼