標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2019年7月11日 星期四

Ubuntu 16.04 用shell 來架設 docker 私有倉庫(Repository) 與相關使用

一、安裝執行 docker-registry

1.安裝docker

   下載檔案DockerInstall.sh
   $ sudo chmod +x DockerInstall.sh
   $ sudo sh  DockerInstall.sh

安裝過程中,若出現
E: 無法將 /var/lib/dpkg/lock-frontend 鎖定 - open (11: 資源暫時無法取得)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Failed to start docker.service: Unit docker.service not found.
處理的指令如下:
$sudo lsof /var/lib/dpkg/lock-frontend
$sudo kill -9 PID
ex: sudo kill -9 4676

2.使用 registry 映像檔架設私有倉庫

$sudo docker run -d -p 5000:5000 registry

若要變更位置則可使用參數 -v 將映像檔掛載在本機的指定位置 ex /opt/data/registry 目錄:
ex:$sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
(目前參考資料2,提到預設情況下,倉庫會被建立在容器的 /tmp/registry 下)

二、直接透過套件庫安裝

1.指令如下:

 #更新套件庫
$sudo apt-get update
 #安裝套件build-essential python-dev libevent-dev python-pip liblzma-dev swig
$sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev swig
 #套件 pip 更新
$sudo pip install --upgrade pip
 #pip 安裝套件 docker-registry
$sudo pip install docker-registry
將上述指令變成shell,檔名:UbuntuDockerInstall.sh ,其內容如下:
#!/bin/bash
sudo apt-get update

apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev swig

pip install --upgrade pip

pip install docker-registry

下載檔案UbuntuDockerInstall.sh ,下達指令:
$ sudo chmod +x UbuntuDockerInstall.sh
$ sudo sh  UbuntuDockerInstall.sh



資料來源:
1.Ubuntu 16.04 Docker 安裝與相關指令
2.私有倉庫
3.修改 Docker image 預設存放位置
4.Where are Docker images stored on the host machine?

2019年7月10日 星期三

Ubuntu 16.04 利用shell透過Docker套件庫安裝最新版本與相關指令


1.透過Docker 套件庫安裝最新版本
  #安裝apt-transport-https
$ sudo apt-get install apt-transport-https
  #取得金鑰
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
   #將deb https://get.docker.io/ubuntu docker main 寫入 /etc/apt/sources.list.d/docker.list
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
  #套件更新
$ sudo apt-get update
  #安裝docker
$ sudo apt-get install -y lxc-docker
  #啟動 docker
$ sudo service docker start

將上述的指令寫成 shell 檔
檔名:DockerInstall.sh
其內容如下:
#!/bin/bash
apt-get install apt-transport-https

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"

apt-get update

apt-get install -y lxc-docker

service docker start

下載後,需打上指令如下:
$sudo chmod +x DockerInstall.sh

$sudo sh DockerInstall.sh

安裝過程如下圖:


更新docker
$sudo apt-get update -y lxc-docker

現在我們將docker 的三類:映像檔(Image)、容器(Container)、倉庫(Repositry)與其指令之相互關係,整理成圖表。

取得映像檔(image)
指令: docker pull
ex: 到公有倉庫(Repository)取得ubuntu 18.04 映像檔
sudo docker pull ubuntu:18.04

建立一個容器(container),讓其中執行 bash
$ sudo docker run -t -i ubuntu:18.04 /bin/bash
-i:以交互模式運行容器,通常與-t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;

顯示本機已有的映像檔(image)
docker images
ex:
$ sudo docker images

執行web 程式
在docker容器中執行Python Flask 程式來執行一個web程式。
  #取得training/webapp 的映像檔(image) 
$sudo pull training/webapp

建立一個容器(container),讓其中執行python app.py
$sudo docker run -d -P training/webapp python app.py
-d:讓容器在後台運行。
-P:將容器內部使用的網絡埠(port)映射(mapping)到主機上。

檢查 WEB程式容器(container)
指令:docker ps
#檢查所有正在運行的容器(container)
ex:$ sudo docker ps
網絡埠(port) 訊息
Docker 的容器(container)開啟網絡埠(port)號:5000 (預設 Python Flask 網絡埠)映射到主機網絡埠號:32768 上。
主機IP為 192.168.32.134
打開瀏覽器 打上 http://192.168.32.134:32768
若要更改容器(container)的網絡埠(port)號,則要使用 -p
ex: $sudo docker run -d -p 5000:5000 training/webapp python app.py

若只是單純檢查容器(container)的網絡埠(port),可以下指令 docker port +容器IP
那容器ID 的取得,可從 docker ps 取得 
所以我們可以檢查 27bea7994a3d
$sudo docker port 27bea7994a3d
比較指令 docker ps 與 docker port 的差別

檢查log(程式日誌)
指令:docker logs -f
-f :輸出容器(container)內部的標準輸出
ex:
$sudo docker logs -f ae433e5debba

檢查 Docker容器(container)的配置和狀態信息
指令為 docker inspect + 容器名稱(name)
ex: $ sudo docker inspect silly_noyce

處理docker 啟動(停止、重啟、刪除) 容器(container)
docker start (stop、restart、rm) + 容器(container)的名稱(name)
ex: sudo docker start  (stop、restart、rm) silly_noyce
注意事項:刪除之前,需先停止容器(container)。即指令下法為
$sudo docker stop silly_noyce
$sudo docker rm silly_noyce

建立映像檔
(1) 修改現有映像檔
     #下載映像檔 training/sinatra
     $sudo docker pull training/sinatra
    #建立一個容器(container),讓其中執行 bash
     $sudo docker run -t -i  training/sinatra /bin/bash
   此時容器(container) 的ID為12bf15cd160c,即上圖綠色圈處。
   在容器中安裝套件gem(加入json)
    root@12bf15cd160c:/# gem install json
   退出
   root@12bf15cd160c:/# exit
    提交"更新後的副本"指令:docker commit
    $sudo docker commit -m "Added json gem" -a "Docker AddJsonGem" 12bf15cd160c ouruser/sinatra:v2
     -m 指定提交映像檔的說明信息
     -a 可以指定更新的使用者信息
    查看所有映像檔 :docker images
    $sudo docker images
    可以直接使用ouruser/sinatra:v2
    $sudo docker run -t -i  ouruser/sinatra:v2 /bin/bash

(2)利用 Dockerfile 建立映像檔
     建立映像檔指令:docker build ,用docker build前,需先建立Dockerfile。
     流程:Dockerfile ----> docker build
     A.建立目錄與檔案
     #建立目錄sinatra
     $ mkdir sinatra
     #進入目錄sinatra
     $ cd sinatra
     #建立檔案Dockerfile
     $ touch Dockerfile
     #編輯 Dockerfile
     $sudo pico Dockerfile

     B.Dockerfile 內容為
     # FROM 告訴 docker 以 ubuntu:14.04 為 image
      FROM ubuntu:14.04
     # MAINTAINER 維護者 與 Email
      MAINTAINER Docker Newbee <newbee@docker.com>
     #RUN 在docker build 時執行 apt-get 更新、install 與 gem install
      RUN apt-get -qq update
      RUN apt-get -qqy install ruby ruby-dev
      RUN gem install sinatra

      C.建立映像檔
      指令:docker build
      $sudo docker build -t="ouruser/sinatra:v2"
      但是出現錯誤訊息:
      Cannot connect to the Docker daemon. Is the docker daemon running on this host?



資料來源:
1.Docker —— 從入門到實踐
2.Docker run 命令

2019年7月3日 星期三

python 3.7 讀取CSV檔案,將一行一行資料內容,轉成串列

CSV檔案名稱:PythonCSVTest.csv
CSV檔案位置:C:\Users\m\Desktop\
CSV檔案內容:
test01,test02,test03,test04,test05,test06,test07,test08,test09,test10
test11,test12,test13,test14,test15,test16,test17,test18,test19,test20
test21,test22,test23,test24,test25,test26,test27,test28,test29,test30
test31,test32,test33,test34,test35,test36,test37,test38,test39,test40
test41,test42,test43,test44,test45,test46,test47,test48,test49,test50

程式名稱:PythonCSVTest.py
程式位置:C:\Users\m\Desktop\
程式內容:
fp = open('PythonCSVTest.csv',"r")
lines = fp.readlines()
fp.close()
list_lines = []
for i in range(len(lines)):
     lines[i] = lines[i].strip('\n')
     temp = lines[i][:]
     temp = temp.replace(","," ")
     temp = temp.split()
     for j in range(len(temp)):
        list_lines.append(temp[j])
print(list_lines)

執行結果:
資料來源:
1.Python replace()方法
2.Python 逐行讀取檔案內容的 4 個方法
3.python按行读取文件,如何去掉换行符"\n"

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html