ref: The Doocker Book
Ch 2 安裝Docker
容器是直接運行操作系統(tǒng)內(nèi)核之上的用戶空間酱塔。
Docker核心組件:
- Docker客戶端、服務器端危虱,也成為Docker引擎羊娃;
- Docker鏡像;
- Registry埃跷;
- Docker容器蕊玷。
Docker用Registry來保存用戶構(gòu)建的鏡像。
Registry分為:1. 公共弥雹;2. 私有垃帅。
Mac OS X Docker安裝說明:
ref: https://docs.docker.com/docker-for-mac/
按照Docker官網(wǎng)安裝Docker.app后需要設置PATH環(huán)境變量否則無法找到
docker
命令;
設置方法:
vim ~/.bash_profile
. .bash_profile
export PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH
Ch 3 Docker入門
Docker命令
- 容器管理
含義 | 命令 |
---|---|
創(chuàng)建容器 | docker run --name your_container_name -i -t ubuntu /bin/bash |
啟動容器 | docker start your_container_id_or_name |
重啟容器 | docker restart your_container_id_or_name |
關閉容器 | docker stop your_container_id_or_name |
刪除容器 | docker rm your_container_id_or_name |
附著會話 | docker attach your_container_id_or_name |
強制退出容器 | docker kill your_container_id_or_name |
查看詳細容器配置 | docker inspect your_container_id_or_name |
查看容器安裝信息 | docker info |
查看正在運行的容器 | docker ps |
查看所有容器 | docker ps -a |
查看容器正在運行的進程 | $ docker top your_container_id_or_name |
查看容器端口映射 | docker port |
查看容器日志 | docker logs |
- 創(chuàng)建守護式容器
docker run --name deamon_container_test -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done"
- 查看容器日志
docker logs --tail 100 your_container_name
- 鏡像管理
含義 | 命令 |
---|---|
查看鏡像 | docker images |
搜索 | docker search image_name |
構(gòu)建鏡像 | docker build -t your_image dockerfile_dir |
刪除鏡像 | docker rmi images_id |
推送鏡像 | docker push images_id |
- Docker Networking管理
含義 | 命令 |
---|---|
創(chuàng)建網(wǎng)絡 | docker network create |
Ch 4 構(gòu)建鏡像
Docker構(gòu)建鏡像的方式:
$ docker commit
$ docker build
- Dockerfile基于DSL(Domain Specific Language) 語法的指令來構(gòu)建一個Docker鏡像剪勿;
- 一旦有Dockerfile就可以使用
$ docker build
命令基于該Dockerfile中的指令構(gòu)建一個新的鏡像贸诚;
Dockerfile語法結(jié)構(gòu):
# 我是注釋
COMMAND arguments
- 命令必須大寫
- 命令后跟參數(shù)
- Dockerfile中的指令會嚴格按照書序從上到下執(zhí)行,所以應該合理安排指令順序;
Dcokerfile 執(zhí)行流程酱固;
- Docker從基礎鏡像運行一個容器械念;
- 執(zhí)行一條指令,對容器做出修改运悲;
- 執(zhí)行類似
$ docker commit
的操作龄减,提交一個新的鏡像層; - Docker在基于剛提交的鏡像運行一個新容器班眯;
- 執(zhí)行Dockerfile中的下一條指令希停,知道所有指令都執(zhí)行完畢。
Dockerfile 指令
命令 | 含義 |
---|---|
FROM | 指定基礎鏡像 |
CMD | 指定一個容器啟動時要運行的命令署隘,注意:$ docker run 命令可以覆蓋CMD命令宠能,CMD命令只能指定一條,如果指定多條則最后一條生效 |
RUN | 指定鏡像被構(gòu)建時運行的命令 |
ENTRYPOINT | 與CMD指令類似定踱,但$ docker run 命令行指定的任何參數(shù)都會被當做參數(shù)再次傳遞給ENTRYPOINT指令中指定的指令 |
WORKDIR | ENTRYPOINT或CMD命令運行的工作目錄 |
ENV | 在鏡像構(gòu)建過程中設置環(huán)境變量 |
USER | 指定運行鏡像的用戶棍潘,默認:root |
VOLUME | 向基于鏡像創(chuàng)建的容器添加卷 |
ADD | 用來指定將構(gòu)建環(huán)境下的文件和目錄復制到鏡像中 |
COPY | 復制文件,類似ADD但不會自動提取和解壓 |
LABEL | 為Docker鏡像添加元數(shù)據(jù) |
ONBUILD | 能為鏡像添加觸發(fā)器 |
- 從新鏡像啟動容器
$ docker run -d -p 80 --name web-server jackycser/web-server nginx -g "deamon off;"
- 自動構(gòu)建
在GitHub或BitBucket倉庫中包含Dockerfile文件并將倉庫連接到Docker Hub即可崖媚。
Ch 5 使用Docker測試靜態(tài)網(wǎng)站
卷:是在一個或者多個容器內(nèi)被選定的目錄亦歉,可以繞過分層的聯(lián)合文件系統(tǒng)(Union File System),為Docker提供持久數(shù)據(jù)或者共享數(shù)據(jù)畅哑。
這意味著對卷的修改會直接生效肴楷,并繞過鏡像。
當提交或者創(chuàng)建鏡像時荠呐,卷不被包含在鏡像里赛蔫。
- Docker Networking
Docker Networking:容器之間的連接用網(wǎng)絡建立
5.3 Docker 用于持續(xù)集成
Ch 6 使用Docker構(gòu)建服務
6.2 使用Docker構(gòu)建一個Java應用服務
Ch 7 Docker 編配和服務發(fā)現(xiàn)
Docker編配:
服務的自動配置、協(xié)作和管理服務的過程泥张。
在Docker的世界里呵恢,編配用來表述一組實踐過程,這個過程會管理運行在多個Docker容器里的應用媚创,而這些Docker容器有可能運行在多個宿主主機上渗钉。
- Docker Compose:用一個YAML文件定義一組要啟動的容器,以及容器運行時的屬性钞钙,Docker Compose 稱這些容器為“服務”:
容器通過某些方法并指定一些運行時的屬性來和其他容器產(chǎn)生交互鳄橘。
- 編配工具功能:
- 調(diào)度和集群管理
- 服務發(fā)現(xiàn)
- Compose
含義 | 命令 |
---|---|
啟動 | docker-compose up |
查看日志 | docker-compose logs |
停止 | docker-compose stop |
查看進程 | docker-compose ps |
刪除服務 | docker-compose rm |
7.3 Docker Swarm
Docker Swarm是一個原生的Docker集群管理工具。
- Swarm 將一組Docker主機作為一個虛擬的Docker主機來管理芒炼。
Ch 8 使用Docker API
在Docker 生態(tài)系統(tǒng)中一共有3種API:
- Registry API:提供了與來存儲Docker 鏡像的 Docker Registry 集成的功能瘫怜;
- Docker Hub API:提供了與Docker Hub集成的功能;
- Docker Remote API:提供了與Docker 守護進程進行集成的功能本刽。
所有這3種API都是RESTful風格的鲸湃。
- Docker Remote API 也提供了所有在命令行中能使用的對容器的所有操作赠涮。