www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > 21ic電子網(wǎng)
[導(dǎo)讀]1、引言 1.1 Docker是什么 Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國(guó)期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開(kāi)源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。 Docker 使用 Google 公司推出的 Go 語(yǔ)言 進(jìn)行開(kāi)發(fā)實(shí)現(xiàn)。 do

ckground-color: rgb(255, 255, 255);" data-mpa-powered-by="yiban.io">

1、引言

1.1 Docker是什么

Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國(guó)期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開(kāi)源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。
Docker 使用 Google 公司推出的 Go 語(yǔ)言 進(jìn)行開(kāi)發(fā)實(shí)現(xiàn)。
docker是linux容器的一種封裝,提供簡(jiǎn)單易用的容器使用接口。它是最流行的Linux容器解決方案。
docker的接口相當(dāng)簡(jiǎn)單,用戶(hù)可以方便的創(chuàng)建、銷(xiāo)毀容器。
docker將應(yīng)用程序與程序的依賴(lài),打包在一個(gè)文件里面。運(yùn)行這個(gè)文件就會(huì)生成一個(gè)虛擬容器。
程序運(yùn)行在虛擬容器里,如同在真實(shí)物理機(jī)上運(yùn)行一樣,有了docker,就不用擔(dān)心環(huán)境問(wèn)題了。

1.2 應(yīng)用場(chǎng)景

web應(yīng)用的自動(dòng)化打包和發(fā)布
自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他應(yīng)用

1.3 區(qū)別

1、物理機(jī)
萬(wàn)字長(zhǎng)文!入門(mén)Docker,這一篇就夠了
2、虛擬機(jī)
萬(wàn)字長(zhǎng)文!入門(mén)Docker,這一篇就夠了
3、docker容器
萬(wàn)字長(zhǎng)文!入門(mén)Docker,這一篇就夠了

1.4 Docker的三大概念及優(yōu)勢(shì)

  • 鏡像 image

  • 容器 container

  • 倉(cāng)庫(kù) repository

docker容器的優(yōu)勢(shì)
1、更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開(kāi)銷(xiāo),Docker 對(duì)系統(tǒng) 資源的利用率更高。
無(wú)論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳 統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)技術(shù),一個(gè)相同配置的主機(jī),往往可以運(yùn) 行更多數(shù)量的應(yīng)用。
2、更快速的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用,由于直接 運(yùn)行于宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)、甚至毫秒級(jí)的啟 動(dòng)時(shí)間。大大的節(jié)約了開(kāi)發(fā)、測(cè)試、部署的時(shí)間。
3、一致的運(yùn)行環(huán)境
開(kāi)發(fā)過(guò)程中一個(gè)常見(jiàn)的問(wèn)題是環(huán)境一致性問(wèn)題。由于開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán) 境不一致,導(dǎo)致有些 bug 并未在開(kāi)發(fā)過(guò)程中被發(fā)現(xiàn)。
而 Docker 的鏡像提供了除內(nèi) 核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性,從而不會(huì)再出現(xiàn) “這段代碼 在我機(jī)器上沒(méi)問(wèn)題啊” 這類(lèi)問(wèn)題。
4、持續(xù)交付和部署
對(duì)開(kāi)發(fā)和運(yùn)維(DevOps)人員來(lái)說(shuō),最希望的就是一次創(chuàng)建或配置,可以在任意 地方正常運(yùn)行。
使用 Docker 可以通過(guò)定制應(yīng)用鏡像來(lái)實(shí)現(xiàn)持續(xù)集成、持續(xù)交付、部署。開(kāi)發(fā)人員 可以通過(guò) Dockerfile 來(lái)進(jìn)行鏡像構(gòu)建,并結(jié)合持續(xù)集成(Continuous Integration) 系 統(tǒng)進(jìn)行集成測(cè)試,而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進(jìn)行自動(dòng)部署。
而且使用 Dockerfile 使鏡像構(gòu)建透明化,不僅僅開(kāi)發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán) 境,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。
5、更輕松的遷移
由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。Docker 可以在 很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云,甚至是筆記本,其運(yùn) 行結(jié)果是一致的。
因此用戶(hù)可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用,遷移到另一 個(gè)平臺(tái)上,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無(wú)法正常運(yùn)行的情況。

2、Docker安裝

系統(tǒng)環(huán)境:docker最低支持centos7且在64位平臺(tái)上,內(nèi)核版本在3.10以上
版本:社區(qū)版,企業(yè)版(包含了一些收費(fèi)服務(wù))
官方版安裝教程(英文)
https://docs.docker.com/install/linux/docker-ce/centos/#upgrade-docker-after-using-the-convenience-script
博主版安裝教程:
         
# 安裝docker
yum  install docker
# 啟動(dòng)docker 
systemctl  start/ status docker 
# 查看docker啟動(dòng)狀態(tài)
docker  version 
配置加速器
簡(jiǎn)介:DaoCloud 加速器 是廣受歡迎的 Docker 工具,解決了國(guó)內(nèi)用戶(hù)訪問(wèn) Docker Hub 緩慢的問(wèn)題。DaoCloud 加速器結(jié)合國(guó)內(nèi)的 CDN 服務(wù)與協(xié)議層優(yōu)化,成倍的提升了下載速度。
DaoCloud官網(wǎng):
https://www.daocloud.io/mirror#accelerator-doc
         
# 一條命令加速(記得重啟docker)
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

3、Docker基礎(chǔ)命令

docker --help(中文注解)
         
Usage:
docker [OPTIONS] COMMAND [arg...]
       docker daemon [ --help | ... ]
       docker [ --help | -v | --version ]
A
self-sufficient runtime  for containers.

Options:
  --config=~/.docker              Location  of client config files   #客戶(hù)端配置文件的位置
  -D, --debug= false               Enable debug mode   #啟用Debug調(diào)試模式
  -H, --host=[]                   Daemon socket(s)  to connect  to   #守護(hù)進(jìn)程的套接字(Socket)連接
  -h, --help= false                Print usage   #打印使用
  -l, --log-level=info             Set the logging level   #設(shè)置日志級(jí)別
  --tls= false                     Use TLS; implied  by--tlsverify   #
  --tlscacert=~/.docker/ca.pem    Trust certs signed only  by this CA   #信任證書(shū)簽名CA
  --tlscert=~/.docker/cert.pem    Path  to TLS certificate file   #TLS證書(shū)文件路徑
  --tlskey=~/.docker/ key.pem      Path  to TLS  key file   #TLS密鑰文件路徑
  --tlsverify= false               Use TLS  and verify the remote   #使用TLS驗(yàn)證遠(yuǎn)程
  -v, --version= false             Print version information  and quit   #打印版本信息并退出

Commands:
    attach    Attach  to a running container   #當(dāng)前shell下attach連接指定運(yùn)行鏡像
    build     Build an image  from a Dockerfile   #通過(guò)Dockerfile定制鏡像
    commit    Create a  new image  from a container 's changes  #提交當(dāng)前容器為新的鏡像
    cp    Copy files/folders  from a container  to a HOSTDIR  or  to STDOUT   #從容器中拷貝指定文件或者目錄到宿主機(jī)中
    create    Create a  new container   #創(chuàng)建一個(gè)新的容器,同run 但不啟動(dòng)容器
    diff    Inspect changes  on a container 's filesystem  #查看docker容器變化
    events     Get real time events  from the server #從docker服務(wù)獲取容器實(shí)時(shí)事件
    exec    Run a command  in a running container #在已存在的容器上運(yùn)行命令
    export    Export a container 's filesystem as a tar archive  #導(dǎo)出容器的內(nèi)容流作為一個(gè)tar歸檔文件(對(duì)應(yīng)import)
    history    Show the history  of an image   #展示一個(gè)鏡像形成歷史
    images    List images   #列出系統(tǒng)當(dāng)前鏡像
    import    Import the contents  from a tarball  to create a filesystem image   #從tar包中的內(nèi)容創(chuàng)建一個(gè)新的文件系統(tǒng)映像(對(duì)應(yīng)export)
    info    Display system-wide information   #顯示系統(tǒng)相關(guān)信息
    inspect     Return low-level information  on a container  or image   #查看容器詳細(xì)信息
    kill    Kill a running container   #kill指定docker容器
    load    Load an image  from a tar archive  or STDIN   #從一個(gè)tar包中加載一個(gè)鏡像(對(duì)應(yīng)save)
    login    Register  or log  in  to a Docker registry #注冊(cè)或者登陸一個(gè)docker源服務(wù)器
    logout    Log out  from a Docker registry   #從當(dāng)前Docker registry退出
    logs    Fetch the logs  of a container   #輸出當(dāng)前容器日志信息
    pause    Pause all processes within a container #暫停容器
    port    List port mappings  or a specific mapping  for the CONTAINER   #查看映射端口對(duì)應(yīng)的容器內(nèi)部源端口
    ps    List containers   #列出容器列表
    pull    Pull an image  or a repository  from a registry   #從docker鏡像源服務(wù)器拉取指定鏡像或者庫(kù)鏡像
    push    Push an image  or a repository  to a registry   #推送指定鏡像或者庫(kù)鏡像至docker源服務(wù)器
    rename    Rename a container   #重命名容器
    restart    Restart a running container   #重啟運(yùn)行的容器
    rm    Remove one  or more containers   #移除一個(gè)或者多個(gè)容器
    rmi    Remove one  or more images   #移除一個(gè)或多個(gè)鏡像(無(wú)容器使用該鏡像才可以刪除,否則需要?jiǎng)h除相關(guān)容器才可以繼續(xù)或者-f強(qiáng)制刪除)
    run    Run a command  in a  new container   #創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
    save    Save an image(s)  to a tar archive #保存一個(gè)鏡像為一個(gè)tar包(對(duì)應(yīng)load)
    search    Search the Docker Hub  for images   #在docker
hub中搜索鏡像
    start    Start one  or more stopped containers #啟動(dòng)容器
    stats    Display a live stream  of container(s) resource usage statistics   #統(tǒng)計(jì)容器使用資源
     stop     Stop a running container   #停止容器
    tag         Tag an image  into a repository   #給源中鏡像打標(biāo)簽
    top       Display the running processes  of a container  #查看容器中運(yùn)行的進(jìn)程信息
    unpause    Unpause all processes within a container   #取消暫停容器
    version    Show the Docker version information #查看容器版本號(hào)
    wait         Block  until a container stops,  then print its  exit code   #截取容器停止時(shí)的退出狀態(tài)值

Run  'docker COMMAND --help' for more information on a command.  #運(yùn)行docker命令在幫助可以獲取更多信息
docker search  hello-docker   # 搜索hello-docker的鏡像
docker search centos  # 搜索centos鏡像
docker pull hello-docker  # 獲取centos鏡像
docker run  hello-world    #運(yùn)行一個(gè)docker鏡像,產(chǎn)生一個(gè)容器實(shí)例(也可以通過(guò)鏡像id前三位運(yùn)行)
docker image ls   # 查看本地所有鏡像
docker images   # 查看docker鏡像
docker image rmi hello-docker  # 刪除centos鏡像
docker ps   #列出正在運(yùn)行的容器(如果創(chuàng)建容器中沒(méi)有進(jìn)程正在運(yùn)行,容器就會(huì)立即停止)
docker ps -a   # 列出所有運(yùn)行過(guò)的容器記錄
docker save centos > /opt/centos.tar.gz   # 導(dǎo)出docker鏡像至本地
docker load < /opt/centos.tar.gz    #導(dǎo)入本地鏡像到docker鏡像庫(kù)
docker  stop  `docker ps -aq`   # 停止所有正在運(yùn)行的容器
docker  rm `docker ps -aq`     # 一次性刪除所有容器記錄
docker rmi  `docker images -aq`    # 一次性刪除所有本地的鏡像記錄

3.1 啟動(dòng)容器的兩種方式

容器是運(yùn)行應(yīng)用程序的,所以必須得先有一個(gè)操作系統(tǒng)為基礎(chǔ)
1、基于鏡像新建一個(gè)容器并啟動(dòng)
         
# 1. 后臺(tái)運(yùn)行一個(gè)docker
docker run -d centos /bin/sh -c "while true; do echo 正在運(yùn)行; sleep 1;done"
     # -d  后臺(tái)運(yùn)行容器
     # /bin/sh  指定使用centos的bash解釋器
     # -c 運(yùn)行一段shell命令
     # "while true;do echo 正在運(yùn)行; sleep 1;done"  在linux后臺(tái),每秒中打印一次正在運(yùn)行
docker ps   # 檢查容器進(jìn)程
docker  logs  -f  容器id/名稱(chēng)   # 不間斷打印容器的日志信息 
docker  stop centos   # 停止容器

# 2. 啟動(dòng)一個(gè)bash終端,允許用戶(hù)進(jìn)行交互
docker run  --name mydocker -it centos /bin/bash  
     # --name  給容器定義一個(gè)名稱(chēng)
     # -i  讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)
     # -t 讓Docker分配一個(gè)偽終端,并綁定到容器的標(biāo)準(zhǔn)輸入上
     # /bin/bash 指定docker容器,用shell解釋器交互
當(dāng)利用docker run來(lái)創(chuàng)建容器時(shí),Docker在后臺(tái)運(yù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í)行完畢后容器被終止

2、將一個(gè)終止?fàn)顟B(tài)(stopped)的容器重新啟動(dòng)
         
[root@localhost ~] # docker ps -a  # 先查詢(xún)記錄
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
ee92fcf6f32d        centos               "/bin/bash"               4 days ago          Exited ( 1373 days ago                                kickass_raman

[root@localhost ~] # docker start ee9  # 再啟動(dòng)這個(gè)容器
ee9

[root@localhost ~] # docker exec -it  ee9 /bin/bash  # 進(jìn)入容器交互式界面
[root@ee92fcf6f32d /] #   # 注意看用戶(hù)名,已經(jīng)變成容器用戶(hù)名

3.2 提交創(chuàng)建自定義鏡像

         
# 1.我們進(jìn)入交互式的centos容器中,發(fā)現(xiàn)沒(méi)有vim命令
    docker run -it centos
# 2.在當(dāng)前容器中,安裝一個(gè)vim
    yum  install -y vim
# 3.安裝好vim之后,exit退出容器
     exit
# 4.查看剛才安裝好vim的容器記錄
    docker  container ls -a
# 5.提交這個(gè)容器,創(chuàng)建新的image
    docker  commit  059fdea031ba chaoyu/centos-vim
# 6.查看鏡像文件
    docker images
REPOSITORY          TAG                 IMAGE  ID            CREATED              SIZE
chaoyu/centos-vim   latest              fd2685ae25fe         5 minutes ago   

3.3 外部訪問(wèn)容器

容器中可以運(yùn)行網(wǎng)絡(luò)應(yīng)用,但是要讓外部也可以訪問(wèn)這些應(yīng)用,可以通過(guò)-p或-P參數(shù)指定端口映射。
         
docker run -d -P training/webapp python app.py
   # -P 參數(shù)會(huì)隨機(jī)映射端口到容器開(kāi)放的網(wǎng)絡(luò)端口

# 檢查映射的端口
docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED            STATUS              PORTS                     NAMES
cfd632821d7a        training/webapp      "python app.py"      21 seconds ago      Up  20 seconds        0.0.0.0:32768-> 5000/tcp   brave_fermi
#宿主機(jī)ip:32768 映射容器的5000端口

# 查看容器日志信息
docker logs -f cfd   # #不間斷顯示log

# 也可以通過(guò)-p參數(shù)指定映射端口
docker run -d -p  9000: 5000 training/webapp python app.py
打開(kāi)瀏覽器訪問(wèn)服務(wù)器的9000端口, 內(nèi)容顯示 Hello world!表示正常啟動(dòng)
(如果訪問(wèn)失敗的話,檢查自己的防火墻,以及云服務(wù)器的安全組)

4、利用dockerfile定制鏡像

鏡像是容器的基礎(chǔ),每次執(zhí)行docker run的時(shí)候都會(huì)指定哪個(gè)鏡像作為容器運(yùn)行的基礎(chǔ)。我們之前的例子都是使用來(lái)自docker hub的鏡像,直接使用這些鏡像只能滿(mǎn)足一定的需求,當(dāng)鏡像無(wú)法滿(mǎn)足我們的需求時(shí),就得自定制這些鏡像。
鏡像的定制就是定制每一層所添加的配置、文件。如果可以吧每一層修改、安裝、構(gòu)建、操作的命令都寫(xiě)入到一個(gè)腳本,用腳本來(lái)構(gòu)建、定制鏡像,這個(gè)腳本就是dockerfile。
Dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令 構(gòu)建一層,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建。
參數(shù)詳解
         
FROM scratch  #制作base image 基礎(chǔ)鏡像,盡量使用官方的image作為base image
FROM centos  #使用base image
FROM ubuntu:14.04  #帶有tag的base image

LABEL version=“1.0”  #容器元信息,幫助信息,Metadata,類(lèi)似于代碼注釋
LABEL maintainer=“yc_uuu@163.com "

#對(duì)于復(fù)雜的RUN命令,避免無(wú)用的分層,多條命令用反斜線換行,合成一條命令!
RUN yum update && yum install -y vim 
    Python-dev #反斜線換行
RUN /bin/bash -c "
source  $HOME/.bashrc; echo  $HOME

WORKDIR /root  #相當(dāng)于linux的cd命令,改變目錄,盡量使用絕對(duì)路徑?。?!不要用RUN cd
WORKDIR / test  # 如果沒(méi)有就自動(dòng)創(chuàng)建
WORKDIR demo  # 再進(jìn)入demo文件夾
RUN  pwd      # 打印結(jié)果應(yīng)該是/test/demo

ADD and COPY 
ADD hello /   # 把本地文件添加到鏡像中,吧本地的hello可執(zhí)行文件拷貝到鏡像的/目錄
ADD test.tar.gz /   # 添加到根目錄并解壓

WORKDIR /root
ADD hello  test/   # 進(jìn)入/root/ 添加hello可執(zhí)行命令到test目錄下,也就是/root/test/hello 一個(gè)絕對(duì)路徑
COPY hello  test/   # 等同于上述ADD效果

ADD與COPY
   - 優(yōu)先使用COPY命令
    -ADD除了COPY功能還有解壓功能
添加遠(yuǎn)程文件/目錄使用curl或wget

ENV  # 環(huán)境變量,盡可能使用ENV增加可維護(hù)性
ENV MYSQL_VERSION 5.6  # 設(shè)置一個(gè)mysql常量
RUN yum install -y mysql-server=“ ${MYSQL_VERSION}” 
進(jìn)階知識(shí)(了解)
         
VOLUME  and EXPOSE 
存儲(chǔ)和網(wǎng)絡(luò)

RUN  and CMD  and ENTRYPOINT
RUN:執(zhí)行命令并創(chuàng)建新的Image Layer
CMD:設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令和參數(shù)
ENTRYPOINT:設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令

Shell格式和Exec格式
RUN yum install -y vim
CMD  echo ”hello docker”
ENTRYPOINT  echo “hello docker”

Exec格式
RUN [“apt-get”,”install”,”-y”,”vim”]
CMD [“/bin/ echo”,”hello docker”]
ENTRYPOINT [“/bin/ echo”,”hello docker”]


通過(guò)shell格式去運(yùn)行命令,會(huì)讀取$name指令,而exec格式是僅僅的執(zhí)行一個(gè)命令,而不是shell指令
cat Dockerfile
    FROM centos
    ENV name Docker
    ENTRYPOINT [“/bin/ echo”,”hello $name”] #這個(gè)僅僅是執(zhí)行echo命令,讀取不了shell變量
    ENTRYPOINT  [“/bin/bash”,”-c”,” echo hello $name "]

CMD
容器啟動(dòng)時(shí)默認(rèn)執(zhí)行的命令
如果docker run指定了其他命令(docker run -it [image] /bin/bash ),CMD命令被忽略
如果定義多個(gè)CMD,只有最后一個(gè)執(zhí)行

ENTRYPOINT
讓容器以應(yīng)用程序或服務(wù)形式運(yùn)行
不會(huì)被忽略,一定會(huì)執(zhí)行
最佳實(shí)踐:寫(xiě)一個(gè)shell腳本作為entrypoint
COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT [“docker-entrypoint.sh]
EXPOSE 27017
CMD [“mongod”]

[root@master home]# more Dockerfile
FROm centos
ENV name Docker
#CMD ["
/bin/bash ","-c "," echo hello $name "]
ENTRYPOINT ["
/bin/bash ","-c "," echo hello $name”]

5、發(fā)布到倉(cāng)庫(kù)

5.1 docker hub共有鏡像發(fā)布

docker提供了一個(gè)類(lèi)似于github的倉(cāng)庫(kù)docker hub,官方網(wǎng)站(需注冊(cè)使用)
https://hub.docker.com/
         
# 注冊(cè)docker id后,在linux中登錄dockerhub
    docker login

# 注意要保證image的tag是賬戶(hù)名,如果鏡像名字不對(duì),需要改一下tag
    docker tag chaoyu/centos-vim peng104/centos-vim
     # 語(yǔ)法是:docker tag   倉(cāng)庫(kù)名   peng104/倉(cāng)庫(kù)名

# 推送docker image到dockerhub
    docker  push peng104/centps-cmd- exec:latest

# 去dockerhub中檢查鏡像
# 先刪除本地鏡像,然后再測(cè)試下載pull 鏡像文件
    docker pull peng104/centos-entrypoint- exec

5.2 私有倉(cāng)庫(kù)

docker hub 是公開(kāi)的,其他人也是可以下載,并不安全,因此還可以使用docker registry官方提供的私有倉(cāng)庫(kù)
用法詳解:
https://yeasy.gitbooks.io/docker_practice/repository/registry.html
         
# 1.下載一個(gè)docker官方私有倉(cāng)庫(kù)鏡像
    docker pull registry
# 2.運(yùn)行一個(gè)docker私有容器倉(cāng)庫(kù)
docker run -d -p  5000: 5000 -v /opt/data/registry:/ var/lib/registry  registry
    -d 后臺(tái)運(yùn)行 
    -p  端口映射 宿主機(jī)的 5000:容器內(nèi)的 5000
    -v  數(shù)據(jù)卷掛載  宿主機(jī)的 /opt/data/registry :/ var/lib/registry 
    registry  鏡像名
    / var/lib/registry  存放私有倉(cāng)庫(kù)位置
# Docker 默認(rèn)不允許非 HTTPS 方式推送鏡像。我們可以通過(guò) Docker 的配置選項(xiàng)來(lái)取消這個(gè)限制
# 3.修改docker的配置文件,讓他支持http方式,上傳私有鏡像
    vim /etc/docker/daemon.json 
     # 寫(xiě)入如下內(nèi)容
    {
         "registry-mirrors": [ "http://f1361db2.m.daocloud.io"],
         "insecure-registries":[ "192.168.11.37:5000"]
    }
# 4.修改docker的服務(wù)配置文件
    vim /lib/systemd/system/docker.service
# 找到[service]這一代碼區(qū)域塊,寫(xiě)入如下參數(shù)
    [ Service]
    EnvironmentFile=-/etc/docker/daemon.json
# 5.重新加載docker服務(wù)
    systemctl daemon-reload
# 6.重啟docker服務(wù)
    systemctl restart docker
     # 注意:重啟docker服務(wù),所有的容器都會(huì)掛掉

# 7.修改本地鏡像的tag標(biāo)記,往自己的私有倉(cāng)庫(kù)推送
    docker tag docker.io/peng104/hello-world-docker  192.168 .11 .37: 5000/peng-hello
     # 瀏覽器訪問(wèn)http://192.168.119.10:5000/v2/_catalog查看倉(cāng)庫(kù)
# 8.下載私有倉(cāng)庫(kù)的鏡像
    docker pull  192.168 .11 .37: 5000/peng-hello

6、實(shí)例演示

編寫(xiě)dockerfile,構(gòu)建自己的鏡像,運(yùn)行flask程序。
確保app.py和dockerfile在同一個(gè)目錄!
         
# 1.準(zhǔn)備好app.py的flask程序
    [root@localhost ~] # cat app.py
     from flask  import Flask
    app=Flask(__name__)
    @app.route( '/')
    def hello():
         return  "hello docker"
     if __name__== "__main__":
        app.run(host= '0.0.0.0',port= 8080)
    [root@master home] # ls
    app.py  Dockerfile

# 2.編寫(xiě)dockerfile
    [root@localhost ~] # cat Dockerfile
    FROM python: 2.7
    LABEL maintainer= "溫而新"
    RUN pip install flask
    COPY app.py  /app/
    WORKDIR /app
    EXPOSE  8080
    CMD [ "python", "app.py"]

# 3.構(gòu)建鏡像image,找到當(dāng)前目錄的Dockerfile,開(kāi)始構(gòu)建
    docker build -t peng104/flask-hello-docker .

# 4.查看創(chuàng)建好的images
    docker image ls

# 5.啟動(dòng)此flask-hello-docker容器,映射一個(gè)端口供外部訪問(wèn)
    docker run -d -p  8080: 8080 peng104/flask-hello-docker

# 6.檢查運(yùn)行的容器
    docker container ls

# 7.推送這個(gè)鏡像到私有倉(cāng)庫(kù)
    docker tag  peng104/flask-hello-docker    192.168 .11 .37: 5000/peng-flaskweb
    docker push  192.168 .11 .37: 5000/peng-flaskweb
               
                                            


---END---


作者:Warm and new

來(lái)源:www.cnblogs.com/peng104/p/10296717.html


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

ckquote>
21ic電子網(wǎng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶(hù)體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉