Linux 學習筆記(四):Docker

預期學習目標linux

  • Docker基本概念
  • 配置本地Docker環境
  • 容器的生命週期與配置
  • 端口映射和容器連接
  • 利用volume保存持久化容器數據
  • 檢查容器日誌
  • 監控容器內部進程狀態
  • 構建容器鏡像
  • 鏡像管理

基本信息

安裝預卸載

Windows 環境須要運行 Microsoft Hyper-V

安裝完成後使用 Docker Hub 帳號登陸,須要注意的是,使用 Docker ID 登陸而不是郵箱登陸,否則 run 的時候會出錯git

# 卸載舊版本
rpm -qa | grep docker | xargs yum -y remove

#安裝依賴
yum install -y yum-utils device-mapper-persistent-data lvm2

# 配置穩定版倉庫
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安裝最新版本的Docker CE和containerd
yum install docker-ce docker-ce-cli containerd.io

# 啓動
systemctl start docker

# 設置開啓自啓
systemctl enable docker

# 運行 hello-world 驗證安裝結果
docker run hello-world

基本配置

編排多個容器

# 建立多容器套件並在後臺運行
docker-compose up -d

# 銷燬多容器套件
docker-compose down

# 列出全部容器ID
docker ps -aq

# 中止全部的容器
docker stop $(docker ps -aq)

# 刪除全部中止的容器
docker container prune

# 刪除全部不使用的鏡像
docker image prune

編排文件格式

# 指定 Dockerfile 所在文件夾的路徑
build

# 數據卷所掛載路徑設置
volumes

# 指定設備映射關係
devices

# 配置容器鏈接的網絡
networks

# 自定義 DNS 服務器
dns

# 掛載一個 tmpfs 文件系統到容器
tmpfs

# 設置環境變量
environment

# 暴露端口信息 (使用宿主端口)
ports

# 暴露端口,但不映射到宿主機,只被鏈接的服務訪問 (僅能夠指定內部端口爲參數)
expose

使用遠程鏈接

Docker 使用客戶端-服務器 (C/S) 架構模式。Docker 系統有兩個程序:docker 服務端和 docker 客戶端。其中 docker 服務端是一個服務進程,管理着全部的容器。docker 客戶端則扮演着 docker 服務端的遠程控制器,能夠用來控制 docker 的服務端進程。Docker 客戶端會與 Docker 守護進程進行通訊。Docker 守護進程會處理複雜繁重的任務,例如創建、運行、發佈你的 Docker 容器。Docker 客戶端和守護進程能夠運行在同一個系統上,固然你也可使用 Docker 客戶端去鏈接一個遠程的 Docker 守護進程。Docker 客戶端和守護進程之間經過 socket 或者 RESTful API 進行通訊。
  • 配置遠程訪問(不安全)
# 編輯或建立文件
vim /etc/docker/daemon.json

# 配置
{
  "hosts":[
    "unix:///var/run/docker.sock",
    "tcp://0.0.0.0:2375"
  ]
}

# 從新讀取配置文件,
systemctl daemon-reload

# 從新啓動服務
systemctl restart docker

# 使用測試機器進行鏈接測試
docker -H tcp://35.24.113.168:2375 info
# 編輯文件
vim /usr/lib/systemd/system/docker.service

# 配置遠程訪問
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

# 從新讀取配置文件,
systemctl daemon-reload

# 從新啓動服務
systemctl restart docker

# 使用測試機器進行鏈接測試
docker -H tcp://35.24.113.168:2375 info

基本命令

# 查看docker的運行狀況
docker ps

# 查看docker的信息
docker info

# 進入終端 : [-t | --tty] 交互式鏈接 : [-i | --interactive]
docker exec -it container_name /bin/bash

# 查看容器IP和容器ID
cat /etc/hosts

# 幫助命令
docker --help

# 列出全部容器
docker container ls -all

# 列出全部鏡像
docker image ls -all

# 查看版本
docker --version

# 查容器編排工具的版本
docker-compose -v

# 拉取一個hello-world鏡像,並建立容器並運行
docker run hello-world

錯誤排查

# 查看端口
netstat -ano | findstr 2375

# 探測端口
telnet 127.0.0.1 2375

# 查看端口是否被過濾
netsh interface ipv4 show excludedportrange protocol=tcp

# 禁用Hyper-V並從新啓動
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

# 保留 2375 端口
netsh int ipv4 add excludedportrange protocol=tcp startport=2375 numberofports=1

# 啓用Hyper-V並從新啓動
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

相關文章

Linux 學習筆記(一):內網穿透
Linux 學習筆記(二):搭建我的Git服務器
Linux 學習筆記(三):Ubuntu 操做系統
Linux 學習筆記(四):Docker
Linux 學習筆記(五):Redis
Linux 學習筆記(六):Linuxgithub

相關文章
相關標籤/搜索