1. 程式人生 > >docker掃盲,面試連這都不會就等著掛吧!

docker掃盲,面試連這都不會就等著掛吧!

現在很多公司專案部署都是採用K8S docker容器方式,出門面試被問的概率極大,如果被面試官問docker相關知識點直接懵逼,那麼基本就是被pass了,除非其他方面技術過硬。所以這種相對前沿的技術,就算達不到精通的程度,起碼還是要了解基礎理論和操作

一.安裝docker

Docker要求執行在Centos 7上,要求系統為64位,系統核心版本3.10以上

  • uname -an 檢視當前系統版本

  • yum -y install docker 下載安裝docker

  • service docker start 啟動docker服務

  • docker version 檢查docker是否安裝成功

當看到下圖的資訊,就是表示本機docker已經安裝成功,很簡單

二.映象操作

建立容器要以映象為基礎,所以先講下docker映象的操作

搜尋映象

docker images ll 檢視下本機的是否已經有了映象

目前機器裡還沒有映象,去Docker Hub下載(映象還可自定義,這裡就不細說了)

docker search java ,還能指定具體的版本進行下載,

例如:docker search Ubuntu:1.2.5.4,可以進行搜docker Hub 會列出很多映象

下載映象

docker pull docker.io/nginx 進行下載

下載到本地的映象要比docker Hub上搜索出來的要大,因為下載過程中自動解壓了,在檢視映象列表就有了剛才下載的映象

列表包含了倉庫名,版本標籤,映象ID,建立時間以及所佔用的空間

刪除映象

刪除沒用的映象docker rmi 映象id

三.容器的操作

前邊我們已經下載好了Nginx的映象,接下來我們就建立一個只有Nginx應用的容器

docker run -i -t

-i:標準輸入給容器
-t:分配一個虛擬終端
/bin/bash:執行bash指令碼

docker run -idt --name container_nginx -p 8080:80  docker.io/nginx

啟動一個使用映象docker.io/nginx,名字container_nginx的容器,-p 8080:80表示將容器的80埠對映到主機的8080埠,這樣我們只要訪問主機的8080埠就可以訪問到容器的服務了。

注意:name前面是兩個-, 埠前面有-pdocker.io/nginx是映象名,8080是主機的埠,80是Nginx應用的埠

主機上的一個埠只能對映一個容器埠,不可以多個容器埠對應一個主機埠(如果容器安裝的centos類的系統,那麼容器埠隨便設定,但如果容器內只是單純的應用,那麼容器埠要是應用自身的埠)

這樣我們就建立並啟動了一個容器!

exit 退出容器

docker ps 檢視執行中的容器

docker ps -a 檢視執行中和非執行中的所有容器

docker exec -it container_nginx /bin/bash 進入容器

如果容器還未啟動 執行docker start container_nginx

進入容器後啟動Nginx

whereis nginx 找Nginx的啟動目錄

[root@iz2zehzeir87zi8q99krk1z ~]# docker start container_nginx
container_nginx
[root@iz2zehzeir87zi8q99krk1z ~]# docker exec -it container_nginx /bin/bash
root@84683e425116:/# whereis  nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@84683e425116:/#  /usr/sbin/nginx 

此時在瀏覽器訪問 http://51.110.218.9:8080/ 就可以直接訪問容器內的Nginx

如果訪問不成功,可能是主機埠的防火牆開著,執行下邊的命令關閉

/ sbin / iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

由於我用的阿里雲伺服器,所以需要在阿里雲把8080埠開放

刪除容器

容器刪除之前先將容器停止

docker stop container_nginx 或者是容器的id

docker rm -f container_nginx 容器刪除

docker start 與 docker run 的區別

docker start name 啟動一個已經建立的容器

docker run 建立並啟動一個容器

docker run 命令其實是 docker createdocker start 的命令組合,先執行docker create 建立一個容器 再接著docker start啟動

主機和容器檔案相互複製

從主機複製到容器 sudo docker cp host_path containerID:container_path

從容器複製到主機 sudo docker cp containerID:container_path host_path

請注意,以上這兩個命令都是在主機中執行的,不能再容器中執行

docker cp container_nginx:/usr/local/xin.txt  /usr/local/software/   容器向主機複製檔案

docker cp /usr/local/xinzhifu.txt  container_nginx:/usr/local/  主機向容器複製檔案

這樣一個基礎的docker容器就建立完了 。。。。。。。。。。。。

反過來大家再看一看docker的容器與映象的區別 https://www.cnblogs.com/linjiaxin/p/7381421.html

那麼其實映象與容器的本質區別並不大,那麼映象可以生成容器 ,容器是否可以做成映象呢?

docket commit container_nginx  image_nginx:v1


container_nginx 容器名

image_nginx:v1 自己起一個映象的名字:版本號


這樣做有什麼好處呢?

例如:A、B兩臺機器都想安裝redis,A機器上建立容器並在容器中做好redis的一切配置,讓後將這個容器docker commit 成映象image_redis,B機器也想要安裝redis,直接用映象image_redis建立容器就行了,docker就是做這樣一勞永逸的事情。

而且傳統方式得在每臺機器上安裝配置redis非常麻煩

四.映象的匯入與匯出

映象壓縮打包 (主機上進行操作),有兩種方式 docker savedocker loaddocker export 與 docker import

docker save nginx | gzip > nginx_xin_image.tar.gz  將現有的映象壓縮打包

docker load -i nginx_xin_image.tar.gz  壓縮的映象解壓

docker images 進行檢視

docker save 是直接將映象進行打包 docker save <映象名>或<映象id>

docker export container_nginx> nginx_image.tar  

cat nginx_image.tar | sudo docker import  - nginx_image:import

docker export 是直接將容器進行打包 docker export <容器名>或<容器id>

需要注意兩種方法配套的,切不可混用。雖然匯入匯出時沒問題,但是在建立容器時候會報錯

如果使用import匯入save產生的檔案,雖然匯入不提示錯誤,但是啟動容器時會提示失敗,

會出現類似"docker: Error response from daemon: Container command not found or does not exist"的錯誤。

類似,使用load載入export產生的檔案,也會出現問題。

先寫到這,文章略顯粗糙,希望對您有一點用,學無止境加油!


WeChat:關注公重號:【程式設計師內點事】,免費獲取2000G學習資料,內含精選面試題,SSM、Spring全家桶、微服務、MySQL、MyCat、叢集、分散式、中介軟體、Linux、網路、多執行緒,Jenkins、Nexus、Docker、ELK等等免費學習視訊,持續更新!

相關推薦

docker掃盲面試

現在很多公司專案部署都是採用K8S docker容器方式,出門面試被問的概率極大,如果被面試官問docker相關知識點直接懵逼,那麼基本就是被pass了,除非其他方面技術過硬。所以這種相對前沿的技術,就算達不到精通的程度,起碼還是要了解基礎理論和操作 一.安裝docker Docker要求執行在Cento

面試官突然問我MySQL儲存過程我竟然基礎(詳細)

**所有知識體系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收錄,歡迎Star!再次感謝,願你早日進入大廠!** **GitHub地址:** [https://github.com/Ziphtracks/JavaLearning

如果你想靠前端技術還房貸這個

最近,為了部門招聘,我對幾十個前端應聘者進行了簡短的技術面試。 這次招聘的背景是,我們需要若干 3 年左右經驗的前端工程師開發維護一些移動單頁模組,和一些 PC 增刪改查前端應用。因為採用了外包模式,所以預定的策略是技術能用即可,不要求獨立完成專案,只是對業務經驗有一定要求,對簡歷篩的很鬆

?Python_迭代器與生成器

一. 迭代器 什麼是迭代器: 提供了一個方法,可以不斷獲取物件裡的資料。 使用者不需要關心內部細節,只需要通過這個特定介面獲取資料。 當沒有資料時,再次呼叫時,會得到一個停止標記。 不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問 訪問到一半時不能往回退

美妝蛋的隱藏使用技能99%的人

美妝蛋在彩妝圈兒風靡已不是一年兩年了,從剛開始問世到如今,已經有越來越多的姑娘選擇用這款小道具上妝。 但是美妝蛋真正的用法你又瞭解多少呢?這次我們就來給大家科普一個全面的美妝蛋使用攻略,請收藏!! 美妝蛋的材質: 真正好品質的美妝蛋是不含致敏性乳膠的,而且海綿質地細

C語言這個基礎知識99%的人

printf()和scanf()是 C語言中最“多才多藝”的 I、O函式 它使用的轉換說明和轉義字元 能使程式設計師恰到好處的控制 想要輸入和輸出的資訊 但這也提高了使用它的難度 今天大雄就給大家整理了 這兩個函式的常見用法。 再插播一條廣告 C語言C

裏除了安全什麽發生Docker鏡像P2P加速之路

-o 是否 除了 興趣 解決 開發環境 無法 code 種子 問題:在使用Docker運行容器化應用時,宿主機通常先要從Registry服務(如Docker Hub)下載相應的鏡像(image)。這種鏡像機制在開發環境中使用還是很有效的,團隊成員之間可以很方便地共享同樣的鏡

UML基本語法放棄學UML~

百度百科上面對UML的解釋: 簡單地說,UML是軟體開發的圖紙——它對於軟體的意義就像建築物的圖紙對於建築物一樣。 這裡主要解釋基本語法(以下使用starUML繪製): 類(class): 一般來說,類圖用這樣的矩形表示,第一行是類名(抽象類類名用斜體),第二行是類的

這些知道怎麼去阿里

本次收錄了一些面試中經常會遇到的經典面試題以及自己面試過程中遇到的一些問題,並且都給出了我在網上收集的答案。馬上就要過春節了,開年就是嶄新的一年,相信很多的前端開發者會有一些跳槽的悸動,通過對本篇知識的整理以及經驗的總結,希望能幫到更多的前端面試者。(如有錯誤或更好的答案,歡迎指正,水平

檔案搜尋自己反省一下?

   有些事情很可笑,可笑得很荒唐。在此記錄一下。當然,這裡並不是貶低、嘲笑,而是說,自己工作出錯了,要知道自己的不足。想提高自己呢就悄悄學習,不想費那個力氣呢就不要覺得自己多牛。     一次安排員工甲,找個軟體查一下目錄中的檔案包含字串。員工甲當然是應付一下,試了一下

這些可以一鍵完成的操作難怪做PPT效率那麼低

製作PPT的時候效率不太高,總是在某些操作上花費很長時間?其實,PPT中有很多操作都是可以一鍵快速完成的〜   1.重複上一次的操作 例子:如何快速批量新增重複的元素除了複製貼上,你還可以用這個方法,一鍵搞定,簡單又高效。 操作步驟:新增目標元素 - 按下【F4】鍵

幾個Python經典演算法別說你是Python程式設計師

    1 臺階問題/斐波納挈 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 學習Python中有不明白推薦加入交流裙             &nbs

這樣投完99份簡歷一個面試

                                                          不少網友抱怨,為何我投的簡歷都沒有音訊。那你是否自問過:你投簡歷是否經過深思熟慮?衝名氣而投        此類投遞者,往往只看公司名氣。壓根不管對方

登記表面試還能通過?可能

       儘管填寫應聘登記表是面試前的常規操作流程之一,卻引來了求職者的諸多困惑與不解。    不解之一:除了居住地,還要填戶口地址,調查戶口嗎?    不

程式設計師吐槽:真心累轉行花了數萬元學程式設計工作

網際網路紅利時代,激發了越來越多的人投身其中就業與創業,其中程式設計師這一職業也被推上了高薪職業風口。除了科班畢業的程式設計師,也有不少傳統行業從業者轉行進入網際網路行業,這些半路轉行的有的會通過自學,有的則會通過花錢上培訓班達到速成的效果。然而俗話說轉行窮三年不是沒有道理的,畢竟從事一個全新的崗位

爬蟲入門的基本原理如果你這些知道那你可以放棄爬蟲了

我們天天到處看到爬蟲爬蟲的,你瞭解爬蟲是什麼嗎?你知道爬蟲的爬取流程嗎?你知道怎麼處理爬取中出現的問題嗎?如果你回答不出來,或許你真的要好好看看這篇文章了! 爬蟲簡介 網路爬蟲(Web crawler),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼,它們

取到嶄新號人民幣我卻一點開心

01 今天很難得的去銀行取了一次錢。 現在移動支付太方便,路邊賣煎餅果子的大叔都接受手機支付:左手邊的手機裡放著《套馬杆的漢子》,右手邊立著個微信支付二維碼圖片,時髦值MAX。 所以,ATM在我眼中,和縫紉機差不多地位了。     但我要講的重點,是在我回到家之後。 我仔細端

Gson解析Json時欄位名一定要完全一樣空格能有

今日除錯的時候發現上報的資料明明有這一項,但是一直解析出來為NULL{"aaa ":101}public class AAA{    private Integer aaa;set方法get方法}Gson解析出來後一直是null。查了好久才發現了尾部的這個空格將json修改為

某網貼出來的u3d面試題目彙總當時學習下(好多我呢)

在蠻牛網看到這個東西,原作者我也沒注意是誰,看了下很多知識我都不會呀,算是學習一下吧,這裡貼出來,大家看看。     第一部分 1.請簡述值型別與引用型別的區別 2.C#中所有引用型別的基類是什麼 3.請簡述ArrayList和List<Int>的主要區別 4

張泉靈:時代拋棄你時一聲再見

導讀:網際網路、人工智慧、區塊鏈...在這個瞬息萬變的時代,新鮮事物不斷湧現,思維方式更迭換代,