Docker容器鏡像相關(guān)命令基本介紹與使用
一、Docker 介紹
Docker 是一個用于開發(fā)、發(fā)布和運行應(yīng)用程序的開放平臺。Docker 可以將應(yīng)用程序與基礎(chǔ)架構(gòu)分離(即 不再過于需要底層支持),以便我們可以快速交付軟件。使用 Docker,我們可以像管理應(yīng)用程序一樣管理基礎(chǔ)架構(gòu)。Docker 官方
Docker 優(yōu)勢:
靈活: 即使應(yīng)用過于復(fù)雜,我們也可以使用 Docker 來將應(yīng)用進(jìn)行容器化。
輕量級: 因為 Docker 容器是使用宿主機(jī)共享的內(nèi)核,所以不需要額外的硬件支持。
應(yīng)用隔離: 使用 Docker 運行的容器,可以隔離不同應(yīng)用程序間的互相影響(即,每個容器都是獨立的)
1.Docker 架構(gòu)
Docker 使用的是 C/S 架構(gòu),Docker Client 用于和 Docker 的守護(hù)進(jìn)程通信(守護(hù)進(jìn)程就是 Server),守護(hù)進(jìn)程可以用來構(gòu)建、運行和分發(fā) Docker 容器等操作。Docker Client 和守護(hù)進(jìn)程可以在同一系統(tǒng)上運行,或者將 Docker Client 遠(yuǎn)程連接到守護(hù)進(jìn)程。使用 REST API
協(xié)議,并通過 UNIX
套接字或網(wǎng)絡(luò)接口進(jìn)行通信。另一個 Docker Client 是 Docker Compose(允許我們將一組容器組成的應(yīng)用程序)
Docker 的架構(gòu)我們不需要過于關(guān)注,因為一般來說 Docker 的 Client 和 Docker 守護(hù)進(jìn)程都是在同一臺服務(wù)器上運行。
2.Docker 三大核心
這里要說的 Docker 三大核心,分別是 image
鏡像,container
容器,repository
倉庫;這可以說是 Docker 最重要的部分。
1)鏡像
Docker 鏡像是 Docker 容器運行時的只讀模板,鏡像可以用來創(chuàng)建 Docker 容器(每一個鏡像都由一系列的層組成)
2)容器
Docker 主要就是利用容器來運行應(yīng)用,一個 Docker 容器內(nèi)可以說包含了某個應(yīng)用運行所需要的環(huán)境。每一個 Docker 容器都是從鏡像創(chuàng)建出來的??梢哉f容器就是鏡像創(chuàng)建的運行實例,它可以被啟動,停止,刪除等。而且每個容器都是互相隔離的,保證安全的平臺。
3)倉庫
Docker 倉庫主要就是 用來集中保存鏡像的地方,當(dāng)我們創(chuàng)建了自己的鏡像后,可以使用 push
命令將它上傳到公共倉庫(Public)或者私用倉庫(Private),這樣的好處是,當(dāng)我們需要在另外的服務(wù)器上使用這個鏡像時,可以直接從倉庫進(jìn)行拉?。ㄋ俣认鄬^快)
二、Docker 安裝
準(zhǔn)備工作:
主機(jī)名 | 操作系統(tǒng) | IP 地址 | 軟件包 |
---|---|---|---|
Docker | CentOS 7.x | 192.168.1.4 | docker-ce-19.03.12 docker-ce-cli-19.03.12 |
1.下載 Docker 軟件包
1)安裝基礎(chǔ)包
[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
2)配置 Docker 的 yum 源
[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@Docker ~]# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
3)安裝 Docker
我們可以使用 yum list docker-ce --showduplicates | sort -r
命令來查看 Docker 的所有版本。
[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@Docker ~]# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
4)啟動 Docker 并驗證
[root@Docker ~]# systemctl enable docker --now # 配置開機(jī)自啟并啟動 [root@Docker ~]# docker version # 查看 Docker 版本
5)配置 Docker 加速器
[root@Docker ~]# cat <<END > /etc/docker/daemon.json { "registry-mirrors": [ "https://ipbtg5l0.mirror.aliyuncs.com" ] } END [root@Docker ~]# systemctl daemon-reload && systemctl restart docker # 重啟 Docker
2.Docker 基礎(chǔ)命令介紹
下面我們主要介紹鏡像和容器相關(guān)的命令,因為倉庫相關(guān)命令不是很多,也就是 pull
push
等命令。
1)鏡像相關(guān)命令
1)查看當(dāng)前 Docker 的所有鏡像
// 因為我們的 Docker 是剛安裝的. 所以沒有顯示任何鏡像 [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
上面輸出結(jié)果分別是:鏡像名、鏡像對應(yīng)的標(biāo)簽、鏡像 ID 號、創(chuàng)建時間、鏡像大小。
2)查看 Docker 倉庫中的 busybox
鏡像
[root@Docker ~]# docker search busybox NAME DESCRIPTION STARS OFFICIAL AUTOMATED busybox Busybox base image. 2447 [OK] progrium/busybox 70 [OK] radial/busyboxplus Full-chain, Internet enabled, busybox made f… 45 [OK] ......
我們可以使用 search
來搜索 Docker 倉庫中的鏡像,上面輸出結(jié)果分別是:鏡像名、描述信息、標(biāo)星、官方鏡像、自動構(gòu)建。
3)拉取 busybox
鏡像
[root@Docker ~]# docker pull busybox:1.28.4 # 指定鏡像版本號拉取 (latest 表示最新版) 1.28.4: Pulling from library/busybox # 從這個倉庫進(jìn)行拉取 07a152489297: Pull complete # 拉取完成 Digest: sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 # 這就是鏡像的層 (也算是個標(biāo)識符) Status: Downloaded newer image for busybox:1.28.4 # 下載的新鏡像名稱和版本號 docker.io/library/busybox:1.28.4 # 完整倉庫地址
4)給鏡像進(jìn)行打標(biāo)簽(類似于別名操作)
[root@Docker ~]# docker tag busybox:1.28.4 testbusybox:test
tag
命令在有些時候還是蠻關(guān)鍵的,比如說我們要拉取的鏡像在國外,但是由于網(wǎng)絡(luò)原因,導(dǎo)致我們無法進(jìn)行拉取,此時我們可以在國內(nèi)的鏡像倉庫拉取個同樣的鏡像,然后來使用 tag
命令來進(jìn)行打標(biāo)簽操作,改成要拉取國外鏡像的名稱即可。
5)將 busybox
鏡像導(dǎo)出
[root@Docker ~]# docker save -o busybox.tgz busybox:1.28.4
6)將 busybox
鏡像導(dǎo)入
[root@Docker ~]# docker load -i busybox.tgz
docker rmi
:通過鏡像名進(jìn)行刪除(加上 -f
可以實現(xiàn)基于鏡像 ID 刪除)
2)容器相關(guān)命令
1)創(chuàng)建一個容器
[root@Docker ~]# docker create -it --name busybox busybox:1.28.4 /bin/sh
-i
:表示讓容器的輸入保持打開;
-t
:表示給容器分配一個偽終端(就是我們后面加的 /bin/bash
)
docker ps -a
:表示查看所有運行的容器(不管容器處于任何狀態(tài),都會進(jìn)行顯示)
2)啟動一個容器
[root@Docker ~]# docker start busybox[root@Docker ~]# docker ps# 查看當(dāng)前處于運行狀態(tài)的容器
當(dāng)我們要關(guān)閉容器時,可以使用 stop
;重啟時,可以使用 restart
命令來進(jìn)行操作。
3)刪除容器
[root@Docker ~]# docker stop busybox [root@Docker ~]# docker rm busybox # 我們可以通過容器名或者容器 ID 來進(jìn)行刪除
4)直接運行容器
[root@Docker ~]# docker run -d --name busybox busybox:1.28.4 /bin/sh
docker exec -it busybox /bin/sh
命令的作用就是可以使我們進(jìn)入容器內(nèi)。
3.使用 Docker 實現(xiàn) Nginx 網(wǎng)站
[root@Docker ~]# docker pull nginx:1.18.0 [root@Docker ~]# docker images [root@Docker ~]# docker run -d --name nginx -p 1888:80 -v /zhangsan:/usr/share/nginx/html/ nginx:1.18.0 [root@Docker ~]# echo "Hello 河北彭于晏" > /zhangsan/index.html [root@Docker ~]# curl 127.0.0.1:1888
-p
:指定容器運行時的端口(前面是宿主機(jī)端口,后面是容器內(nèi)端口;-P
這單個字母是用來讓容器實現(xiàn) 隨機(jī)端口映射 的)
-v
:指定數(shù)據(jù)卷,相當(dāng)于是掛載命令,我們可以將宿主機(jī)的目錄掛載到容器內(nèi)(可以增加多個 -v
來配置多個數(shù)據(jù)卷)
以上就是Docker容器鏡像相關(guān)命令基本介紹與使用的詳細(xì)內(nèi)容,更多關(guān)于Docker容器鏡像命令的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker 的java編譯環(huán)境構(gòu)建詳細(xì)介紹
這篇文章主要介紹了docker 的java編譯環(huán)境構(gòu)建詳細(xì)介紹的相關(guān)資料,具有一定的參考價值,需要的朋友可以參考下2016-11-11數(shù)據(jù)卷(Data Volumes)及dockefile詳解
在生產(chǎn)環(huán)境中使用Docker,往往需要對數(shù)據(jù)進(jìn)行持久化,或者需要在多個容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作,今天給大家介紹下數(shù)據(jù)卷(Data Volumes)及dockefile的相關(guān)知識,感興趣的朋友一起看看吧2023-01-01docker-compose創(chuàng)建網(wǎng)橋,添加子網(wǎng),刪除網(wǎng)卡的實現(xiàn)
這篇文章主要介紹了docker-compose創(chuàng)建網(wǎng)橋,添加子網(wǎng),刪除網(wǎng)卡的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Docker鏡像的遷移與備份及Dockerflie 使用方法詳解
遷移和備份主要有三個操作命令將容器保存為鏡像、備份鏡像(將鏡像導(dǎo)出為一個文件)、鏡像的遷移與恢復(fù),這篇文章主要介紹了Docker鏡像的遷移與備份、Dockerflie 使用方法,需要的朋友可以參考下2022-07-07