Docker 學習系列 1

1. Docker 容器學習

Docker依賴的Linux內核特性

1.Namespace 命名空間
2.Control groups (cgroups)控制組

1.Namespace命名空間

  • PID (Progress ID) 進程隔離
  • NET (Network) 管理網絡接口
  • IPC (InterProcess Communication) 管理跨進程通信的訪問
  • MNT (Mount) 管理掛載點
  • UTS (Unix Timessharing System) 隔離內核和版本標識

Docker 容器的能力

  • 文件系統隔離: 每個容器都有自己的root文件系統
  • 進程隔離: 每個容器都運行在自己的進程環境中
  • 網絡隔離: 容器間的虛擬網絡接口和IP地址都是分開的
  • 資源隔離和分組: 使用 cgroups將CPU和內存之類的資源獨立分配給每個Docker容器

Docker 安裝與配置

安裝前的檢測

1.內核版本

$uname -a

2.檢測 Device Mapper

$ls -l /sys/class/misc/device-mapper
Docker 安裝

安裝 Docker Engine-Community
使用 Docker 倉庫進行安裝在新主機上首次安裝 Docker Engine-Community 之前,需要設置 Docker 倉庫。之後,您可以從倉庫安裝和更新 Docker。

設置倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。

sudo yum install -y yum-utils device-mapper- persistent-data lvm2

設置穩定倉庫

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安裝 Docker Engine-Community
安裝最新版本的 Docker Engine-Community 和 containerd,或者轉到下一步安裝特定版本

$ sudo yum install docker-ce docker-ce-cli containerd.io

啓動 Docker

sudo systemctl start docker

通過運行 hello-world 映像來驗證是否正確安裝了 Docker Engine-Community

sudo docker run hello-world

##2.容器的基本操作
啓動容器

$docker run IMAGE [COMMAND] [ARG...]

run 在新容器中執行命令

啓動交互式容器

$docker run -i -t IMAGE /bin/bash
-i --interactive=true | false 默認是 false
-t --tty=true | false 默認是 false

查看容器

$docker ps [-a] [-l]
$docker inspect [name]

自定義容器名

$docker run --name=[容器名] -i -t

重新啓動停止的容器

$docker start [-i] [容器名]

刪除停止的容器

$docker rm [容器名]

##3.守護式容器
#####什麼是守護式容器

  • 能夠長期允許的容器
  • 沒有交互式的會話
  • 適合運行應用程序和服務

啓動守護式容器1

$docker run -i -t /bin/bash
Command+P Command+Q 組合鍵退出

啓動守護式容器2

$docker run -d 鏡像名 [COMMAND] [ARG...]

附加到運行中的容器

$docker attach [容器名]

查看容器日誌

$docker logs [-f] [-t] [--tail] 容器名
-f --follows=true | false 默認爲false #跟蹤變化
-t --timestamps=true | false 默認爲false #加上時間戳
--tail="all" #返回日誌結果的範圍

查看容器內的進程

$docker top [容器名]

在運行中的容器內啓動新進程

$docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]

停止守護式容器

$docker stop 容器名 #發送信號給容器等待容器的停止
$docker kill 容器名 #直接將容器停止

查看和刪除鏡像

列出鏡像

$docker images [OPTIONS] [REPOSITORY]
-a, --all=fasle #顯示所有鏡像 默認不顯示中間層的鏡像
-f, --filter=[] #顯示的過濾條件
--no-trunc=false #指定不使用截斷式顯示 唯一ID
-q, --quiet=false #只顯示鏡像的唯一ID
REPOSITORY   #鏡像所屬的倉庫地址  
TAG         #標籤名稱   
IMAGE ID   #鏡像的唯一ID 默認是截取的   
CREATED   #創建時間   
SIZE    #鏡像大小

查看鏡像的詳細信息

$docker inspect [OPTIONS] CONTAINER | IMAGE | [CONTAINER|IMAGE...]
-f, --format=""

刪除鏡像

$docker rmi[OPTIONS] IMAGE [IMAGES...]
-f, --force=false #強制刪除
--no-prune=false #保留鏡像中被打標籤的父鏡像

獲取和推送鏡像

查找鏡像

[Docker Hub](https://register.hub.docker.com)

$docker search [OPTIONS] TERM
--automated=false #是顯示自動化構建的docker
--no-trunc=false
-s, --stars=0 #顯示結果的最低星級

拉取鏡像

$docker pull [OPTION] NAME [:TAG]
-a, --all-tags=false #下載所有標籤的鏡像

使用 --registry-mirror 選項
1.修改: /etc/default/docker
2.添加: DOCKER_OPTS="–registry-mirror=http://MIRROR-ADDR"

推送鏡像

$docker push [IMAGE]

構建鏡像

  • 保存對容器的修改, 並再次使用
  • 自定義鏡像的能力
  • 以軟件的形式打包並分發服務及運行環境
$docker commit #通過容器構建
$docker build #通過 Dockerfile文件構建
$docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a, --author="" #作者
-m, --message="" #提交信息
-p, --pause=true #不暫停正在提交的容器

使用Dockerfile構建鏡像

  1. 創建 Dockerfile
  2. 使用$docker build 命令
$docker build [OPTIONS] PATH | URL | 
--force-rm=false
--no-cache=false
--pull=false
-q, --quiet=false
--rm=true
-t, --tag=""

##Docker的 C/S模式
連接方式

  • unix:///var/run/docker.sock
  • tcp://host:port
  • fd://socketfd

Docker守護進程的配置和操作

  • 查看守護進程
$ps -ef | grep docker
$sudo status docker

使用service命令管理

$sudo service docker start
$sudo service docker stop
$sudo service docker restart

Docker的啓動選項

運行相關的

	-D, --debug=false
	-e, --exce-driver="native"
	-g, --graph="/var/lib/docker"
	--icc=true
	-l,--log-level="info"
	--label=[]
	-p,--pidfile="/var/run/docker.pid"

Docker服務器連接相關

-G, --group="docker" #用戶組
-H,--host=[]  #主機列表
--tls=false #安全連接相關選項
--tlscacert="/home/sven/.docker/ca.pem"
--tlscert="/home/sven/.docker/cert.pem"
--tlskey="/home/sven/.docker/key.pem"
--tlsverify=false

RemoteAPI相關

--api-enable-cors=false

存儲驅動相關

-s, storage-driver=""
--selinux-enabled=fasle
--storage-opt=[]

Registry相關

--insecure-registry=[]
--reigstry-mirror=[]

網絡相關的配置

-b,--bridge=""
--bip=""
--fixed-cidr=""
--fixed-cidr-v6=""
--dns=[]
--dns-serach=[]
--ip=0.0.0.0
--ip-forward=true
--ip-masq=true
--iptables=true
--ipv6=false
--mtu=0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章