Docker的簡(jiǎn)單操作
一矩距、 安裝:
Centos7:
使用centos7
1.安裝依賴:
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加安裝源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安裝最新版的docker-ce
yum-config-manager --enable docker-ce-edge
4.更新 yum 軟件源緩存,并安裝 docker-ce
yum makecache fast
yum install docker-ce
5.啟動(dòng)docker
service docker start //開啟docker服務(wù)
service docker restart //重啟docker服務(wù)
service docker stop //停止docker服務(wù)
6.鏡像加速
由于國內(nèi)Docker Hub 拉取鏡像有時(shí)會(huì)遇到困難希停,此時(shí)我們需要配置鏡像加速器。
在 /etc/docker/daemon.json
文件中寫入如下內(nèi)容如不存在則創(chuàng)建一個(gè)
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
注意:配置完成之后輸入命令:service docker restart 重啟docker
Ubuntu:
使用ubuntu
1. 由于 apt 源使用 HTTPS 以確保軟件下載過程中不被篡改叁丧。因此众辨,我們首先需要添 加使用HTTPS 傳輸?shù)能浖约?CA 證書豪嚎。
故先執(zhí)行以下命:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
2. 我們需要向 source.list 中添加 Docker 軟件源
命令如下:
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
3. 安裝 Docker CE
更新 apt 軟件包緩存,并安裝 docker-ce:
sudo apt-get update
sudo apt-get install docker-ce
4. 啟動(dòng)docker
sudo service docker start //開啟docker服務(wù)
sudo service docker restart //重啟docker服務(wù)
sudo service docker stop //停止docker服務(wù)
6. 鏡像加速和Contos 一樣
二厢塘、獲取鏡像
從 Docker 鏡像倉庫獲取鏡像并使用
1.從 Docker 鏡像倉庫獲取鏡像的命令是 docker pull 茶没。其命令格式為:
docker pull [選項(xiàng)] [Docker Registry 地址[:端口號(hào)]/]倉庫名[:標(biāo)簽]
詳細(xì)的選項(xiàng)可以通過 docker pull --help
命令看到。
例如:
docker pull apache/nifi
此條命令直接是在我Docker hub中拉取最后一個(gè)鏡像版本和 docker pull apache/nifi:latest 是一樣的晚碾,如需指定版本則可把 latest 改為相應(yīng)的版本即可
如: docker pull apache/nifi:1.7.0
注:拉取的鏡像的詳細(xì)使用方法可在Docker hub中查找
2.列出鏡像:
docker images
or docker image ls
3.刪除本地鏡像:
docker rmi [選項(xiàng)] <鏡像1> [<鏡像2> ...]
或者 docker image rm [選項(xiàng)] <鏡像1> [<鏡像2> ...]
三礁叔、運(yùn)行停止
1.有了鏡像后,我們就以這個(gè)鏡像為基礎(chǔ)啟動(dòng)并運(yùn)行一個(gè)容器迄薄。以上面的 apache/nifi:1.7.0 為例琅关,如果我們打算啟動(dòng)里面的 bash 并且進(jìn)行交互式操作的話,可以執(zhí)行下面的命令:
docker run -it --rm apache/nifi:1.7.0 bash
docker run 就是運(yùn)行容器的命令讥蔽。
注:基本參數(shù)說明:
(1. --name :可指定容器名稱涣易。
(2. -d : 容器后臺(tái)運(yùn)行。
(3. -p/P : 進(jìn)行端口映射:
-p(小寫) :可以指定要映射的IP和端口
-P(大寫):Docker 會(huì)隨機(jī)映射一個(gè) 49000~49900 的端口到內(nèi)部容器開放的網(wǎng)絡(luò)端口
(4. -it :這是兩個(gè)參數(shù)冶伞,一個(gè)是 -i交互式操作新症,一個(gè)是 -t 終端。我們這里打算進(jìn)入响禽。
(5. bash :執(zhí)行一些命令并查看返回結(jié)果徒爹,因此我們需要交互式終端。
(6. --rm :這個(gè)參數(shù)是說容器退出后隨之將其刪除芋类。默認(rèn)情況下隆嗅,為了排障需求,退出的容器并不會(huì)立即刪除侯繁,除非手動(dòng)docker rm 胖喳。
我們這里只是隨便執(zhí)行個(gè)命令,看看結(jié)果贮竟,不需要排障和保留結(jié)果丽焊,因此使用 --rm 可以避免浪費(fèi)空間。
(7. apache/nifi:1.7.0 :這是指用 apache/nifi:1.7.0 鏡像為基礎(chǔ)來啟動(dòng)容器咕别。
(8. bash :放在鏡像名后的是命令技健,這里我們希望有個(gè)交互式 Shell,因此用的是 bash 惰拱。
注:如進(jìn)入容器之后想回到宿主機(jī)的交互界面我們可以用 CTRL + P + Q 退出容器而不關(guān)閉它雌贱。
2.進(jìn)入容器
當(dāng)我們運(yùn)行容器后并沒有進(jìn)入其交互界面,而后想進(jìn)入容器怎么辦?很簡(jiǎn)單在宿主機(jī)上運(yùn)行
docker attach [id]/[name]
這個(gè)命令有個(gè)需要注意的是:如果進(jìn)入容器在容器內(nèi)部輸入 exit 會(huì)導(dǎo)致容器一起被關(guān)閉帽芽,那這時(shí)我們可以用docker exec 來進(jìn)入容器
如:
docker exec -it [id]/[name] bash
docker exec 后邊可以跟多個(gè)參數(shù)具體的參數(shù)說明請(qǐng)使用 docker exec --help 來查看删掀。
3.停止容器
docker stop [name]/[id] //等待結(jié)束再關(guān)閉 docker kill [name]/[id] //直接關(guān)閉
4.刪除容器
docker rm [id]/[name]
5.查看運(yùn)行的容器
docker ps
6.啟動(dòng)容器
docker start [container]
四、構(gòu)建鏡像
使用docker commit
進(jìn)行構(gòu)建导街,定制用Dockerfile
docker commit 的語法格式為:docker commit [選項(xiàng)] <容器ID或容器名> [<倉庫名>[:<標(biāo)簽>]]
如:
docker commit --author "jiang <yuchumian@163.com>" --message "修改了配置文件" mynifi nifi:v1
說明:
--author
是指定修改的作者披泪,而--message
則是記錄本次修改的內(nèi)容。
之后我們就可以通過docker image ls
看到這個(gè)新構(gòu)建的鏡像搬瑰。
五款票、使用 Dockerfile 定制鏡像
Dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令泽论,每一條指令構(gòu)建一層艾少,
因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建翼悴。如下:
FROM apache/nifi:1.7.0 COPY ./nifi.conf /nifi/conf/
定制時(shí)我們首先應(yīng)該創(chuàng)建一個(gè)空的文件夾缚够,在其中再創(chuàng)建Dockerfile文件,再寫入如上內(nèi)容鹦赎。保存并退出運(yùn)行 docker build -t nifi:v3
這是一個(gè)簡(jiǎn)單的例子 其中 FROM 指定基礎(chǔ)鏡像谍椅,就是以一個(gè)鏡像為基礎(chǔ),在其上進(jìn) 行定制古话。 上面的COPY指令是把當(dāng)前目錄下的nifi.conf
復(fù)制到鏡像的/nifi/conf/
下并且COPY
指令會(huì)保留文件的屬性及相應(yīng)的權(quán)限雏吭。除此之外ADD
,ADD
指令作與 COPY
指令類似,與其不同的是ADD
如果遇到的是壓縮文件時(shí)它會(huì)自動(dòng)進(jìn)行解壓操作陪踩。故通常我們?cè)趶?fù)制文件的時(shí)候大多推薦用COPY
杖们。 使用 Dockerfile 定制鏡像我這里只是進(jìn)行一個(gè)簡(jiǎn)單的介紹,Dockerfile 功能非常強(qiáng) 大肩狂。感興趣的可以去研究摘完。
六、文件操作
docker 文件操作
1. 容器和宿主機(jī)之間的文件操作
從宿主機(jī)到容器: docker cp <src> [container]:<src>
從容器到宿主機(jī):
docker cp [container]:<容器里的文件路徑> <將要存放在的宿主機(jī)中的路徑>
2. 掛載
使用--mount
標(biāo)記可以指定掛載一個(gè)本地主機(jī)的目錄到容器中去婚温。
例如:
docker run -d -P --name mynifi \ # -v /local/nifi:/opt/nifi \ --mount type=bind,source=/local/nifi,target=/opt/nifi \ apache/nifi:1.7.0
如上:我們可以使用-v或--mount進(jìn)行掛載操作
有一點(diǎn)是:使用--mount 參數(shù)時(shí)如果本地目錄不存在描焰,Docker 會(huì)報(bào)錯(cuò)媳否,而-v則會(huì)去創(chuàng)建這個(gè)目錄
七栅螟、Docker-compose
Docker-Compose 是一個(gè)用戶定義和運(yùn)行多個(gè)容器的 Docker 應(yīng)用程序。在 Docker-compose 中你可以使用YAML文件來配置你的應(yīng)用服務(wù)篱竭。然后力图,只需要一個(gè)簡(jiǎn)單的命令,就可以創(chuàng)建并啟動(dòng)你配置的所有服務(wù)掺逼。
YAML配置文件(docker-compose.yml)配置如下:
version: "3"
services:
nifi:
build: ./
ports:
- "8080:8080"
environment:
- NIFI_ZK_CONNECT_STRING=zookeeper:2181
volumes:
- /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
- /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
以上是單個(gè)nifi的簡(jiǎn)單配置吃媒,以下進(jìn)行一個(gè)簡(jiǎn)單的說明:
build: ./ 是以當(dāng)前目錄下 Dockerfile 文件來構(gòu)建生成鏡像。如不需要對(duì)鏡像進(jìn)行改動(dòng)則可以直接用 image 如:
nifi:
image: apache/nifi:1.7.0
ports:
- "8080:8080"
environment:
- NIFI_ZK_CONNECT_STRING=zookeeper:2181
volumes:
- /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
- /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
注:如果 image: apache/nifi:1.7.0 這個(gè)鏡像本地沒有,dockers-compose會(huì)直接從docker hub 上嘗試?yán) ?
ports:
- "8080:8080"
如果以上是 - "8080" 那么這意味著這僅僅是指定容器的端口(宿主將會(huì)隨機(jī)選擇端口)赘那,而- "8080:8080" 指定映射到宿主機(jī)的8080端口
environment:
設(shè)置環(huán)境變量刑桑。你可以使用數(shù)組或字典兩種格式
volumes:
- /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
- /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
掛載宿主機(jī)文件到容器。 /opt/nifi/data_in
為宿主機(jī)內(nèi)的路徑募舟,/opt/nifi/nifi-1.7.0/data_in
為容器內(nèi)的路徑
每個(gè)服務(wù)都必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)等來自動(dòng)構(gòu)建生成鏡像祠斧。
啟動(dòng)命令:
在 docker-compose.yml
的目錄下直接執(zhí)行
docker-compose up
如需后臺(tái)啟動(dòng)則 docker-compose up -d
如要重新構(gòu)建則 docker-compose up --build -d
關(guān)閉:docker-compose stop
關(guān)閉并移除所有配置信息 : docker-compose down