Docker學(xué)習(xí)之常用的基礎(chǔ)命令總結(jié)
前言
Docker是一個(gè)用了一種新穎方式實(shí)現(xiàn)的超輕量虛擬機(jī),在實(shí)現(xiàn)的原理和應(yīng)用上還是和VM有巨大差別,專(zhuān)業(yè)的叫法是應(yīng)用容器(Application Container)。下面這篇文章將簡(jiǎn)單介紹一下Docker常用的一些基礎(chǔ)命令。
# 在ubuntu中安裝docker
$ sudo apt-get install docker.io
# 查看docker的版本信息
$ docker version
# 查看安裝docker的信息
$ docker info
# 查看本機(jī)Docker中存在哪些鏡像
$ docker images
# 檢索image
$ docker search ubuntu:14.04
# 在docker中獲取ubuntu鏡像
$ docker pull ubuntu:14.04
# 顯示一個(gè)鏡像的歷史
$ docker history birdben/ubuntu:v1
# 列出一個(gè)容器里面被改變的文件或者目
$ docker diff birdben/ubuntu:v1
# 從一個(gè)容器中取日志
$ docker logs birdben/ubuntu:v1
# 顯示一個(gè)運(yùn)行的容器里面的進(jìn)程信息
$ docker top birdben/ubuntu:v1
# 從容器里面拷貝文件/目錄到本地一個(gè)路徑
$ docker cp ID:/container_path to_path
# 列出當(dāng)前所有正在運(yùn)行的容器
$ docker ps
# 列出所有的容器
$ docker ps -a
# 列出最近一次啟動(dòng)的容器
$ docker ps -l
# 查看容器的相關(guān)信息
$ docker inspect $CONTAINER_ID
# 顯示容器IP地址和端口號(hào),如果輸出是空的說(shuō)明沒(méi)有配置IP地址(不同的Docker容器可以通過(guò)此IP地址互相訪問(wèn))
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID
# 保存對(duì)容器的修改
$ docker commit -m "Added ssh from ubuntu14.04" -a "birdben" 6s56d43f627f3 birdben/ubuntu:v1
# 參數(shù):
# -m參數(shù)用來(lái)來(lái)指定提交的說(shuō)明信息;
# -a可以指定用戶(hù)信息的;
# 6s56d43f627f3代表的時(shí)容器的id;
# birdben/ubuntu:v1指定目標(biāo)鏡像的用戶(hù)名、倉(cāng)庫(kù)名和 tag 信息。
# 構(gòu)建一個(gè)容器
$ docker build -t="birdben/ubuntu:v1" .
# 參數(shù):
# -t為構(gòu)建的鏡像制定一個(gè)標(biāo)簽,便于記憶/索引等
# . 指定Dockerfile文件在當(dāng)前目錄下,也可以替換為一個(gè)具體的 Dockerfile 的路徑。
# 在docker中運(yùn)行ubuntu鏡像
$ docker run <相關(guān)參數(shù)> <鏡像 ID> <初始命令>
# 守護(hù)模式啟動(dòng)
$ docker run -it ubuntu:14.04
# 交互模式啟動(dòng)
$ docker run -it ubuntu:14.04 /bin/bash
# 指定端口號(hào)啟動(dòng)
$ docker run -p 80:80 birdben/ubuntu:v1
# 指定配置啟動(dòng)
$ sudo docker run -d -p 10.211.55.4:9999:22 birdben/ubuntu:v1 '/usr/sbin/sshd' -D
# 參數(shù):
# -d:表示以“守護(hù)模式”執(zhí)行,日志不會(huì)出現(xiàn)在輸出終端上。
# -i:表示以“交互模式”運(yùn)行容器,-i 則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)
# -t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行,-t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上
# -v:表示需要將本地哪個(gè)目錄掛載到容器中,格式:-v <宿主機(jī)目錄>:<容器目錄>,-v 標(biāo)記來(lái)創(chuàng)建一個(gè)數(shù)據(jù)卷并掛載到容器里。在一次 run 中多次使用可以掛載多個(gè)數(shù)據(jù)卷。
# -p:表示宿主機(jī)與容器的端口映射,此時(shí)將容器內(nèi)部的 22 端口映射為宿主機(jī)的 9999 端口,這樣就向外界暴露了 9999 端口,可通過(guò) Docker 網(wǎng)橋來(lái)訪問(wèn)容器內(nèi)部的 22 端口了。
# 注意:這里使用的是宿主機(jī)的 IP 地址:10.211.55.4,與對(duì)外暴露的端口號(hào) 9999,它映射容器內(nèi)部的端口號(hào) 22。ssh外部需要訪問(wèn):ssh root@10.211.55.4 -p 9999
# 不一定要使用“鏡像 ID”,也可以使用“倉(cāng)庫(kù)名:標(biāo)簽名”
# start 啟動(dòng)容器
$ docker start 117843ade696117843ade696
# stop 停止正在運(yùn)行的容器
$ docker stop 117843ade696117843ade696
# restart 重啟容器
$ docker restart 117843ade696117843ade696
# rm 刪除容器
$ docker rm 117843ade696117843ade696
# rmi 刪除鏡像
$ docker rmi ed9c93747fe1Deleted
# 登錄Docker Hub中心
$ docker login
# 發(fā)布上傳image(push)
$ docker push birdben/ubuntu:v1
當(dāng)利用 docker run 來(lái)創(chuàng)建容器時(shí),Docker 在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括:
1、檢查本地是否存在指定的鏡像,不存在就從公有倉(cāng)庫(kù)下載
2、利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
3、分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫(xiě)層
4、從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
5、從地址池配置一個(gè) ip 地址給容器
6、執(zhí)行用戶(hù)指定的應(yīng)用程序
7、執(zhí)行完畢后容器被終止
總結(jié)
關(guān)于Docker常用的基礎(chǔ)命令就基本總結(jié)這些,希望對(duì)有需要的朋友們能有所幫助,如果大家有疑問(wèn)可以留言交流。
相關(guān)文章
docker實(shí)現(xiàn)本地seata分布式環(huán)境搭建詳解
這篇文章主要為大家詳細(xì)介紹了docker實(shí)現(xiàn)本地seata分布式環(huán)境搭建的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-03-03
Docker搭建PHP運(yùn)行環(huán)境完整步驟(圖文教程)
PHP是一種廣泛使用的編程語(yǔ)言,被用于Web開(kāi)發(fā)和服務(wù)器管理等各種用途,而Docker則是一種非常流行的容器化平臺(tái),可以方便地管理應(yīng)用程序和環(huán)境,這篇文章主要給大家介紹了關(guān)于Docker搭建PHP運(yùn)行環(huán)境的完整步驟,需要的朋友可以參考下2023-09-09
使用 Azure Container Registry 儲(chǔ)存鏡像的問(wèn)題
Azure Container Registry(容器注冊(cè)表)是基于 Docker Registry 2.0規(guī)范的托管專(zhuān)用 Docker 注冊(cè)表服務(wù)。這篇文章主要介紹了使用 Azure Container Registry 儲(chǔ)存鏡像,需要的朋友可以參考下2021-05-05
在 Docker 環(huán)境中部署和運(yùn)行 Nginx 的方法
在當(dāng)今的技術(shù)領(lǐng)域,Docker 就像一位神奇的魔法師,能夠讓我們輕松地管理和部署各種應(yīng)用程序,這篇文章主要介紹了在 Docker 環(huán)境中部署和運(yùn)行 Nginx 的方法,需要的朋友可以參考下2024-12-12
docker安裝并持久化postgresql數(shù)據(jù)庫(kù)的操作步驟
這篇文章主要介紹了docker安裝并持久化postgresql數(shù)據(jù)庫(kù)的操作步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
聊聊Docker中容器的創(chuàng)建與啟停問(wèn)題
一個(gè)進(jìn)程可以視為一個(gè)被執(zhí)行的應(yīng)用程序,同樣,一個(gè)Docker容器可以視為一個(gè)運(yùn)行中的Docker鏡像,這篇文章主要介紹了Docker中容器的創(chuàng)建與啟停,需要的朋友可以參考下2022-06-06
Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解
bridge模式是Docker默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會(huì)為每一個(gè)容器分配N(xiāo)etwork Namespace、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上,下面這篇文章主要給大家介紹了關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-01-01
通過(guò)容器提交鏡像DockerCommit及推送鏡像DockerPush
這篇文章主要介紹了通過(guò)容器提交鏡像DockerCommit及推送鏡像DockerPush,文中通過(guò)詳細(xì)的示例代碼進(jìn)行了詳細(xì)分解,有需要的朋友可以借鑒參考下2021-09-09
Docker項(xiàng)目部署之從后端到前端部署詳細(xì)流程
在當(dāng)今的軟件開(kāi)發(fā)領(lǐng)域,容器化技術(shù)已經(jīng)成為了部署和管理應(yīng)用程序的重要手段,下面這篇文章主要給大家介紹了關(guān)于Docker項(xiàng)目部署之從后端到前端部署的相關(guān)資料,需要的朋友可以參考下2024-08-08

