網站首頁 編程語言 正文
一、Docker 介紹
Docker 是一個用于開發、發布和運行應用程序的開放平臺。Docker 可以將應用程序與基礎架構分離(即 不再過于需要底層支持),以便我們可以快速交付軟件。使用 Docker,我們可以像管理應用程序一樣管理基礎架構。Docker 官方
Docker 優勢:
靈活: 即使應用過于復雜,我們也可以使用 Docker 來將應用進行容器化。
輕量級: 因為 Docker 容器是使用宿主機共享的內核,所以不需要額外的硬件支持。
應用隔離: 使用 Docker 運行的容器,可以隔離不同應用程序間的互相影響(即,每個容器都是獨立的)
1.Docker 架構
Docker 使用的是 C/S 架構,Docker Client 用于和 Docker 的守護進程通信(守護進程就是 Server),守護進程可以用來構建、運行和分發 Docker 容器等操作。Docker Client 和守護進程可以在同一系統上運行,或者將 Docker Client 遠程連接到守護進程。使用 REST API
協議,并通過 UNIX
套接字或網絡接口進行通信。另一個 Docker Client 是 Docker Compose(允許我們將一組容器組成的應用程序)
Docker 的架構我們不需要過于關注,因為一般來說 Docker 的 Client 和 Docker 守護進程都是在同一臺服務器上運行。
2.Docker 三大核心
這里要說的 Docker 三大核心,分別是 image
鏡像,container
容器,repository
倉庫;這可以說是 Docker 最重要的部分。
1)鏡像
Docker 鏡像是 Docker 容器運行時的只讀模板,鏡像可以用來創建 Docker 容器(每一個鏡像都由一系列的層組成)
2)容器
Docker 主要就是利用容器來運行應用,一個 Docker 容器內可以說包含了某個應用運行所需要的環境。每一個 Docker 容器都是從鏡像創建出來的。可以說容器就是鏡像創建的運行實例,它可以被啟動,停止,刪除等。而且每個容器都是互相隔離的,保證安全的平臺。
3)倉庫
Docker 倉庫主要就是 用來集中保存鏡像的地方,當我們創建了自己的鏡像后,可以使用 push
命令將它上傳到公共倉庫(Public)或者私用倉庫(Private),這樣的好處是,當我們需要在另外的服務器上使用這個鏡像時,可以直接從倉庫進行拉取(速度相對較快)
二、Docker 安裝
準備工作:
主機名 | 操作系統 | IP 地址 | 軟件包 |
---|---|---|---|
Docker | CentOS 7.x
|
192.168.1.4 |
docker-ce-19.03.12 docker-ce-cli-19.03.12
|
1.下載 Docker 軟件包
1)安裝基礎包
[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 # 配置開機自啟并啟動 [root@Docker ~]# docker version # 查看 Docker 版本
5)配置 Docker 加速器
[root@Docker ~]# cat </etc/docker/daemon.json { "registry-mirrors": [ "https://ipbtg5l0.mirror.aliyuncs.com" ] } END [root@Docker ~]# systemctl daemon-reload && systemctl restart docker # 重啟 Docker
2.Docker 基礎命令介紹
下面我們主要介紹鏡像和容器相關的命令,因為倉庫相關命令不是很多,也就是 pull
push
等命令。
1)鏡像相關命令
1)查看當前 Docker 的所有鏡像
// 因為我們的 Docker 是剛安裝的. 所以沒有顯示任何鏡像 [root@Docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
上面輸出結果分別是:鏡像名、鏡像對應的標簽、鏡像 ID 號、創建時間、鏡像大小。
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 倉庫中的鏡像,上面輸出結果分別是:鏡像名、描述信息、標星、官方鏡像、自動構建。
3)拉取 busybox
鏡像
[root@Docker ~]# docker pull busybox:1.28.4 # 指定鏡像版本號拉取 (latest 表示最新版) 1.28.4: Pulling from library/busybox # 從這個倉庫進行拉取 07a152489297: Pull complete # 拉取完成 Digest: sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47 # 這就是鏡像的層 (也算是個標識符) Status: Downloaded newer image for busybox:1.28.4 # 下載的新鏡像名稱和版本號 docker.io/library/busybox:1.28.4 # 完整倉庫地址
4)給鏡像進行打標簽(類似于別名操作)
[root@Docker ~]# docker tag busybox:1.28.4 testbusybox:test
tag
命令在有些時候還是蠻關鍵的,比如說我們要拉取的鏡像在國外,但是由于網絡原因,導致我們無法進行拉取,此時我們可以在國內的鏡像倉庫拉取個同樣的鏡像,然后來使用 tag
命令來進行打標簽操作,改成要拉取國外鏡像的名稱即可。
5)將 busybox
鏡像導出
[root@Docker ~]# docker save -o busybox.tgz busybox:1.28.4
6)將 busybox
鏡像導入
[root@Docker ~]# docker load -i busybox.tgz
docker rmi
:通過鏡像名進行刪除(加上 -f
可以實現基于鏡像 ID 刪除)
2)容器相關命令
1)創建一個容器
[root@Docker ~]# docker create -it --name busybox busybox:1.28.4 /bin/sh
-i
:表示讓容器的輸入保持打開;
-t
:表示給容器分配一個偽終端(就是我們后面加的 /bin/bash
)
docker ps -a
:表示查看所有運行的容器(不管容器處于任何狀態,都會進行顯示)
2)啟動一個容器
[root@Docker ~]# docker start busybox[root@Docker ~]# docker ps# 查看當前處于運行狀態的容器
當我們要關閉容器時,可以使用 stop
;重啟時,可以使用 restart
命令來進行操作。
3)刪除容器
[root@Docker ~]# docker stop busybox [root@Docker ~]# docker rm busybox # 我們可以通過容器名或者容器 ID 來進行刪除
4)直接運行容器
[root@Docker ~]# docker run -d --name busybox busybox:1.28.4 /bin/sh
docker exec -it busybox /bin/sh
命令的作用就是可以使我們進入容器內。
3.使用 Docker 實現 Nginx 網站
[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
:指定容器運行時的端口(前面是宿主機端口,后面是容器內端口;-P
這單個字母是用來讓容器實現 隨機端口映射 的)
-v
:指定數據卷,相當于是掛載命令,我們可以將宿主機的目錄掛載到容器內(可以增加多個 -v
來配置多個數據卷)
原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/122448524
相關推薦
- 2022-03-09 GO使用socket和channel實現簡單控制臺聊天室_Golang
- 2023-05-29 批標準化層?tf.keras.layers.Batchnormalization()解析_pytho
- 2022-03-16 C#語言主要語言區域_C#教程
- 2022-12-26 python畫圖時linestyle,color和loc參數的設置方式_python
- 2022-11-18 一文搞懂正則表達式基礎語法以及如何應用_正則表達式
- 2023-12-09 出現錯誤:SLF4J: Class path contains multiple SLF4J bin
- 2022-11-09 Android利用Canvas標點畫線并加入位移動畫(1)_Android
- 2022-07-14 React?Native采用Hermes熱更新打包方案詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支