docker 安裝文檔

1. docker環境安裝

系統要求: CentOS 7css

經過yum安裝docker, 首先配置yum鏡像源, 使用阿里雲鏡像.linux

curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

而後安裝並設置開機啓動nginx

yum install docker-ce
systemctl enable docker

在啓動docker服務前, 配置docker存儲目錄(鏡像/容器), 將其存儲到容量比較大的分區. 這裏假設爲/opt.redis

mkdir /etc/docker
touch /etc/docker/daemon.json

寫入/etc/docker/daemon.json的內容.sql

{    "data-root": "/opt/docker",    "registry-mirrors": [        "https://registry.docker-cn.com", 
        "https://docker.mirrors.ustc.edu.cn"
    ]
}

docker-ce將graph字段修改成data-rootdocker

其中data-root字段爲docker全部的鏡像, 容器存放的位置, /opt/docker目錄沒必要預先存在, 啓動docker服務時會自動建立.json

registry-mirrors字段爲國內鏡像源加速列表(在火樹的使用場景中, 因爲沒有網絡鏈接, 其實沒什麼用).後端

最後, 啓動docker服務.centos

systemctl start docker

1.1 拷貝快捷命令

bash_docker.sh   文件中的內容追加到/root/.bashrc文件尾部, 而後source /root/.bashrc使之生效.bash

該文件中包含了1個經常使用命令docker-enter.

docker-enter 容器名/容器id: 進入目標容器, 將獲得一個bash命令行

$ docker ps
CONTAINER ID        IMAGE                                          COMMAND                  CREATED             STATUS              PORTS                      NAMES
c98790552123        reg01.sky-mobi.com/huoshu/nginx:1.0.0          "/bin/sh -c 'servi..."   2 hours ago         Up 2 hours          0.0.0.0:80-81->80-81/tcp   quizzical_shannon
$ docker-enter c98790552123
[root@c98790552123 ~]#

1.2 自定義網絡

默認每臺宿主機上啓動的docker容器都在一個小型局域網內, 相似於虛擬機, 全部的流量經過宿主機作nat轉發, 這也是通常路由器的工做方式.

可是這種方式相似於dhcp, 每次啓動容器所獲取的IP並不肯定. 爲了保證各工程容器地址固定, 咱們須要建立自定義的docker局域網, 並在啓動容器的時候指定該容器的IP.

注意: 這個操做的目的是保持工程容器的地址固定, 好比, 寫在工程配置文件中的redis與oracle地址, nginx配置文件中後端工程監聽的IP與端口地址等, 不方便頻繁變更的狀況.

不過目前oracle在一臺單獨的服務器上, 因此並不須要建立的這個網絡. 只在redis與工程容器所在的服務器上執行以下操做便可. 以下

$ docker network create --subnet=172.21.0.0/16 huoshu

在當前宿主機上建立一個小型局域網subnet, 不與外界連通. huoshu即爲該網段名稱, 啓動一個docker容器時能夠顯示指定--net huoshu從而自動獲取一個該網段內的IP.

約定redis運行在172.21.0.3這個地址, 工程配置文件再也不須要再做修改.

自定義網絡環境下, 容器與其宿主機自己的端口沒法連通(但默認網絡能夠), 咱們還須要添加一句以下代碼, 使得容器內能夠直接鏈接宿主機的端口, 不管經過172.21.0.1仍是宿主機的物理IP, 都行.

$ iptables -I INPUT_direct -s 172.21.0.0/16 -j ACCEPT

2. docker的基本操做

2.1 關於save和load - 本地存儲/拷貝鏡像的方法

通常鏡像的傳播都是經過pull/push的方式, 經過鏡像倉庫完成轉發. 鑑於火樹這次的應用場景, 能夠將鏡像保存在本地, 而後拷貝於其餘擁有docker環境的服務器上, 一樣能夠繼續使用.

當前系統中的鏡像列表能夠經過docker images命令查看, 結果以下.

$ docker imagesREPOSITORY                         TAG      IMAGE ID            CREATED             SIZE
reg01.sky-mobi.com/huoshu/redis    1.0.0    7a0e963024cf        6 hours ago         370MB
reg01.sky-mobi.com/huoshu/nginx    1.0.0    99e4c2104361        7 days ago          453MB
reg01.sky-mobi.com/huoshu/base     1.0.0    62925dab3a8e        7 days ago          330MB

使用以下命令能夠將nginx鏡像打包成tar文件.

$ docker save -o nginx-1.0.0.tar reg01.sky-mobi.com/huoshu/nginx:1.0.0$ lsnginx-1.0.0.tar

nginx-1.0.0.tar文件拷貝到另外一臺擁有docker環境的服務器上, 加載它.

$ docker load < ./nginx-1.0.0.tar c97485ea5599: Loading layer [==================================================>]    125MB/125MB
834571917b0e: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: reg01.sky-mobi.com/huoshu/nginx:1.0.0$ docker imagesREPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
reg01.sky-mobi.com/huoshu/nginx           1.0.0               99e4c2104361        7 days ago          453MB

能夠看到**load以後會保持鏡像名不變, 因此工程升級時, 打的鏡像版本號也要不一樣, 否則會發生衝突**.

2.2 oracle地址的指定

約定在工程中oracle的地址統一寫做jdbc.oracle.addr這個域名, 而後在有用到oracle的容器啓動時, 在命令行中指定ORACLE_ADDR這個環境變量爲實際oracle所在服務器地址(經過docker的-e選項能夠實現).

在容器啓動過程當中, 會將ORACLE_ADDR變量指定的地址與jdbc.oracle.addr寫入容器自己的/etc/hosts文件, 便可實現該域名與oracle服務器地址的解析.

相關文章
相關標籤/搜索