文章目錄
- 前言
- 一、docker 安裝
- docker 組態檔詳解
- 二、常用 docker 命令
- 1、docker image 命令
- 2、docker run 命令
- 3、常用命令
- 三、docker 網路
- 1、docker 修改默認網段
- 2、不同宿主機下 docker 互通
- 四、docker 資料目錄遷移
前言
官方檔案:https://docs.docker.com
阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
一、docker 安裝
- 關閉防火墻及selinux
systemctl stop firewalld
systemctl disable firewalld
sed -ri /^SELINUX=/cSELINUX=disabled /etc/selinux/config
setenforce 0
- remove掉舊docker包
yum list installed | grep docker
yum remove -y docker*
- 配置阿里云docker源并安裝
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 配置yum源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce
# 測驗
docker version # 顯示docker版本及基礎資訊(client端&server端)
docker info
- 配置docker組態檔(按需)
cat /etc/docker/daemon.json
{
"bip": "172.100.100.1/24", # 自定義docker ip
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"], # 阿里云鏡像加速器
"insecure-registries": ["123.56.**.***:8088"], # docker harbor
"log-opts": {"max-size":"100m", "max-file":"10"} # 日志檔案保留10份,每個100m
}
docker 組態檔詳解
docker-daemon.json各配置詳解
{
“api-cors-header”:"", ——————在引擎API中設定CORS標頭
“authorization-plugins”:[], ——————要加載的授權插件
“bridge”:"", ————將容器附加到網橋
“cgroup-parent”:"", ——————為所有容器設定父cgroup
“cluster-store”:"", ——————分布式存盤后端的URL
“cluster-store-opts”:{}, ————————設定集群存盤選項(默認map [])
“cluster-advertise”:"", ————————要通告的地址或介面名稱
“debug”: true, ————————啟用除錯模式,啟用后,可以看到很多的啟動資訊,默認false
“default-gateway”:"", ——————容器默認網關IPv4地址
“default-gateway-v6”:"", ——————容器默認網關IPv6地址
“default-runtime”:“runc”, ————————容器的默認OCI運行時(默認為“ runc”)
“default-ulimits”:{}, ——————容器的默認ulimit(默認[])
“dns”: [“192.168.1.1”], ——————設定容器DNS的地址,在容器的 /etc/resolv.conf檔案中可查看,
“dns-opts”: [], ————————容器 /etc/resolv.conf 檔案,其他設定
“dns-search”: [], ————————設定容器的搜索域,當設定搜索域為 .example.com 時,在搜索一個名為 host 的 主機時,DNS不僅搜索host,還會搜
索host.example.com , 注意:如果不設定, Docker 會默認用主機上的 /etc/resolv.conf 來配置容器,
“exec-opts”: [], ————————運行時執行選項
“exec-root”:"", ————————執行狀態檔案的根目錄(默認為’/var/run/docker‘)
“fixed-cidr”:"", ————————固定IP的IPv4子網
“fixed-cidr-v6”:"", ————————固定IP的IPv6子網
“data-root”:"/var/lib/docker", ————-Docker運行時使用的根路徑,默認/var/lib/docker
“group”: “”, ——————UNIX套接字的組(默認為“docker”)
“hosts”: [], ——————設定容器hosts
“icc”: false, ——————啟用容器間通信(默認為true)
“ip”:“0.0.0.0”, ————————系結容器埠時的默認IP(默認0.0.0.0)
“iptables”: false, ———————啟用iptables規則添加(默認為true)
“ipv6”: false, ——————啟用IPv6網路
“ip-forward”: false, ————————默認true, 啟用 net.ipv4.ip_forward ,進入容器后使用 sysctl -a | grepnet.ipv4.ip_forward 查看
“ip-masq”:false, ——————啟用IP偽裝(默認為true)
“labels”:[“nodeName=node-121”], ————————docker主機的標簽,很實用的功能,例如定義:–label nodeName=host-121
“live-restore”: true, ——————在容器仍在運行時啟用docker的實時還原
“log-driver”:"", ——————容器日志的默認驅動程式(默認為“ json-file”)
“log-level”:"", ——————設定日志記錄級別(“除錯”,“資訊”,“警告”,“錯誤”,“致命”)(默認為“資訊”)
“max-concurrent-downloads”:3, ——————設定每個請求的最大并發下載量(默認為3)
“max-concurrent-uploads”:5, ——————設定每次推送的最大同時上傳數(默認為5)
“mtu”: 0, ——————設定容器網路MTU
“oom-score-adjust”:-500, ——————設定守護程式的oom_score_adj(默認值為-500)
“pidfile”: “”, ——————Docker守護行程的PID檔案
“raw-logs”: false, ——————全時間戳機制
“selinux-enabled”: false, ——————默認 false,啟用selinux支持
“storage-driver”:"", ——————要使用的存盤驅動程式
“swarm-default-advertise-addr”:"", ——————設定默認地址或群集廣告地址的介面
“tls”: true, ————————默認 false, 啟動TLS認證開關
“tlscacert”: “”, ——————默認 ~/.docker/ca.pem,通過CA認證過的的certificate檔案路徑
“tlscert”: “”, ————————默認 ~/.docker/cert.pem ,TLS的certificate檔案路徑
“tlskey”: “”, ————————默認~/.docker/key.pem,TLS的key檔案路徑
“tlsverify”: true, ————————默認false,使用TLS并做后臺行程與客戶端通訊的驗證
“userland-proxy”:false, ——————使用userland代理進行環回流量(默認為true)
“userns-remap”:"", ————————用戶名稱空間的用戶/組設定
“bip”:“192.168.88.0/22”, ——————————指定網橋IP
“registry-mirrors”: [“https://192.498.89.232:89”], ————————設定鏡像加速
“insecure-registries”: [“120.123.122.123:12312”], ———————設定私有倉庫地址可以設為http
“storage-opts”: [
“overlay2.override_kernel_check=true”,
“overlay2.size=15G”
], ————————存盤驅動程式選項
“log-opts”: {
“max-file”: “3”,
“max-size”: “10m”,
}, ————————容器默認日志驅動程式選項
“iptables”: false ————————啟用iptables規則添加(默認為true)
}
二、常用 docker 命令
1、docker image 命令
docker image [COMMAND]
指令 描述
ls 列出鏡像
build 構建鏡像來自Dockerfile
history 查看鏡像歷史
inspect 顯示一個或多個鏡像詳細資訊
pull 從鏡像倉庫拉取鏡像
push 推送一個鏡像到鏡像倉庫
rm 移除一個或多個鏡像
prune 移除沒有被標記或者沒有被任何容器參考的鏡像
tag 創建一個參考源鏡像標記目標鏡像
save 保存一個或多個鏡像到一個tar歸檔檔案
load 加載鏡像來自tar歸檔或標準輸入
2、docker run 命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
選項 描述
-i, –interactive 互動式
-t, –tty 分配一個偽終端
-d, –detach 運行容器到后臺
-e, –env 設定環境變數
-p, –publish list 埠映射,多個埠使用多個-p 格式為:主機(宿主)埠:容器埠
-P, –publish-all 發布容器所有EXPOSE的埠到宿主機隨機埠
--name string 指定容器名稱
-h, –hostname 設定容器主機名
--ip string 指定容器IP,只能用于自定義網路
--network 連接容器到一個網路
-v, –volume list 檔案系統掛載,多個掛載多個-v 格式為:主機目錄:容器目錄
--mount mount(新方式) 將檔案系統附加到容器
--restart string 容器退出時重啟策略,默認no,可選值:[always|on-failure]
-m,–memory 容器可以使用的最大記憶體量
–memory-swap 允許交換到磁盤的記憶體量
–memory-swappiness=<0-100> 容器使用SWAP磁區交換的百分比(0-100,默認為-1)
–oom-kill-disable 禁用OOM Killer
--cpus 可以使用的CPU數量
–cpuset-cpus 限制容器使用特定的CPU核心,如(0-3, 0,1)
–cpu-shares CPU共享(相對權重)
3、常用命令
docker run -it daocloud.io/library/centos:latest /bin/bash # 運行一個容器
docker creat -it --name "LLLLLLLLLLLLLLLLL" daocloud.io/library/centos:latest /bin/bash # 創建一個容器
docker images -q # 查看鏡像ID
docker ps # 查看運行狀態容器
docker ps -a # 查看所有容器
docker ps -q # 查找已運行的docker容器的ID
docker ps -a -q # 查找所有的docker容器的ID
斷開容器(關閉容器):exit
斷開容器(不關閉容器):ctrl+p+q
docker start 容器名字 # 運行容器
docker stop 容器名字 # 停止容器
docker restart 容器名字 # 重啟容器
docker exec -it 容器名字 /bin/bash # 連接已運行的容器
docker attach 容器名字
docker exec 容器名字 [shell cmd] # 無互動執行命令
eg:docker exec 容器名字 touch /a
docker rmi daocloud.io/library/centos:latest [--force] # 洗掉鏡像
docker rm 容器名字 [-f] # 洗掉容器
容器打包成tar包&還原鏡像:
docker export personal_docker >personal_docker.tar
docker import personal_docker.tar personal_docker:v1
鏡像打包成tar包&還原鏡像
docker save -o test.tar personal_docker:v1
docker load < test.tar
三、docker 網路
1、docker 修改默認網段
docker默認網段為172.17段,可修改為其它地址段
systemctl stop docker # 停止docker服務
ip link set dev docker0 down # 關閉docker0網卡
brctl delbr docker0 # 洗掉docker0網橋
brctl addbr docker0 # 新增docker0網橋
ip addr add 172.100.100.1/24 dev docker0 # 配置docker0網橋ip段
ip link set dev docker0 up # 啟動docker0網卡
vim /etc/docker/daemon.json # 修改docker組態檔
{
"bip":"172.100.100.1/24"
}
systemctl start docker # 啟動docker服務
2、不同宿主機下 docker 互通

1. 更改容器的默認ip段,Docker默認的內部ip為172.17.42.0網段,所以必須要修改其中一臺的默認網段以免ip沖突
docker 128上:
vim /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS= --bip=172.18.42.1/16
reboot
2. 在宿主機添加路由(網路為對方容器網段 網關為對方宿主機ip)
docker 130上:
route add -net 172.18.0.0/16 gw 192.168.18.128
docker 128上:
route add -net 172.17.0.0/16 gw 192.168.18.130
四、docker 資料目錄遷移
??docker默認存盤目錄為/var/lib/docker,正常我們的主機在初始化的時候會創建資料目錄,然后使用lvm掛在到資料目錄下,/var磁區一般空間比較小,隨著docker的運行時間增加,/var磁區空間不足以支撐docker資料存盤,所以要遷移存盤目錄,
- 查看docker資源占用
docker system df
- 清理磁盤空間,包含無用容器、資料卷、網路、無tag鏡像等
docker system prune
docker system prune -a # 會清理沒有運行容器的鏡像
- 遷移目錄
1.停止docker服務
systemctl stop docker
2.創建新的docker目錄
mkdir -p /data/docker/lib
3.拷貝源資料到新目錄
cp -r /var/lib/docker /data/docker/lib
4.配置system檔案,指定資料目錄
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/docker
5.重新加載system
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
6.確認docker資訊
docker info |grep 'Root Dir'
執行docker ps 、docker images 命令測驗,無問題后洗掉/var/lib/docker
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291746.html
標籤:其他
上一篇:運維實操——kubernetes(十一)調度nodeName、nodeSelector、親和性、污點、容忍、洗掉節點
下一篇:基于SSM的健身俱樂部管理系統
