Docker - 基本使用

Docker -基本使用

具體安裝步驟請參考阿里雲docker安裝html

1、Docker

一、介紹:

Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。java

Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。python

容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。mysql

Docker 從 17.03 版本以後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),咱們用社區版就能夠了。nginx

二、Docker的應用場景

Web 應用的自動化打包和發佈。git

自動化測試和持續集成、發佈。redis

在服務型環境中部署和調整數據庫或其餘的後臺應用。sql

從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。docker

三、爲何要使用Docker

容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘可能小。傳統虛擬機方式運行 10 個不一樣的應用就要起 10 個虛擬機,而Docker 只須要啓動 10 個隔離的應用便可。shell

具體說來,Docker 在以下幾個方面具備較大的優點。

3.1 更快速的交付和部署

對開發和運維(devop)人員來講,最但願的就是一次建立或配置,能夠在任意地方正常運行。

開發者可使用一個標準的鏡像來構建一套開發容器,開發完成以後,運維人員能夠直接使用這個容器來部署代碼。 Docker 能夠快速建立容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其餘成員更容易理解應用程序是如何建立和工做的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。

3.2 更高效的虛擬化

Docker 容器的運行不須要額外的 hypervisor 支持,它是內核級的虛擬化,所以能夠實現更高的性能和效率。

3.3 更輕鬆的遷移和擴展

Docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等。 這種兼容性可讓用戶把一個應用程序從一個平臺直接遷移到另一個。

3.4 更簡單的管理

使用 Docker,只須要小小的修改,就能夠替代以往大量的更新工做。全部的修改都以增量的方式被分發和更新,從而實現自動化而且高效的管理。

四、Docker vs VM

從下圖能夠看出,VM是一個運行在宿主機之上的完整的操做系統,VM運行自身操做系統會佔用較多的CPU、內存、硬盤資源。Docker不一樣於VM,只包含應用程序以及依賴庫,基於libcontainer運行在宿主機上,並處於一個隔離的環境中,這使得Docker更加輕量高效,啓動容器只需幾秒鐘以內完成。因爲Docker輕量、資源佔用少,使得Docker能夠輕易的應用到構建標準化的應用中。但Docker目前還不夠完善,好比隔離效果不如VM,共享宿主機操做系統的一些基礎庫等;網絡配置功能相對簡單,主要以橋接方式爲主;查看日誌也不夠方便靈活。

img

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的建立和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷。

做爲一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具備衆多的優點。Docker 容器的啓動能夠在秒級實現,這相比傳統的虛擬機方式要快得多;Docker 對系統資源的利用率很高,一臺主機上能夠同時運行數千個 Docker 容器。

五、Docker 架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。

Docker 容器經過 Docker 鏡像來建立。

容器與鏡像的關係相似於面向對象編程中的對象與類。

img

Docker 鏡像(Images) Docker 鏡像是用於建立 Docker 容器的模板。
Docker 容器(Container) 容器是獨立運行的一個或一組應用。
Docker 客戶端(Client) Docker 客戶端經過命令行或者其餘工具使用 Docker API (docs.docker.com/reference/a…) 與 Docker 的守護進程通訊。
Docker 主機(Host) 一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。
Docker 倉庫(Registry) Docker 倉庫用來保存鏡像,能夠理解爲代碼控制中的代碼倉庫。Docker Hub(hub.docker.com) 提供了龐大的鏡像集合供使用。
Docker Machine Docker Machine是一個簡化Docker安裝的命令行工具,經過一個簡單的命令行便可在相應的平臺上安裝Docker,好比VirtualBox、 Digital Ocean、Microsoft Azure。

2、Dockerfile 構建

Dockerfile由一行行命令語句組成,而且支持以#開頭的註釋行。

通常的,Dockerfile分爲四部分:基礎鏡像信息,維護者信息,鏡像操做指令和容器啓動時執行指令。

dockerfile能夠說是docker學習部分的精華所在。我這裏總結的dockerfile的命令,具體操做能夠參照docker hub

一、 指令

指令的通常格式爲 INSTRUCTION arguments,指令包括 FROM、MAINTAINER、RUN 等。

1.1 FROM

格式爲 FROM 或FROM :。

第一條指令必須爲 FROM 指令。而且,若是在同一個Dockerfile中建立多個鏡像時,可使用多個 FROM 指令(每一個鏡像一次)。

MAINTAINER

格式爲 MAINTAINER ,指定維護者信息。

1.2 RUN

格式爲 RUN 或 RUN ["executable", "param1", "param2"]。

前者將在 shell 終端中運行命令,即 /bin/sh -c;後者則使用 exec 執行。指定使用其它終端能夠經過第二種方式實現,例如 RUN ["/bin/bash", "-c", "echo hello"]。

每條 RUN 指令將在當前鏡像基礎上執行指定命令,並提交爲新的鏡像。當命令較長時可使用 \ 來換行。

1.3 CMD

支持三種格式

CMD ["executable","param1","param2"] 使用 exec 執行,推薦方式;

CMD command param1 param2 在 /bin/sh 中執行,提供給須要交互的應用;

CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認參數;

指定啓動容器時執行的命令,每一個 Dockerfile 只能有一條 CMD 命令。若是指定了多條命令,只有最後一條會被執行。

若是用戶啓動容器時候指定了運行的命令,則會覆蓋掉 CMD 指定的命令。

1.4 EXPOSE

格式爲 EXPOSE [...]。

告訴 Docker 服務端容器暴露的端口號,供互聯繫統使用。在啓動容器時須要經過 -P,Docker 主機會自動分配一個端口轉發到指定的端口。

1.5 ENV

格式爲 ENV 。 指定一個環境變量,會被後續 RUN 指令使用,並在容器運行時保持。

例如

ENV PG_MAJOR 9.3

ENV PG_VERSION 9.3.4

RUN curl -SL example.com/postgres-$P… | tar -xJC /usr/src/postgress && …

ENV PATH /usr/local/postgres-PG_MAJOR/bin:PATH

1.6 ADD

格式爲 ADD 。

該命令將複製指定的 到容器中的 。 其中 能夠是Dockerfile所在目錄的一個相對路徑;也能夠是一個 URL;還能夠是一個 tar 文件(自動解壓爲目錄)。

1.7 COPY

格式爲 COPY 。

複製本地主機的 (爲 Dockerfile 所在目錄的相對路徑)到容器中的 。

當使用本地目錄爲源目錄時,推薦使用 COPY。

1.8 ENTRYPOINT

兩種格式:

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2(shell中執行)。

配置容器啓動後執行的命令,而且不可被 docker run 提供的參數覆蓋。

每一個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效。

1.9 VOLUME

格式爲 VOLUME ["/data"]。

建立一個能夠從本地主機或其餘容器掛載的掛載點,通常用來存放數據庫和須要保持的數據等。

1.10 USER

格式爲 USER daemon。

指定運行容器時的用戶名或 UID,後續的 RUN 也會使用指定用戶。

當服務不須要管理員權限時,能夠經過該命令指定運行用戶。而且能夠在以前建立所須要的用戶,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要臨時獲取管理員權限可使用 gosu,而不推薦 sudo。

1.11 WORKDIR

格式爲 WORKDIR /path/to/workdir。

爲後續的 RUN、CMD、ENTRYPOINT 指令配置工做目錄。

可使用多個 WORKDIR 指令,後續命令若是參數是相對路徑,則會基於以前命令指定的路徑。例如

WORKDIR /a

WORKDIR b

WORKDIR c

RUN pwd

則最終路徑爲 /a/b/c。

1.12 ONBUILD

格式爲 ONBUILD [INSTRUCTION]。

配置當所建立的鏡像做爲其它新建立鏡像的基礎鏡像時,所執行的操做指令。

例如,Dockerfile 使用以下的內容建立了鏡像 image-A。

[...]

ONBUILD ADD . /app/src

ONBUILD RUN /usr/local/bin/python-build --dir /app/src

[...]

若是基於 image-A 建立新的鏡像時,新的Dockerfile中使用 FROM image-A指定基礎鏡像時,會自動執行ONBUILD 指令內容,等價於在後面添加了兩條指令。

FROM image-A

Automatically run the following

ADD . /app/src

RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 指令的鏡像,推薦在標籤中註明,例如 ruby:1.9-onbuild。

3、經常使用命令

一、docker-server操做

systemctl start docker
systemctl stauts docker
systemctl restart docker
systemctl stop docker
複製代碼

二、鏡像倉庫

2.1 查找docker鏡像
docker search image_name
複製代碼
2.2 拉取docker鏡像
docker pull image_name:版本
複製代碼
2.3查看宿主機上的鏡像

Docker鏡像保存在/var/lib/docker目錄下:

docker images
複製代碼

執行docker pull centos會將Centos這個倉庫下面的全部鏡像下載到本地repository。

2.4 刪除鏡像
docker rmi  docker.io/tomcat:7.0.77-jre7   
或者  docker rmi b39c68b7af30
複製代碼

三、登錄/登出Docker鏡像倉庫

3.1 docker login

登錄到一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub

3.2 docker logout

登出一個Docker鏡像倉庫,若是未指定鏡像倉庫地址,默認爲官方倉庫 Docker Hub

語法

docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]
複製代碼

OPTIONS說明:

  • **-u :**登錄的用戶名
  • **-p :**登錄的密碼

實例

登錄到Docker Hub

docker login -u 用戶名 -p 密碼
複製代碼

登出Docker Hub

docker logout
複製代碼

四、本地上傳鏡像

**4.1 docker push **

將本地的鏡像上傳到鏡像倉庫,要先登錄到鏡像倉庫

語法

docker push [OPTIONS] NAME[:TAG]
複製代碼

OPTIONS說明:

  • **--disable-content-trust :**忽略鏡像的校驗,默認開啓

實例

上傳本地鏡像myapache:v1到鏡像倉庫中。

docker push myapache:v1
複製代碼

五、容器操做

5.1 查看當前運行容器
docker ps
複製代碼
5.2 查看全部容器
docker ps -a
複製代碼

六、容器生命週期管理

6.1 建立運行新的容器

docker run :建立一個新的容器並運行一個命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
複製代碼

OPTIONS說明:

  • -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
  • -d: 後臺運行容器,並返回容器ID;
  • -i: 以交互模式運行容器,一般與 -t 同時使用;
  • -p: 端口映射,格式爲:主機(宿主)端口:容器端口
  • -t: 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用;
  • -****-name="nginx-lb": 爲容器指定一個名稱;
  • --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
  • --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
  • -h "mars": 指定容器的hostname;
  • -e username="ritchie": 設置環境變量;
  • --env-file=[]: 從指定文件讀入環境變量;
  • --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
  • **-m :**設置容器使用內存最大值;
  • --net="bridge": 指定容器的網絡鏈接類型,支持 bridge/host/none/container: 四種類型;
  • --link=[]: 添加連接到另外一個容器;
  • --expose=[]: 開放一個端口或一組端口;

使用docker鏡像nginx:latest之後臺模式啓動一個容器,並將容器命名爲mynginx。

docker run --name mynginx -d nginx:latest
複製代碼
6.2 建立新的容器

docker create :建立一個新的容器但不啓動它

用法同 docker run

語法

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
複製代碼
6.3 啓動、中止、重啓容器
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
複製代碼
6.4 殺掉運行中的容器

docker kill :殺掉一個運行中的容器。

docker kill [OPTIONS] CONTAINER [CONTAINER...]
複製代碼
6.5 後臺啓動容器並進入容器

後臺啓動一個容器後,若是想進入到這個容器,可使用attach命令:

docker attach container_name/container_id
複製代碼
6.6 刪除容器
docker rm container_name/container_id
複製代碼
6.7 暫停/恢復容器中全部的進程

docker pause :暫停容器中全部的進程。

docker unpause :恢復容器中全部的進程。

語法

docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
複製代碼

實例

暫停數據庫容器db01提供服務。

docker pause db01
複製代碼

恢復數據庫容器db01提供服務。

docker unpause db01
複製代碼
6.8 運行的容器中執行命令

**docker exec :**在運行的容器中執行命令

語法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
複製代碼

OPTIONS說明:

  • **-d :**分離模式: 在後臺運行
  • **-i :**即便沒有附加也保持STDIN 打開
  • **-t :**分配一個僞終端

實例

在容器 mynginx 中以交互模式執行容器內 /root/runoob.sh 腳本:

runoob@runoob:~$ docker exec -it mynginx 
  /bin/sh /root/runoob.shhttp://www.runoob.com/
複製代碼

在容器 mynginx 中開啓一個交互模式的終端:

runoob@runoob:~$ docker exec -i -t  
mynginx /bin/bashroot@b1a0703e41e7:/#
複製代碼

六、查看Docker信息

info|version

查看當前系統Docker信息

docker info
複製代碼

顯示 Docker 版本信息

docker version :顯示 Docker 版本信息。

語法

docker version [OPTIONS]
複製代碼

OPTIONS說明:

  • **-f :**指定返回值的模板文件。

七、容器rootfs命令

7.1 容器建立新的鏡像

**docker commit :**從容器建立一個新的鏡像。

語法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
複製代碼

OPTIONS說明:

  • **-a :**提交的鏡像做者;
  • **-c :**使用Dockerfile指令來建立鏡像;
  • **-m :**提交時的說明文字;
  • **-p :**在commit時,將容器暫停。

實例

將容器a404c6c174a2 保存爲新的鏡像,並添加提交人信息和說明信息。

runoob@runoob:~$ docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
runoob@runoob:~$ docker images mymysql:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEmy
mysql             v1                  37af1236adef        15 seconds ago      329 MB
複製代碼
7.2 容器與主機之間的數據拷貝

docker cp :用於容器與主機之間的數據拷貝。

語法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH- CONTAINER:DEST_PATH
複製代碼

OPTIONS說明:

  • -L :保持源目標中的連接

**docker cp :**用於容器與主機之間的數據拷貝。

檢查容器裏文件結構

docker diff : 檢查容器裏文件結構的更改。

語法

docker diff [OPTIONS] CONTAINER
複製代碼

八、本地鏡像管理

8.1 列出本地鏡像

docker images : 列出本地鏡像。

語法

docker images [OPTIONS] [REPOSITORY[:TAG]]
複製代碼

OPTIONS說明:

  • **-a :**列出本地全部的鏡像(含中間映像層,默認狀況下,過濾掉中間映像層);
  • **--digests :**顯示鏡像的摘要信息;
  • **-f :**顯示知足條件的鏡像;
  • **--format :**指定返回值的模板文件;
  • **--no-trunc :**顯示完整的鏡像信息;
  • **-q :**只顯示鏡像ID。
8.2 刪除本地鏡像

docker rmi : 刪除本地一個或多少鏡像。

語法

docker rmi [OPTIONS] IMAGE [IMAGE...]
複製代碼

OPTIONS說明:

  • **-f :**強制刪除;
  • **--no-prune :**不移除該鏡像的過程鏡像,默認移除;
8.3 歸檔文件中建立鏡像

docker import : 從歸檔文件中建立鏡像。

語法

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
複製代碼

OPTIONS說明:

  • **-c :**應用docker 指令建立鏡像;
  • **-m :**提交時的說明文字
8.4 鏡像保存成 tar 歸檔文件

docker save : 將指定鏡像保存成 tar 歸檔文件。

語法

docker save [OPTIONS] IMAGE [IMAGE...]
複製代碼

OPTIONS 說明:

  • **-o :**輸出到的文件。
8.5 導入使用 docker save 命令導出的鏡像

docker load : 導入使用 docker save 命令導出的鏡像。

語法

docker load [OPTIONS]
複製代碼

OPTIONS 說明:

  • **-i :**指定導出的文件。
  • **-q :**精簡輸出信息。

4、運行經常使用的容器命令

這些都是我平時有用到的容器,能夠參考一下,出現問題能夠留言互相學習

一、elasticsearch

1.1下載鏡像:

這裏使用Elasticsearch的版本是6.4.3,同時使用kibana可視化工具使用,對elasticsearch-head感興趣的能夠download使用

docker pull elasticsearch:6.4.3
    docker pull mobz/elasticsearch-head:5
    docker pull kibana:6.4.3
複製代碼
1.2 運行容器 run:
docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" elasticsearch:6.4.3
     
複製代碼

注意事項

kibana的container共用elasticsearch的網絡

elasticsearch服務有跨域問題,致使elasticsearch-head沒法鏈接到ES,所以須要進入ES容器修改配置

1.3 運行的容器中執行命令:
docker exec -it elasticsearch /bin/bash

vi config/elasticsearch.yml

加入跨域配置

http.cors.enabled: true

http.cors.allow-origin: "*"
    
複製代碼

退出容器:exit

docker restart elasticsearch

docker run -it -d -e ELASTICSEARCH_URL=http://ip:9200 --name kibana --network=container:elasticsearch kibana:6.4.3
複製代碼
docker run -it --name elasticsearch-head -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 
複製代碼

二、redis

docker run -d -p 6379:6379 --name 自定義名字 鏡像id
複製代碼

三、rabbitmq

docker run -d -p 5672:5672 -p 15672:15672 --name 自定義名字 鏡像id
複製代碼

四、mysql

docker run -p 3306:3306 --name mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -v /zzyyuse/mysql/logs:/logs -v /zzyyuse/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
複製代碼

命令說明:

-p 12345:3306:將主機的12345端口映射到docker容器的3306端口。

--name mysql:運行服務名字

-v /zzyyuse/mysql/conf:/etc/mysql/conf.d :將主機/zzyyuse/mysql錄下的conf/my.cnf 掛載到容器的 /etc/mysql/conf.d

-v /zzyyuse/mysql/logs:/logs:將主機/zzyyuse/mysql目錄下的 logs 目錄掛載到容器的 /logs。

-v /zzyyuse/mysql/data:/var/lib/mysql :將主機/zzyyuse/mysql目錄下的data目錄掛載到容器的 /var/lib/mysql

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。

-d mysql:5.6 : 後臺程序運行mysql5.6

docker exec -it MySQL運行成功後的容器ID     /bin/bash
複製代碼

或者

#啓動
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Lzslov123! -d mysql

#進入容器
docker exec -it mysql bash

#登陸mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';

#添加遠程登陸用戶
CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!';
GRANT ALL PRIVILEGES ON *.* TO 'liaozesong'@'%';
複製代碼

數據備份小測試(能夠不作)

docker exec myql服務容器ID sh -c ' exec mysqldump --all-databases -uroot -p"123456" ' > /zzyyuse/all-databases.sql

五、nginx

docker run --name 容器名稱 -p 8081:80 -d nginx
複製代碼

建立目錄 nginx, 用於存放後面的相關東西。

mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
複製代碼

拷貝容器內 Nginx 默認配置文件到本地當前目錄下的 conf 目錄,容器 ID 能夠查看 docker ps 命令輸入中的第一列:

docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
複製代碼
  • www: 目錄將映射爲 nginx 容器配置的虛擬目錄。
  • logs: 目錄將映射爲 nginx 容器的日誌目錄。
  • conf: 目錄裏的配置文件將映射爲 nginx 容器的配置文件。

部署命令

$ docker run -d -p 8082:80 --name 容器名稱 
-v ~/nginx/www:/usr/share/nginx/html 
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v ~/nginx/logs:/var/log/nginx nginx
複製代碼
  • -p 8082:80: 將容器的 80 端口映射到主機的 8082 端口。
  • **--name :**將容器命名。
  • **~/nginx/www:/usr/share/nginx/html:**將咱們本身建立的 www 目錄掛載到容器的 /usr/share/nginx/html。
  • **-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:**將咱們本身建立的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf。
  • **-v ~/nginx/logs:/var/log/nginx:**將咱們本身建立的 logs 掛載到容器的 /var/log/nginx。

啓動以上命令後進入 ~/nginx/www 目錄:

cd ~/nginx/www
複製代碼

建立 index.html 文件,內容以下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
    <h1>hello world</h1>
</body>
</html>
複製代碼
docker run -d -p 8082:80 --name nginx-8082 -v /usr/local/nginx/www:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs:/var/log/nginx nginx
複製代碼

六、fastdfs-nginx

使用docker鏡像構建tracker容器(跟蹤服務器,起到調度的做用)

docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
複製代碼

使用docker鏡像構建storage容器(存儲服務器,提供容量和備份服務)

docker run -d --network=host --name storage -e TRACKER_SERVER=134.175.30.90:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
複製代碼

docker run -d --network=host --name storage -e TRACKER_SERVER=172.16.102.58:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

上傳一個文件

[root@VM_0_13_centos fdfs]# vi a.txt
[root@VM_0_13_centos fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
group1/M00/00/00/rBAADVzgLcCALwIQAAAADfGNUoI054.txt
[root@VM_0_13_centos fdfs]# 
複製代碼
相關文章
相關標籤/搜索