逝者如斯夫

          靜而思之
          數據加載中……

          2014年2月28日

          Docker Registry 安裝和運行

          使用場景

          • 內部網絡,無法訪問 Docker Hub
          • 控制 image 的存儲方式和存儲位置
          • 控制 image 的部署流程
          • 內部開發流程需要集成控制 image 的部署和存儲

          應用邏輯示意圖:

          ?

          安裝 Registry 服務

          概要

          Docker Registry 在 docker hub 的名稱是 registry。v1 版本的源碼地址 github.com/docker/docker-registry 已經廢棄,v2 版本源碼地址在 github.com/docker/distribution,對應的 API 是 Docker Registry HTTP API V2

          以下安裝沒有使用 HTTPS 方式,啟用 HTTPS 相關的證書配置參考這個文檔:

          官方文檔參考:

          最簡安裝(啟動)

          docker run -d -p 5000:5000 --name registry registry:2
          

          以上命令未使用用戶名密碼登錄策略。

          啟用登錄密碼

          生成密碼

          登錄密碼可以通過 host 的文件傳入,以下命令調用容器的 htpasswd 命令生成密碼文件:

          mkdir auth
          docker run --entrypoint htpasswd registry:2 \
              -Bbn <USER_NAME> <PASSWORD> > auth/auth.htpasswd
          

          啟用密碼

          通過 –volume 參數傳入密碼文件:

          docker run -d -p 5000:5000 --restart=always --name registry \
            --volume `PWD`/auth:/auth \
            --env "REGISTRY_AUTH=htpasswd" \
            --env "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
            --env REGISTRY_AUTH_HTPASSWD_PATH=/auth/auth.htpasswd \
            registry:2
          

          修改鏡像存儲

          默認鏡像數據存儲在 Docker Volume 中,可以通過 bind mount 進行修改,參數信息參考 Volume文檔。下面的例子將本機目錄 PWD/images 綁定到容器的 /var/lib/registry

          docker run -d -p 5000:5000 \
              --name auth-registry \
              -v `PWD`/images:/var/lib/registry \
              -e SQLALCHEMY_INDEX_DATABASE=sqlite:////opt/docker-image/docker-registry.db \
              -e STORAGE_PATH=/opt/docker-image \
              --restart=always \
              docker.onestch.com:5000/admin/registry:0.1
          

          默認的存儲引擎為本地文件系統,可以修改文件的存儲引擎為 Amazon S3 bucket、Google Cloud Platform 或其他引擎,可以通過配置 config.yml 的方式修改存儲配置,更多信息參考 Docker Registry 存儲配置文檔

          停止服務

          停止 registry 容器并清理運行數據

          docker stop registry && \
          docker rm -v registry
          

          驗證

          查看容器信息

          docker ps --no-trunc
          

          查看全部配置信息或部分信息

          docker inspect <CONTAINER_ID> 
          
          docker inspect <CONTAINER_ID> | grep -C3 -e "Volumes\":"
          docker inspect <CONTAINER_ID> | grep -C2 Binds
          docker inspect -f '{{ .Mounts }}' <CONTAINER_ID>
          

          查看映射的詳細信息

          docker volume inspect 4496b0a257b966052ef8d0743014a4f63fc9924251c8de0df0e9c70fde4c45e6
          

          發布鏡像

          登錄服務

          如果安裝(啟動)的 registry 服務需要登錄訪問時,執行:

          docker login <REGISTRY_HOST>:<REGISTRY_PORT>
          

          輸入安裝時設定的用戶名密碼。

          目標地址

          使用 docker tag 設定鏡像的目標地址,鏡像的目標地址包括三部分

          <HOST_NAME>[:<HOST_PORT>]/<IMAGE_NAME>:<IMAGE_VERSION>
          
          • HOST_NAME : HOST_PORT

            目標 registry 服務地址,缺省時使用官方 docker hub 的地址 registry-1.docker.io,且不允許包含下劃線

          • IMAGE_NAME 發布目標鏡像名稱

          • IMAGE_VERSION 發布目標鏡像版本

          例如:repo.company.com:3456/myapp:0.1

          發布鏡像

          發布的鏡像文件可以從 docker hub 中 Pull 或者本地使用 Dockerfile build 獲得

          Pull

          docker pull registry
          

          Build

          docker build -t docker.onestch.com:5000/admin/registry:0.1 .
          

          首先需要對鏡像 tag 設定目標倉庫,如果 build 的時候已經設置了目標地址,可以不用進行 tag 操作

          docker tag registry:latest docker.onestch.com:5000/admin/registry:0.1
          

          然后 Push

          docker push docker.onestch.com:5000/admin/registry:0.1
          

          驗證

          重新從私有倉庫中獲取鏡像

          docker pull localhost:5000/admin/registry:0.1
          
          0.1: Pulling from admin/registry
          Digest: sha256:d738e358b6910d3a53c9c7ff7bbb5eac490ab7a9b12ffb4c1c27f2c53aae9275
          Status: Image is up to date for localhost:5000/admin/registry:0.1
          

          安裝 Registry UI

          選擇 registry ui,可選的有 atcol/docker-registry-ui、hyper/docker-registry-web、konradkleine/docker-registry-frontend

          安裝運行

          針對 hyper/docker-registry-web,使用 BASIC 認證,未使用 HTTPS的情況

          docker run -it -p 8080:8080 \
              --rm \
              --name registry-web \
              --link auth-registry \
              -e REGISTRY_URL=http://auth-registry:5000/v2 \
              -e REGISTRY_AUTH_ENABLED=false \
              -e REGISTRY_BASIC_AUTH=YWRtaW46MTIzNDU2 \
              -e REGISTRY_NAME=docker.onestch.com:5000 hyper/docker-registry-web
          

          命令中 auth-registry 是自定的 registry 鏡像。

          使用 HTTPS 時需要傳入 /config/auth.key 文件,或自定義 config.xml 配置,例如:
          docker run -it -p 8080:8080 –name registry-web \
          –link auth-registry \
          -v $(pwd)/config.yml:/conf/config.yml:ro \
          hyper/docker-registry-web

          管理界面

          建立了 registry 服務后,對 registry 的管理界面在本機的訪問地址是http://localhost:8080,一般 ui 服務會和 registry 服務同樣運行在私有網絡,所以我們可以發布 registry ui 到 registry 服務器再運行。

          docker tag docker.io/hyper/docker-registry-web docker.onestch.com:5000/admin/docker-registry-web
          
          docker push docker.onestch.com:5000/admin/docker-registry-web
          

          查看 UI 界面如下圖

          ?

          posted @ 2018-08-03 11:49 ideame 閱讀(1306) | 評論 (0)編輯 收藏

          Zookeeper Cli 常用命令

          服務管理

          • 啟動ZK服務: zkServer.sh start
          • 查看ZK狀態: zkServer.sh status
          • 停止ZK服務: zkServer.sh stop
          • 重啟ZK服務: zkServer.sh restart

          終端操作

          使用 zkCli 可以簡單的對 ZooKeeper 進行訪問,數據創建,數據修改等操作. 連接命令行如下:

          zkCli.sh -server 127.0.0.1:2181
          

          命令行工具常用操作:

          • 顯示根目錄下文件

            ls /              //查看當前節點數據
            ls2 /             //查看當前節點數據并能看到更新次數等數據
            
          • 創建文件, 并設置初始內容:

            create /config "test" //創建一個新的節點并設置關聯值
            create /config “”     //創建一個新的空節點
            
          • 獲取文件內容

            get /brokers      //獲取節點內容
            
          • 修改文件內容

            set /zk "zkbak"   //對 zk 所關聯的字符串進行設置
            
          • 刪除文件

            delete /brokers  //刪除節點
            rmr    /brokers  //刪除節點及子節點
            

          四字命令

          ZooKeeper 支持某些特定的四字命令字母與其的交互,用來獲取服務的當前狀態及相關信息。在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應的命令。命令行如下:

          echo conf | nc 132.37.3.26 26181
          

          ZooKeeper 常用四字命令:

          • conf

            輸出相關服務配置的詳細信息

          • cons

            列出所有連接到服務器的客戶端的完全的連接 / 會話的詳細信息。包括“接受 / 發送”的包數量、會話 id 、操作延遲、最后的操作執行等等信息

          • dump

            列出未經處理的會話和臨時節點。

          • envi

            輸出關于服務環境的詳細信息(區別于 conf 命令)。

          • reqs

            列出未經處理的請求

          • ruok

            測試服務是否處于正確狀態。如果確實如此,那么服務返回“ imok ”,否則不做任何相應

          • stat

            輸出關于性能和連接的客戶端的列表。

          • wchs

            列出服務器 watch 的詳細信息

          • wchc

            通過 session 列出服務器 watch 的詳細信息,它的輸出是一個與 watch 相關的會話的列表

          • wchp

            通過路徑列出服務器 watch 的詳細信息。它輸出一個與 session 相關的路徑

          posted @ 2016-10-10 17:54 ideame 閱讀(5551) | 評論 (0)編輯 收藏

          JMH(Java Micro Benchmark) 簡介

               摘要: JMH簡介本文由 ImportNew - hejiani 翻譯自 java-performance。JMH是新的microbenchmark(微基準測試)框架(2013年首次發布)。與其他眾多框架相比它的特色優勢在于,它是由Oracle實現JIT的相同人員開發的。特別是我想提一下Aleksey Shipilev和他優秀的博客文章。JMH可能與最新的Oracle JRE同步,其結果可信度很高。JMH...  閱讀全文

          posted @ 2016-08-01 17:12 ideame 閱讀(3264) | 評論 (0)編輯 收藏

          如何將 SVN 源碼庫轉換為 Mercurial

          如何將 SVN 源碼庫轉換為 Mercurial [1]

          首先得安裝 Subversion 庫函數

          				    wget http://mirrors.hust.edu.cn/apache/subversion/subversion-1.8.8.tar.gz
          
              tar xzf subversion-1.8.8.tar.bz2 
          
              cd subversion-1.8.8
          
              subversion-1.8.8 aliang$ ./autogen.sh 
                  buildcheck: checking installation...
                  buildcheck: autoconf not found.
                              You need autoconf version 2.59 or newer installed.
          
              brew install autoconf
                  ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/autoconf-2.69.mavericks.bottle.tar.gz
                  #################################################### 100.0%
                  ==> Pouring autoconf-2.69.mavericks.bottle.tar.gz
                  ?? /usr/local/Cellar/autoconf/2.69: 69 files, 2.0M
          
              ./autogen.sh 
                  buildcheck: checking installation...
                  buildcheck: autoconf version 2.69 (ok)
                  buildcheck: autoheader version 2.69 (ok)
                  buildcheck: libtool not found.
                  You need libtool version 1.4 or newer installed
          
              brew install libtool
                  Warning: A newer Command Line Tools release is available
                  Update them from Software Update in the App Store.
                  ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libtool-2.4.2.mavericks.bottle.2.tar.gz
                  ##################################################### 100.0%
                  ==> Pouring libtool-2.4.2.mavericks.bottle.2.tar.gz
                  ==> Caveats
                  In order to prevent conflicts with Apple''s own libtool we have prepended a "g"
                  so, you have instead: glibtool and glibtoolize.
                  ==> Summary
                  ??  /usr/local/Cellar/libtool/2.4.2: 66 files, 2.2M
          
              ./autogen.sh 
                  buildcheck: checking installation...
                  buildcheck: autoconf version 2.69 (ok)
                  buildcheck: autoheader version 2.69 (ok)
                  buildcheck: libtool version 2.4.2 (ok)
                  Copying libtool helper: /usr/local/share/aclocal/libtool.m4
                  Copying libtool helper: /usr/local/share/aclocal/ltoptions.m4
                  Copying libtool helper: /usr/local/share/aclocal/ltsugar.m4
                  Copying libtool helper: /usr/local/share/aclocal/ltversion.m4
                  Copying libtool helper: /usr/local/share/aclocal/lt~obsolete.m4
                  Creating build-outputs.mk...
                  Creating svn_private_config.h.in...
                  Creating configure...
          
                  You can run ./configure now.
          
                  Running autogen.sh implies you are a maintainer.  You may prefer
                  to run configure in one of the following ways:
          
                  ./configure --enable-maintainer-mode
                  ./configure --disable-shared
                  ./configure --enable-maintainer-mode --disable-shared
                  ./configure --disable-optimize --enable-debug
                  ./configure CUSERFLAGS='--flags-for-C' CXXUSERFLAGS='--flags-for-C++'
          
                  Note:  If you wish to run a Subversion HTTP server, you will need
                  Apache 2.x.  See the INSTALL file for details.
          
              brew install swig
                  ==> Downloading http://downloads.sourceforge.net/project/swig/swig/swig-2.0.11/swig-2.0.11.tar.gz
                  ######################################################################## 100.0%
                  ==> ./configure --prefix=/usr/local/Cellar/swig/2.0.11
                  ==> make
                  ==> make install
                  ??  /usr/local/Cellar/swig/2.0.11: 597 files, 6.2M, built in 10.1 minutes 
          
              ./configure --with-swig=/usr/local/bin/swig
                  configure: Configuring Subversion 1.8.8
                  ... ...
                  ==================================================================
                  WARNING: You have chosen to compile Subversion with a different
                           compiler than the one used to compile Apache.
          
                      Current compiler:  gcc
                     Apache's compiler:  /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
          
                  This could cause some problems.
                  ==================================================================
                  ... ...
          
              make swig-py
              make install
              make check-swig-py        
              sudo make install-swig-py
          
              sudo cp -r /usr/local/lib/svn-python/ /Library/Python/2.7/site-packages/
          
          		

          執行轉換命令

          				    mkdir hgpath
          
              cd hgpath
          
              hg init
          
              hg convert -s svn -d hg ${local_path} ./hgpath
          
          		

          注意,這里轉換的 SVN 目錄只能是倉庫目錄而不是工作目錄

          posted @ 2014-02-28 11:25 ideame 閱讀(589) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 西充县| 乌恰县| 龙山县| 泰安市| 凤冈县| 都昌县| 七台河市| 商南县| 墨竹工卡县| 宁明县| 泰兴市| 湟源县| 满洲里市| 光山县| 永仁县| 壶关县| 黑山县| 南汇区| 西平县| 宁波市| 高平市| 玛曲县| 泾阳县| 和平县| 周宁县| 托克托县| 二手房| 禄丰县| 大悟县| 尚志市| 平利县| 攀枝花市| 丹棱县| 福鼎市| 房产| 无棣县| 临潭县| 文成县| 桃江县| 通道| 高邮市|