查看系統是否已安裝docker
rpm -qa|grep docker
安裝yum-utils
yum install yum-utils
設置阿里雲倉庫,速度快點
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum軟件包索引
yum makecache fast
安裝最新版本的 Docker Engine-Community 和 containerd
yum install docker-ce docker-ce-cli containerd.io
如果安裝指定版本,可以先列出並排序您存儲庫中可用的版本
yum list docker-ce --showduplicates | sort -r
安裝指定版本,例如
yum install docker-ce-19.03.12 docker-ce-cli-19.03.12 containerd.io
修改docker配置文件
mkdir /etc/docker vim /etc/docker/daemon.json
添加如下內容
{
"insecure-registries": ["registry.cn-shenzhen.aliyuncs.com" ],
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"graph": "/var/lib/docker",
"hosts": [
"tcp://0.0.0.0:2375",
"unix:///var/run/docker.sock"
],"log-driver": "json-file",
"log-opts": {
"labels": "production_status,geo",
"env": "os,customer",
"max-size": "10m",
"max-file": "10"
}
}
防火牆開啟端口2375
firewall-cmd --zone=public --add-port=2375/tcp --permanent firewall-cmd --reload
重新加載
systemctl daemon-reload
設置開機自啟
sed -i 's/ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ --containerd=\/run\/containerd\/containerd.sock/ExecStart=\/usr\/bin\/dockerd/g' /usr/lib/systemd/system/docker.service
systemctl enable docker
啟動docker服務
systemctl start docker
關閉docker服務
systemctl stop docker
查看啟動狀態
systemctl status docker
Docker 一些命令
列出容器
docker ps
列出名稱前面是eureka的容器
docker ps --filter "name=eureka*"
獲取容器的日志
查看指定時間后的日志,只顯示最后100行:
docker logs -f -t --since="2022-02-01" --tail=100 CONTAINER_ID
查看最近30分鍾的日志:
docker logs --since 30m CONTAINER_ID
查看某時間段日志:
docker logs -t --since="2022-02-01T14:00:00" --until "2022-02-01T18:00:00" CONTAINER_ID
參數說明:
-f, --follow 跟蹤實時日志
--since string 顯示自某個timestamp之后的日志,或相對時間,如42m(即42分鍾)
--tail string 從日志末尾顯示多少行日志, 默認是all
-t, --timestamps 顯示時間戳
--until string 顯示自某個timestamp之前的日志,或相對時間,如42m(即42分鍾)
獲取容器的日志並形成文件
docker logs CONTAINER_ID | cat $1 > /opt/1.log
列出本地鏡像
docker images
Docker Swarm集群配置
Docker Swarm 是 Docker 的集群管理工具。
Swarm將不同的docker容器集成為管理節點-工作節點的集群模式,建立聯系的同時也可以分配計算資源,實現以docker容器為單元的並行任務。
初始化主節點IP,下面IP根據實際填寫
docker swarm init --advertise-addr 172.16.21.2
提示如下:
Swarm initialized: current node (8azm131yfktebn614qz52pog0) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-clddfohcl2iz236biiyiu6pufe6xmuzt3qfun1vdw1zweme120-lin75iwfgwar73hhfifsirnpc 172.16.21.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
備注:如果要加入集群,可按上面命令docker swarm join……執行
運行下面命令,如果看到結果有一行swarm:active,說明swarm已被激活
docker info
查詢節點情況,第一列的ID值會為上面的 8azm131yfktebn614qz52pog0
docker node ls
docker 提供多種網絡模式,可以根據需求來使用。
例如在一台主機(host)或者同一個docker engine上面運行continer,就可以選擇bridge網絡模式;
在多台host上來運行多個container來協同工作,overlay模式就是我們的首選。
docker network create --driver overlay app_net
節點打標簽,最后的值對應上面的節點ID值
docker node update --label-add role=gateway 8azm131yfktebn614qz52pog0
Docker Stack
基於Docker Swarm,在Compose(.yml)聲明文件中定義應用,然后通過docker stack deploy命令完成部署和管理。
列出服務
docker service ls
列出現有堆棧
docker stack ls
刪除堆棧
docker stack rm
部署新的堆棧或更新現有堆棧
docker stack deploy [OPTIONS] STACK
參數說明:
--bundle-file 分布式應用程序包文件的路徑
--compose-file, -c Compose文件的路徑
--with-registry-auth 不加則默認false,將注冊表身份驗證詳細信息發送給Swarm代理