摘要:上一篇簡介常用命令與實踐一六鏡像操作獲取鏡像下載鏡像到本地上有大量的高質(zhì)量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。
【上一篇:Docker簡介、常用命令與實踐(一)】 六、Docker鏡像操作 6.1 獲取鏡像(下載鏡像到本地)
Docker Hub?上有大量的高質(zhì)量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。
從 Docker 鏡像倉庫獲取鏡像的命令是?docker pull。其命令格式為:
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標(biāo)簽]
docker中拉取指定版本的鏡像比如:
docker pull mongo:3.2.4 dockre pull redis:3.2
具體的選項可以通過?docker pull --help
6.2 列出本地鏡像要想列出已經(jīng)下載下來的鏡像,可以使用docker image ls或docker images命令。
6.3 刪除本地鏡像如果要刪除本地的鏡像,可以使用?docker image rm?命令,其格式為:
$ docker image rm [選項] <鏡像1> [<鏡像2> ...]七、Docker容器操作 7.1 說在前面
/bin/bash是linux的命令行工具,類似于window的cmd進(jìn)入dos系統(tǒng)。
7.2 查看容器docker ps #查看啟動的容器 docker ps -a #查看所有容器,包含沒有啟動的容器7.3 啟動容器
????啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止?fàn)顟B(tài)(stopped)的容器重新啟動。
????因為 Docker 的容器實在太輕量級了,很多時候用戶都是隨時刪除和新創(chuàng)建容器。
語法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND: 容器啟動后進(jìn)入容器中要執(zhí)行的命令.
OPTIONS:(常用選項)
-d: 讓 Docker 在后臺運行而不是直接把執(zhí)行命令的結(jié)果輸出在當(dāng)前宿主機(jī)下 -t:?選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上,? -i:?則讓容器的標(biāo)準(zhǔn)輸入保持打開。 -name:為容器命名 -v: 創(chuàng)建數(shù)據(jù)卷 -p: 綁定端口7.3.1 基于鏡像新建一個容器并啟動
docker run
docker run命令有兩個參數(shù),一個是鏡像名,一個是要在鏡像中運行的命令。
例如:
docker run -p 5000:5000 –name web training/webapp7.3.2 后臺運行
????更多的時候,需要讓 Docker 在后臺運行而不是直接把執(zhí)行命令的結(jié)果輸出在當(dāng)前宿主機(jī)下。此時,可以通過添加 -d 參數(shù)來實現(xiàn)。
$ docker run -d CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp7.3.3 交互運行
啟動一個 bash 終端,允許用戶進(jìn)行交互。
$ docker run -it CONTAINER [CONTAINER...] /bin/bash
-t:選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上,?
-i:?則讓容器的標(biāo)準(zhǔn)輸入保持打開。
在交互模式下,用戶可以通過所創(chuàng)建的終端來輸入linux命令
例如:創(chuàng)建centos容器并且進(jìn)入centos容器中
docker run -it centos /bin/bash7.4 終止容器
$ docker stop CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp7.5 啟動一個停止的容器
$ docker start CONTAINER [CONTAINER...]
例如:
docker stop web7.6 重啟容器
$ docker restart CONTAINER [CONTAINER...]
例如:
docker restart web7.7 刪除容器
$ docker rm CONTAINER [CONTAINER...]
例如:
docker rm web7.8 獲取容器的輸出信息
$ docker logs CONTAINER [CONTAINER...]
例如:
docker logs web7.9 進(jìn)入容器
docker exec :在運行的容器中執(zhí)行命令
語法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS說明:
-d :分離模式: 在后臺運行-i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端
$ docker exec –it CONTAINER /bin/bash
例如:
docker exec –it web7.10 主機(jī)和容器間拷貝 7.10.1.容器拷貝到主機(jī)
docker cp ed0f8bb24f3e:/opt/webapp/app.py d:/www
ed0f8bb24f3e: 容器id
/opt/webapp/app.py: 容器中的文件
d:/www: 主機(jī)文件夾
docker cp d:/www/文件 ed0f8bb24f3e:/opt/webapp/7.11 給鏡像打上標(biāo)簽(tag)
tag的作用主要有兩點:一是為鏡像起一個容易理解的名字,二是可以通過docker tag來重新指定鏡像的倉庫,這樣在push時自動提交到倉庫。
將同一IMAGE_ID的所有tag,合并為一個新的
# docker tag 195eb90b5349 seanlook/ubuntu:rm_test
新建一個tag,保留舊的那條記錄
# docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag八、數(shù)據(jù)卷 8.1 什么是數(shù)據(jù)卷
數(shù)據(jù)卷?是一個可供一個或多個容器使用的特殊目錄,可以繞過聯(lián)合文件系統(tǒng)(UFS),為一個或多個容器提供訪問。數(shù)據(jù)卷設(shè)計的目的在于對數(shù)據(jù)的持久化,它完全獨立于容器的生命周期,因此Docker不會在刪除容器時刪除其掛載的數(shù)據(jù)卷,也不會存在類似垃圾收集的機(jī)制。
數(shù)據(jù)卷提供很多有用的特性:
數(shù)據(jù)卷?可以在容器之間共享和重用
對數(shù)據(jù)卷的修改會立馬生效
對數(shù)據(jù)卷的更新,不會影響鏡像
數(shù)據(jù)卷默認(rèn)會一直存在,即使容器被刪除
注意:數(shù)據(jù)卷的使用,類似于Linux下對目錄或文件進(jìn)行mount,鏡像中的被指定為掛載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數(shù)據(jù)卷。
8.2 為什么要使用數(shù)據(jù)卷將本地主機(jī)中的代碼運行在docker容器中。
8.3 掛載數(shù)據(jù)卷的前提授權(quán)本地磁盤
8.4 掛載一個主機(jī)目錄作為數(shù)據(jù)卷 8.4.1 第一種掛起一個數(shù)據(jù)卷運行一個nginx容器 ,-v 掛起一個卷,nginx用來訪問網(wǎng)頁的地址 , -d 以守護(hù)進(jìn)程來運行,--name 給一個名字
docker run -d --name nginx -v /usr/share/nginx/html/ nginx
檢查容器的運行狀態(tài)
docker inspect nginx
對index.html文件做一些改動
echo "hello docker" > index.html8.4.2 第二種通過本地目錄掛載到容器里面的數(shù)據(jù)卷中去
docker run -p 8090:80 -d -v $PWD/html:/usr/share/nginx/html nginx docker run -d -v d:/www/webapp:/opt/webapp training/webapp8.4.3 第三種創(chuàng)建一個僅僅提供數(shù)據(jù)的容器,把這個容器當(dāng)做volume掛載到其它容器里面去
# -v 表示的是volume(數(shù)據(jù)卷) --name 名字 nginx 是這個容器的基礎(chǔ)鏡像 docker create -v $PWD/data:/usr/share/nginx/html --name data_container nginx
運行一個新的容器,把上面提供數(shù)據(jù)的容器當(dāng)做數(shù)據(jù)卷掛載到當(dāng)前的容器中運行,-it表示交互的方式運行,會直接進(jìn)入到這個容器中
docker run -it --volumes-from data_container nginx /bin/bash root@772cbe131d01:/usr/share/nginx/html# echo "Hello Nginx&Docker" > index.html
退出容器查看data目錄:
九、常見疑問Docker的容器是以鏡像來創(chuàng)建的,鏡像是不是一個類似操作系統(tǒng)的環(huán)境?
是的,你可以將Docker理解為一個輕量化的虛擬機(jī),至于我們經(jīng)常說的什么Tomcat鏡像、MySQL鏡像之類的,只是這個輕量化的虛擬機(jī)中安裝了相應(yīng)的軟件。鏡像的名字也就說明了鏡像的功能。
是不是到正式環(huán)境上還要安裝Docker,然后把應(yīng)用部署在其中?
是的,構(gòu)建Docker鏡像、運行Docker容器,都需要安裝Docker,但這是一勞永逸的,因為我們使用的是安裝了各種各樣功能軟件的Docker鏡像和Docker容器。
參考教程:Docker之編程環(huán)境應(yīng)用
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27576.html
摘要:獲取阿里云加速器地址進(jìn)入登錄阿里云進(jìn)入后臺配置加速器點擊后就會重啟并應(yīng)用配置的鏡像地址了檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請手動檢查加速器配置是否生效,在命令行執(zhí)行,如果從結(jié)果中看到了如下內(nèi)容,說明配置成功。 一、為什么要使用Docker以及與虛擬機(jī)的區(qū)別? 1.1 為什么要使用Docker Docker的思想來自于集裝箱。集裝箱解決了什么問題?在一艘大船上,...
摘要:此刻的后手指依舊飛速地敲打鍵盤,絲毫沒有要停不下來意思。閱讀本期技術(shù)周刊,你不光能弄明白什么是,使用的意義何在,還將被傳授秘籍,以達(dá)的境界。周刊篩選的每篇內(nèi)容,是作者的獨到見解,踩坑總結(jié)和經(jīng)驗分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,聽到后排動感十足的清脆鍵盤響,我就能猜到公司程序員定...
摘要:以下為幾個常用的指令依賴鏡像所有都必須以命令開始,表示其依賴的鏡像。的端口不使用公有端口。與命令使用數(shù)組語法。推薦阿里云,畢竟有錢,穩(wěn)定。參數(shù)表示后臺守護(hù)進(jìn)程運行容器。執(zhí)行,運行應(yīng)用。 docker 即容器 一些概念 Docker Registry Docker 遠(yuǎn)程鏡像倉庫 DockerHub DaoCloud / Aliyun Docker Images Docker Imag...
閱讀 2589·2023-04-26 01:44
閱讀 2620·2021-09-10 10:50
閱讀 1450·2019-08-30 15:56
閱讀 2348·2019-08-30 15:44
閱讀 546·2019-08-29 11:14
閱讀 3454·2019-08-26 11:56
閱讀 3042·2019-08-26 11:52
閱讀 949·2019-08-26 10:27