1. 程式人生 > 實用技巧 >網際網路應用服務端的常用技術思想與機制綱要

網際網路應用服務端的常用技術思想與機制綱要

Docker 映象命令

檢視映象

docker images #顯示映象
-a #顯示所有
-q #只顯示ID

搜尋命令

docker search [映象名] #搜尋該映象
#可選項,通過stars過濾
--filter=stars=XXX  #搜尋出的映象stars大於XXX

下載映象

docker pull [映象名] #不加tag,預設下載最新版
docker pull mysql:5.7 #下載5.7版本的mysql映象

刪除映象

docker rmi  #刪除映象
-f #全部山粗
docker rmi -f [id] #通過id來刪除映象
docker rmi -f $(docker images -aq) #刪除所有映象

Docker容器命令

新建容器並啟動

docker run [可選引數] [映象名]
#引數說明
--name="Name" 指定容器名,用來區分容器
-d 後臺啟動容器
-it 使用互動方式,進入容器訪問檢視內容
-p  指定容器的埠
	-p 8080:8080 主機埠:容器埠 常用
-P  大寫P,隨機指定埠

列出所有執行的容器

docker ps #列出正在執行的容器
#可選引數化
-a 列出當前在執行的容器並帶出歷史執行的容器
-n=[X] 列出最近建立的容器,x為個數,從上到下為新到舊
-q  只顯示容器的編號

退出容器

容器內
exit # 直接停止容器並退出
Ctrl + P + Q #不停止容器退出

刪除容器

docker rm [容器id] #刪除容器
-f #全部刪除
docker rm -f $(docker ps -aq) #刪除所有容器
docker ps -aq | xargs docker rm #刪除所有容器

啟動停止容器

docker start [容器id]
docker restart [容器id]
docker stop [容器id]
docker kill [容器id]

其他常用命令

後臺啟動容器

docker run -d [imagesName] #後臺啟動映象
#坑:dockers後臺啟動該容器,必須有前臺程序,docker發現沒有前臺程序會自動停止該容器
##對外服務應用則不會,centos這類會發現此問題

檢視日誌

docker logs -tf --tail [顯示日誌的條數] [容器id]
--tial string形式輸出日誌

檢視容器內程序資訊

docker top [容器id]

檢視容器詳細資訊

docker inspect [容器id]
###檢視詳細資訊後可以得知docker ps顯示的容器id為全id的前幾位縮寫

進入容器

#方法一
docker exec -it [容器id] #進入容器後開啟一個新的終端
#方法二
docker attach [容器id]   #進入正在執行的容器,不會開啟新的終端
##該方法只能進入當前正在執行的容器

從容器內拷貝檔案到主機上

docker cp [容器id]:[/路徑/檔案] [主機路徑] #一般不會用命令從主機拷貝到容器,通常使用掛載
##停止執行的容器也可以拷貝,因為容器還在,資料就會還在

##拷貝是個手動的過程,未來可以使用-v技術來實現自動同步[資料卷技術]
##聯通主機和容器目錄 容器/home 主機/home 檔案同步

小結

心得:基本命令學完了,感覺還是容易會忘,還是經常得敲。docker命令跟linux命令幾乎一模一樣,學了docker命令後順便把linux基本命令複習了一遍,大學畢業之後不常用幾乎也快忘完了,這次學習還是收穫頗豐。本次學習的命令都是最常用最基礎的命令,之後還有更深層次的等待著學習。

映象部分

視覺化

  • portainer(首先學習使用)
  • Rancher(CI/CD再學習)

什麼是portainer #docker圖形化介面工具

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

本機訪問localhost:8088進入視覺化管理介面

ps:一般很少會用,測試體驗一下就行

Commit

docker commit  #提交容器成為一個新的副本

#類似git命令
docker commit -m="文字描述" -a="作者" 容器id 映象名:[TAG(版本)]

實戰測試

#啟動tomcat映象生成容器,對映主機埠為8080

#複製webapps.dist目錄下檔案至webapps中,使其能夠訪問預設頁面

#執行 PS C:\Windows\system32> docker commit -m="add webapps app" -a="AsSu" 62cf1257e0b3 tomcat:1.0.1  

#docker images檢視生成的映象

#通過commit把操作/配置好的容器,生成一個新的映象,之後就使用這個新的映象

=======================================================================================

進階

容器資料卷

什麼是資料卷

資料儲存在容器中,是不科學的,因為一旦刪除容器,攜帶的資料隨著一起被刪除

所以我們必須要將資料持久化

容器之間可以有一個數據共享的技術,容器中產生的資料,同步儲存在本地中

資料卷技術,將容器內的目錄,掛載到Linux/本地上 ##容器之間也是可以相互共享的

使用資料卷

PS C:\> docker run -it -v /d/linux/test:/test --name="centos" centos:7 /bin/bash  
#-v /d/linux/test:/test  將centos根目錄下的test資料夾同步到windows的d盤中的linux/test資料夾中

##踩的坑##
因為學習的教程使用的是linux系統,所以在windows下操作的時候沒有指定d盤,所以前幾次嘗試都失敗了

對dockerfile的初步印象

dockerfile就是用來構建映象的指令碼檔案

#建立一個dockerfile檔案
#檔案中的指令碼內容
From centos

VOLUME ["volume01","volume02"]

cmd echo "------end------"

cmd /bin/bash

dockerfile今後會使用十分之多,因為我們通常要自己構造映象

如果構造映象時沒有掛載卷,要使用-v手動進行掛載

資料卷容器

--volume-from
#通過此命令實現榮期間的資料共享

結論:

容器之間可以用此方法進行配置資訊的同步(叢集配置同步)

資料卷容器的生命週期一直到沒有容器使用為止

DockerFile

構建映象的指令碼檔案

構建步驟

  • 編寫一個dockerfile檔案
  • docker build 構建成為映象
  • docker run 執行該映象
  • docker push 釋出映象(dockerhub,aliyun)分為私有跟共有

DockerFile的指令

FROM		# 基礎映象
MAINTAINER	# 姓名+郵箱  作者資訊
RUN			# 構建映象時要執行的命令
ADD			# 新增內容
WORKDIR		# 映象的工作目錄
VOLUME		# 掛載的目錄
EXPOSE		# 暴露埠
CMD			# 指定這個容器啟動時要執行的命令,只有最後一個會生效,且可以他被替代
ENTRYPOINT	# 指定這個容器啟動時要執行的命令,可以追加命令
ENV			# 構建時配置的環境變數

實戰測試

建立一個自己配置的centos

#1 編寫dockerfile
PS C:\dockerfiles> cat .\mydockerfile
FROM centos

MAINTAINER asuu<[email protected]>

ENV MYPATH /user/local

WORKDIR $ENV

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

#2 通過這個dockerfile構建映象
docker build
Successfully built e6fafecd79f6
Successfully tagged asuu-centos:latest #執行結果

#3 docker run執行該映象
docker history 容器id #檢視該容器的構建過程

釋出映象

dockerhub

#1 登入dockerhub賬號
docker login
Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username
  docker login -u [account]
  PASSWORD:
  
#登入成功
PS C:\Users\AsUu> docker login -u transparentz
Password:
Login Succeeded
PS C:\Users\AsUu>