91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker的介紹及簡單使用

發布時間:2021-07-20 17:50:00 來源:億速云 閱讀:209 作者:chen 欄目:大數據

本篇內容介紹了“docker的介紹及簡單使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.docker是什么?

docker是一個提供應用打包部署運行應用的容器化平臺。

應用程序 -> docker引擎-> 物理硬件

應用程序不再直接面向底層資源,而是面向中間層docker引擎來操作。

docker引擎包含:docker服務端, rest api ,docker客戶端。

通過這種結構,用戶可以通過客戶端很方便的管理多個服務端。

2.容器與鏡像

  • 鏡像:鏡像是只讀文件,提供運行程序完整的軟硬件資源。

  • 容器:容器是鏡像的實例,由docker負責創建,容器之間彼此隔離。

3. docker執行流程

docker pull redis

客戶端 --> Docker Daemon 檢查redis鏡像,若本地不存在-> 從遠程中央倉庫獲取鏡像

docker run redis

客戶端->Docker Daemon redis鏡像存在->創建容器,由redis對外暴露服務,對內容器就是一個完整的centos系統。

4.常用命令

  • docker pull 鏡像名<:tags> - 從遠程倉庫抽取鏡像

  • docker images - 查看本地下載的鏡像

  • docker run 鏡像名<:tags> - 創建容器,啟動應用

  • docker ps - 查看正在運行的鏡像

  • docker rm <-f> 容器id - 刪除容器

  • docker rmi <-f> 鏡像名:<:tags> - 刪除鏡像

5. 快速部署tomcat

docker run -p 8000:8080 -d tomcat:latest
# 在容器中部署最近版本的tomcat   hub.docker.com
# 端口映射-p 8000:8080  8000為宿主機端口,8080為tomcat端口
# -d 后臺運行

6. 容器內部結構

以tomcat容器為例: 包含tomcat, jdk, mini版linux系統

7.在容器中執行命令

docker exec -it【交互式方式執行命令】容器id/容器name 命令

docker exec -it cc0ebcaaef7a /bin/bash 進入容器bash

8.編寫Dockerfile

FROM tomcat:latest
MAINTAINER yz.com
WORKDIR /usr/local/tomcat/webapps
ADD docker-web ./docker-web
# 在Dockerfile目錄下執行打包
docker build -t yz.com/mywebapp.0.1 .
# 運行容器
docker run -p 8001:8080 yz.com/mywebapp.0.1
# 訪問 http://localhost:8001/docker-web/index.html
FROM java:8
MAINTAINER yz.com
WORKDIR /usr/local/apps/jars
ADD xx.jar ./xx.jar
ENTRYPOINT ["nohup","java","-jar","xx.jar","&"]

9.鏡像分層

Sending build context to Docker daemon  3.584kB
Step 1/4 : FROM tomcat:latest
 ---> 2ae23eb477aa
Step 2/4 : MAINTAINER yz.com
 ---> Using cache
 ---> b0efa3602df6
Step 3/4 : WORKDIR /usr/local/tomcat/webapps
 ---> Using cache
 ---> bf93f5630ca1
Step 4/4 : ADD docker-web ./docker-web
 ---> Using cache
 ---> 603504ab383f
Successfully built 603504ab383f
Successfully tagged dmall.com/inventory-app:0.2

每一個步驟都會產生一個臨時的鏡像, ---> Using cache 代表會使用之前執行過的步驟緩存。

10.Dockerfile基礎命令

FROM centos  # 制作基準鏡像(基于centos)
FROM scratch # 不依賴任何鏡像
# 盡量使用官方的Base Image
	
MAINTAINER yz.com
LABEL version = "1.0"
LABEL description = "鏡像描述"

WORKDIR /usr/local/xx  # 工作路徑,盡量使用絕對路徑,會自動創建目錄,并cd到當前目錄

ADD xx.jar ./     #復制xx.jar文件到 工作路徑
ADD test.tar.gz / #添加到根目錄并解壓
	
ENV JAVA_HOME /usr/local/java8  # 設置環境常量

11. Dockerfile運行指令

# 不同的執行時機。
RUN xx              #在build 構建時執行命令
ENTRYPOINT xx       #容器啟動時執行命令
CMD xx              #容器啟動后執行默認的命令或參數
11.1 RUN - 構建時運行
RUN yum install -y vim            #shell 命令格式
RUN ["yum","install","-y","vim"]  #Exec 命令格式
  • Shell 運行方式

使用shell執行時,當前shell是父進程,生成一個子shell進程, 在子shell中執行腳本。

腳本執行完畢,退出子shell,回到當前shell。

  • Exec 運行方式

使用Exec方式,會用Exec進程替換當前進程,并且保持pid不變。

執行完畢,直接退出,并不會退回之前的進程環境。

11.2 ENTRYPOINT - 啟動命令
  • ENTRYPOINT(入口點)用于在容器啟動時執行命令。

  • Dockerfile中只有最后一個ENTRYPOINT會被執行。

  • 推薦使用 exec格式

  • ENTRYPOINT一定會執行。

11.3 CMD - 默認執行命令
  • CMD用于設置默認執行的命令

  • 如果Dockerfile中出現多個CMD,則只有最后一個被執行。

  • 如容器啟動時附加指令,則CMD被忽略。

  • 推薦使用Exec格式執行命令

  • CMD不一定會被執行,如docker run yz.com/test_cmd:0.1 ls 后面跟一個命令之后,會替換cmd命令。

12. docker自定義構建redis鏡像

# 下載redis 源碼
wget http://download.redis.io/releases/redis-5.0.9.tar.gz

編寫Dockerfile文件

FROM centos
RUN ["yum", "install", "-y", "gcc", "gcc-c++", "net-tools", "make"]
WORKDIR /usr/local
ADD redis-5.0.9.tar.gz ./
WORKDIR /usr/local/redis-5.0.9/src
RUN make && make install
WORKDIR /usr/local/redis-5.0.9/
ADD redis-6379.conf ./
EXPOSE 6379
CMD ["redis-server", "redis-6379.conf"]
# 構建redis鏡像
docker build -t xx.com/redis-6379 ./

# 運行redis容器
docker run -p 6379:6379 xx.com/redis-6379

# 啟動關閉容器
docker start containerId
docker stop containerId

13. docker間的通信

因為容器每次啟動都會分配新的ip,那么怎么在容器間有效的通信呢?

13.1 單向通信
# 創建redis 6379
docker run -p 6379:6379 -d --name redis6379 redis

# 創建centos link redis6379
docker run --name centos --link redis6379 -it centos /bin/bash

# 測試能夠順利ping通
ping redis6379
64 bytes from redis6379 (172.17.0.4): icmp_seq=1 ttl=64 time=0.061 ms
13.2 基于Bridge的雙向通信
# 查看docker網絡
docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
6b60f6c242a3        bridge              bridge              local
b51d649d7adb        host                host                local
6c0f31888ef7        none                null                local

# 創建新的網橋
docker network create -d bridge my-bridge

# 查看網絡
docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
6b60f6c242a3        bridge              bridge              local
b51d649d7adb        host                host                local
68aa95b088c3        my-bridge           bridge              local
6c0f31888ef7        none                null                local

# 新開兩個centos容器
docker run -dit --name os1 centos
docker run -dit --name os2 centos

# 綁定到my-bridge
docker network connect my-bridge os1
docker network connect my-bridge os2

# 進入os1 ping os2
docker exec -it os1 bash

ping os2
PING os2 (172.18.0.3) 56(84) bytes of data.
64 bytes from os2.my-bridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.032 ms

# 進入os2 ping os1
ping os1
PING os1 (172.18.0.2) 56(84) bytes of data.
64 bytes from os1.my-bridge (172.18.0.2): icmp_seq=1 ttl=64 time=0.032 ms

14. 容器間的數據共享

宿主機掛載一個卷, 多個容器共享同一個卷的數據。

# 通過-v掛載宿主機目錄
docker run --name os3 -dit -v /root:/mnt/root centos bash

docker exec -it os3 bash
ls /mnt/root
# 創建共享容器
docker create --name webapp -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat /bin/true

# 共享容器掛載點
docker run --volumes-from webapp --name tomcat2 -p 18002:8080 -d tomcat

# 訪問宿主機18002端口,發現生效

利用這個特性可以將宿主機上面的靜態資源如頁面文件,共享給容器的資源目錄

“docker的介紹及簡單使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盖州市| 邹平县| 张家川| 潞城市| 光泽县| 新化县| 饶河县| 普兰县| 石台县| 马公市| 新余市| 锡林郭勒盟| 钦州市| 甘德县| 海盐县| 临沂市| 千阳县| 东丽区| 盐城市| 上犹县| 宁明县| 成都市| 德阳市| 合江县| 会泽县| 沈丘县| 嵊泗县| 呼玛县| 邢台县| 共和县| 信阳市| 大庆市| 英超| 陇南市| 聂荣县| 大渡口区| 进贤县| 洛隆县| 滁州市| 大邑县| 运城市|