Linux Centos7.5從docker的安裝到容器的部署執行
環境:
Win10 內的 VMware workstation(Centos7 64位)
所有命令皆為 root 使用者, 非 root 使用者應在命令前加 sudo
檢視系統版本命令: cat /etc/redhat-release
安裝Docker: yum install docker
啟動: service docker start
設定開機啟動: chkconfig docker on
檢視本地映象列表: docker images
從官方倉庫搜尋映象: docker search <關鍵詞>
例: docker search centos
從官方倉庫拉取一個centos映象: docker pull <映象名>
例: docker pull centos
移除一個本地映象: docker rmi <映象id>
用centos映象執行一個docker容器: docker run -t -i -d -p 8181:81 -p 8282:82 -v /home/package:/home --privileged=true centos /bin/bash
-i: 讓容器的標準輸入保持開啟
-t: 分配一個偽終端並繫結到容器的標準輸入上
-d: 守護態執行容器(後臺執行)
-p: 將主機的8181埠繫結到容器的81埠, 這樣訪問主機的8181埠就相當於訪問了容器的81埠(可多次使用-p引數繫結多個埠)
-v /home/package:/home: 將主機的/home/package目錄掛載到容器的/home目錄(可以事先把 jdk, mysql等安裝包存放在主機的package目錄下)
--privileged=true: 給容器增加特權, 否則在容器內訪問掛載目錄時會提示沒有許可權
centos: 映象名稱
/bin/bash: 容器啟動後執行 bash指令碼直譯器
檢視所有容器: docker ps -a
檢視某個容器的詳細資訊: docker inspect <容器id>
從容器資訊中找到容器的內網ip地址(啟動服務時可能用得著): NetworkSettings > IPAddress
關閉執行中的容器: docker stop <容器id>
啟動已關閉的容器: docker start <容器id>
重啟一個正在執行的容器: docker restart <容器id>
刪除一個容器: docker rm <容器id>
進入一個正在執行的容器
方式1: docker attach <容器id>
缺點: 退出容器時, 容器會自動關閉, 而正常情況下往往需要容器繼續在後臺執行
方式2: docker exec -it <容器id> /bin/bash
方式3:
獲取容器程序PID: docker inspect --format "{{ .State.Pid }}" <容器id>
進入容器: nsenter --target <容器程序PID> --mount --uts --ipc --net --pid
進入到掛載目錄: cd /home
解壓jdk壓縮檔案: tar -zxvf server-jre-8u191-linux-x64.tar.gz
將解壓後的資料夾移動至/usr/local/: mv jdk1.8.0_191/ /usr/local/jdk1.8
設定環境變數:
方式1:
配置/etc/profile 追加內容:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
載入生效: source /etc/profile
缺點: 重新進入容器後環境變數將失效, 每次進入容器都必須手動載入才行
方式2:
配置/root/.bashrc 追加內容:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
載入生效: source /root/.bashrc
測試jdk是否安裝成功: java -version
安裝其他軟體
安裝lrzsz(用於上傳檔案到容器或從容器下載檔案): yum install lrzsz
新建目錄: mkdir /var/server
進入目錄: cd /var/server
上傳服務jar包(server.jar)到目錄: rz
執行服務: java -jar server.jar --server.address=容器的內網ip地址 --server.port=81
現在, 在外部訪問虛擬器 http://虛擬機器ip:8181/ 就能訪問到容器的 81 埠服務了
至此, 容器服務部署完成
將容器儲存為新映象: docker commit -m "這裡寫容器說明" -a "這裡寫你的名字" <容器id> <映象名>:<標籤>
例: docker commit -m "測試建立映象" -a "yjy [email protected]" dfgsd34fss3 docker.io/centos-yjy:latest
匯出容器快照到本地檔案: docker export <容器id> > /home/centos-yjy.tar
匯入容器快照檔案為映象: docker import /home/centos-yjy.tar <新映象名稱>
將本地映象匯出為映象檔案: docker save -o <匯出檔名> <映象名>:<標籤>
例: docker save -o /home/centos-yjy.tar centos-yjy:latest
從本地檔案載入映象: docker load < /home/centis-yjy.tar