Docker的簡(jiǎn)單操作

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拱礁,隨后出現(xiàn)的幾起案子琢锋,更是在濱河造成了極大的恐慌,老刑警劉巖呢灶,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吴超,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸯乃,警方通過查閱死者的電腦和手機(jī)鲸阻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缨睡,“玉大人赘娄,你說我怎么就攤上這事『牝龋” “怎么了遣臼?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拾并。 經(jīng)常有香客問我揍堰,道長,這世上最難降的妖魔是什么嗅义? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任屏歹,我火速辦了婚禮,結(jié)果婚禮上之碗,老公的妹妹穿的比我還像新娘蝙眶。我一直安慰自己,他們只是感情好褪那,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布幽纷。 她就那樣靜靜地躺著,像睡著了一般博敬。 火紅的嫁衣襯著肌膚如雪友浸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天偏窝,我揣著相機(jī)與錄音收恢,去河邊找鬼武学。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伦意,可吹牛的內(nèi)容都是我干的火窒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼驮肉,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沛鸵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缆八,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤曲掰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奈辰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栏妖,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年奖恰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吊趾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瑟啃,死狀恐怖论泛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛹屿,我是刑警寧澤屁奏,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站错负,受9級(jí)特大地震影響坟瓢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犹撒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一折联、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧识颊,春花似錦诚镰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镰踏,卻和暖如春函筋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奠伪。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工跌帐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绊率。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓谨敛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滤否。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脸狸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容