Docker的安裝與使用+CICD

Docker是一種容器技術。
容器技術又稱爲容器虛擬化
首先是一種虛擬化技術
虛擬化技術包括硬件虛擬化 半虛擬化 操作系統虛擬化
容器虛擬化就是操作系統虛擬化,是屬於輕量級的虛擬化
容器虛擬化技術是已經集成到 Linux 內核中的

容器的特性
容器首先是一個相對獨立的運行環境,並且在一個容器環境中,應該最小化對外界的影響,比如不能在容器中把宿主機上的資源全部消耗完,這就是資源控制。

容器虛擬化的核心技術
一般來說容器技術主要包含 Namespace 和 Cgroup 這兩個內核特性Namespace 又稱爲命名空間(或名字空間), 主要做訪問隔離。其原理是針對一類資源進行抽象,並將其封裝在一起提供給一個容器使用,對於這類資源,每個容器都有自己的抽象,而它們之間是不可見的,所以可以做到訪問隔離。
Cgroup 是 control group 的簡稱,又稱爲控制組,主要做資源控制。其原理是將一組進程放在一個
控制組裏,通過給這個控制組分配指定的可用資源,達到控制這一組進程可用資源的目的。


一、基於CentOS07版本

請使用centOS07版本及以上,即Linux內核版本要高於3.1。

二、安裝Docker

  1. 安裝必要的依賴包
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-utils提供yum-config-manager實用程序
    devicemapper 存儲驅動程序需要 device-mapper-persistent-data和lvm2。

  2. 設置 Docker 標準發行版本的安裝源
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum makecache fast
    方式2:aliyun鏡像(速度快)
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    sudo yum makecache fast

  3. 使用開發版本的源安裝源【可以跳過
    這些開發的存儲庫包含在上面的docker.repo文件中,但默認情況下處於禁用狀態。 您可以將它們與穩
    定的存儲庫一起啓用。
    yum-config-manager --enable docker-ce-edge
    當然也可以再次禁用它
    yum-config-manager --disable docker-ce-edge

  4. 安裝 Docker 社區版本
    安裝最新版本的Docker CE,或者轉到下一步安裝特定版本
    yum install -y docker-ce
    如果提示接受GPG密鑰,請驗證指紋是否與060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35匹配,
    如果接受,請確認。
    提示: 如果您啓用了多個 Docker 存儲庫,比如有標準的安裝源和開發測試源。則在yum install或yum update命令中 安裝或更新而不指定版本時,始終會安裝儘可能高的版本,這可能不適合您的穩定性需求。

  5. 重啓docker systemctl docker restart

安裝指定版本【可以跳過
7. 用下面的命令列出 Docker 的版本
yum list docker-ce --showduplicates | sort -r
返回的列表取決於啓用了哪些存儲庫,並且特定於您的CentOS版本(在本例中以.el7後綴表
示)。
8. 安裝指定版本
通過完全限定的軟件包名稱(它是軟件包名稱(docker-ce)加上版本字符串(第二列))安裝特
定版本,例如 docker-ce-18.03.0.ce
yum install docker-ce-<VERSION STRING>

啓動服務【啓動測試驗證】
systemctl start docker && systemctl enable docker
驗證安裝和服務是否正常
docker run hello-world
這時,Docker 會主動去下載這個鏡像,並用這個鏡像啓動一個容器;當容器運行時,它打印 hello world 並退出。
docker exec -it 服務id bash進入服務目錄


三、安裝Docker-Compose並配置Tomcat和Mysql

在 Linux 上的也安裝⼗分簡單,從 官⽅ GitHub Release 處直接下載編譯好的⼆進制⽂件即
可。
例如,在 Linux 64 位系統上直接下載對應的⼆進制包。

//下載,可以從https://github.com/docker/compose/releases網站查看下載
curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

//授權
chmod +x /usr/local/bin/docker-compose
chmod 777 docker-compose

//在local下創建一個docker-compose文件夾
[root@bogon local]# mkdir docker-compose

//在該文件夾下創建docker-compose.yml,進行編輯
vi docker-compose.yml

/**
*輸入以下文件【Tomcat】,注意縮進
*/
//image是鏡像,可以通過tomcat官網下載
version: '3.1'
services:
  tomcat:
    restart: always
    image: tomcat
    container_name: tomcat
    ports:
      - 8080:8080
    volumes:
      - /usr/local/docker/dockercompose/tomcat/tomcat1:/webapps
    environment:
      TZ: Asia/Shanghai
//也可以使用10.9.10.232:5000/tomcat:8.5.15私服下載,但是必須在【etc/docker/】下新建文件daemon.json,輸入如下內容,配置私服鏡像,端口號5000
{
  "registry-mirrors": [
   "https://registry.docker-cn.com"
 ],
"insecure-registries": [
  "10.9.10.232:5000"
]
}
//重啓docer
systemctl restart docker
//執行以下命令,進行編排
docker-compose up -d

/**
* 進行mysql的配置
*/
//在該文件夾下創建docker-compose.yml,進行編輯
vi docker-compose.yml
//輸入以下文件【Mysql】,注意縮進,也可以使用10.9.10.232:5000/tomcat:8.5.15私服下載,配置同tomcat
//一個docker-compose.yml文件僅需要一個version和services,所以,而已省略
version: '3.1'
services:
  mysql:
    restart: always
    image: mysql:5.7.24
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes:
      - mysql-data:/var/lib/mysql
         
volumes:
  mysql-data:

如果要啓動多個tomcat和mysql,只需要更改container_name和端口號即可
docker-compose up -d --build重新構建
docker-compose down關閉
docker-compose up -d啓動
docker ps查看進程
docker images查看鏡像
docker rm 代碼刪除ps後查看到的進程
docker stop 代碼停止進程
docker rmi 代碼停止images後查看到的鏡像

此外還有mysql8版本的yml配置信息

version: '3.1'
services:
  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      - ./data:/var/lib/mysql
    adminer:
      image: adminer
      restart: always
      ports:
        - 8080:8080
  • 最後,我們可以連接youg或者navicat進行數據庫連接測試,地址是:192.168.80.111:3306,虛擬機地址即可
  • 對應的在網址輸入【192.168.80.111:8080】即可訪問tomcat

四、CICD 持續集成,持續交付

互聯⽹軟件的開發和發佈,已經形成了⼀套標準流程,最重要的組成部分就是持續集成(Continuous integration,簡稱CI)。

持續集成指的是,頻繁地(⼀天多次)將代碼集成到主⼲。它的好處主要有兩個:

  • 快速發現錯誤。每完成⼀點更新,就集成到主⼲,可以快速發現錯誤,定位錯誤也⽐較容易。
  • 防⽌分⽀⼤幅偏離主⼲。如果不是經常集成,主⼲⼜在不斷更新,會導致以後集成的難度變⼤,甚⾄難以集成。

在這裏插入圖片描述
持續集成強調開發⼈員提交了新代碼之後,⽴刻進⾏構建、(單元)測試。根據測試結
果,我們可以確定新代碼和原有代碼能否正確地集成在⼀起。

持續交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者 ⽤戶,以供評審。如果評審通過,代碼就進⼊⽣產階段。
在這裏插入圖片描述
持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實運⾏環境的「類⽣產環
境」(production-like environments)中。⽐如,我們完成單元測試後,可以把代碼部署
到連接數據庫的 Staging 環境中更多的測試。如果代碼沒有問題,可以繼續⼿動部署到⽣
產環境中。

4.1 環境準備

  • 創建⼯作⽬錄 /usr/local/docker/runner
  • 創建構建⽬錄 /usr/local/docker/runner/environment
  • 下載 jdk-8u152-linux-x64.tar.gz 並複製到/usr/local/docker/runner/environment
  • 下載 apache-maven-3.5.3-bin.tar.gz 並複製到/usr/local/docker/runner/environment
  • 在宿主機啓動dokcer程序後先執⾏ sudo chown root:root /var/run/docker.sock

4.2 daemon.json

/usr/local/docker/runner/environment ⽬錄下創建 daemon.json ,⽤於配置加速器和倉庫地址


"registry-mirrors": [
"https://registry.docker-cn.com"
 ],
"insecure-registries": [
"192.168.10.132:5000" //修改爲⾃⼰的私服地址
 ]
}

4.3 Dockerfile

注意更改jdk和maven的版本號,必須和下載的jdk和maven的war包一樣
/usr/local/docker/runner/environment ⽬錄下創建 Dockerfile

FROM 10.9.10.232:5000/gitlab/gitlab-runner:latest
# 修改軟件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
 apt-get update -y && \
 apt-get clean
# 安裝 Docker
RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
 add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \
 apt-get update -y && \
 apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json
# 安裝 Docker Compose,因爲下載不下來,所以我們本地上傳⼀份docker-compose到 environment⽬錄
WORKDIR /usr/local/bin
#RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose
COPY docker-compose docker-compose
RUN chmod +x docker-compose
# 安裝 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u152-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \
rm -fr jdk-8u152-linux-x64.tar.gz
# 安裝 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
# RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.5.3-bin.tar.gz && \
rm -fr apache-maven-3.5.3-bin.tar.gz
# COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml
# 配置環境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_152
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
WORKDIR /

如果不成功,使用如下配置

FROM 10.9.10.232:5000/gitlab/gitlab-runner:latest
# 修改軟件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
#下⾯的地址需要根據實際情況變化
wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2018.2_all.deb --no-check-certificate && \
 apt install -y ./kali-archive-keyring_2018.2_all.deb && \
 apt-get update -y && \
 apt install -y gnupg && \
 apt-get clean
# 安裝 Docker
RUN curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
 apt-get install -y python-software-properties software-properties-common && \
echo 'deb [arch=amd64] https://download.docker.com/linux/ubuntu
bionic stable' >> /etc/apt/sources.list.d/docker.list && \
 apt-get update -y && \
 apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json
# 安裝 Docker Compose,因爲下載不下來,所以我們本地上傳⼀份docker-compose到 environment⽬錄
WORKDIR /usr/local/bin
#RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose
COPY docker-compose docker-compose
RUN chmod +x docker-compose
# 安裝 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u152-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \
rm -fr jdk-8u152-linux-x64.tar.gz
# 安裝 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
# RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.5.3-bin.tar.gz && \
rm -fr apache-maven-3.5.3-bin.tar.gz
COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml
# 配置環境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_152
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
WORKDIR /

4.4 docker-compose.yml

在docker下創建gitLib文件夾,放入docker-compose.yml文件

//image改爲私服下的gitLab-ce-zh文件,需要修改hostname和external_url
//ports表示可以訪問的端口號
version: '3' 
services: 
  web:
    image: '10.9.10.232:5000/gitlab-ce-zh:11.1.4' 
    restart: always 
    hostname: '192.168.75.145'
    environment: 
      TZ: 'Asia/Shanghai' 
      GITLAB_OMNIBUS_CONFIG: | 
        external_url 'http://192.168.75.145:8080' 
        gitlab_rails['gitlab_shell_ssh_port'] = 2222 
        unicorn['port'] = 8888 
        nginx['listen_port'] = 8080 
    ports:
      - '8080:8080'
      - '8443:443'
      - '2222:22' 
    volumes:
      - /usr/local/docker/gitlab/config:/etc/gitlab
      - /usr/local/docker/gitlab/data:/var/opt/gitlab
      - /usr/local/docker/gitlab/logs:/var/log/gitlab

注意:
1、執行,注意ps查看進程,如果安裝的gitlab佔用了tomcat端口號的話,將tomcat關掉
2、在【/usr/local/docker/runner/environment】下將15M的docker-compose文件複製
3、在【/usr/local/docker/runner/environment】下放入maven的settings文件,可以配置私服

docker-compose up -d 

4.5 docker-compose.yml

/usr/local/docker/runner ⽬錄下創建 docker-compose.yml

version: '3.1'
services:
  gitlab-runner:
    build: environment
    restart: always
    container_name: gitlab-runner
    privileged: true
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

執行

docker-compose up -d

//出現以下指令,表示安裝成功
Successfully built 82d542ff646a
Successfully tagged runner_gitlab-runner:latest
Creating gitlab-runner ... done

4.6 使用gitLab創建項目實現CICD

  1. 註冊GitLab,然後創建項目
  2. 將項目打成jar包
  3. 創建好項目,並項目下創建兩個文件
    (1) .gitlab-ci.yml
stages:
  - test

test:
  stage: test
  script:
    - echo laowangkaishiyaobaile
    - /usr/local/maven/apache-maven-3.6.2/bin/mvn package
    - cp target/testci.jar docker/testci.jar
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi $(docker images -q -f dangling=true)
stages:
  - install_deps
  - test
  - build
  - deploy_test
  - deploy_production
cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/
    - dist/
# 安裝依賴
install_deps:
  stage: install_deps
  only:
    - develop
    - master
  script:
    - npm install
# 運⾏測試⽤例
test:
  stage: test
  only:
    - develop
    - master
  script:
    - npm run test
# 編譯
build:
  stage: build
  only:
    - develop
    - master
  script:
    - npm run clean
    - npm run build:client
    - npm run build:server
    - mvn package
    - docker build -t xxxx ../docker
# 部署測試服務器
deploy_test:
  stage: deploy_test
  only:
    - develop
  script:
    - pm2 delete app || true
    - pm2 start app.js --name app
# 部署⽣產服務器
deploy_production:
  stage: deploy_production
  only:
    - master
  script:
    - bash scripts/deploy/deploy.sh

上⾯的配置把⼀次 Pipeline 分成五個階段:

  • 安裝依賴(install_deps)
  • 運⾏測試(test)
  • 編譯(build)
  • 部署測試服務器(deploy_test)
  • 部署⽣產服務器(deploy_production)

注意: 設置 Job.only 後,只有當 develop 分⽀和 master 分⽀有提交的時候纔會觸發相關
的 Jobs。

節點說明:

  • stages:定義構建階段,這⾥只有⼀個階段 deploy
  • deploy:構建階段 deploy 的詳細配置也就是任務配置
  • script:需要執⾏的 shell 腳本
  • only:這⾥的 master 指在提交到 master 時執⾏
  • tags:與註冊 runner 時的 tag 匹配

(2) docker-compose.yml

version: '3.1'
services:
  testci:
    restart: always
    build: docker
    container_name: testci
    ports:
      - 8080:8080

(3) docker包,創建Dockerfile文件
將項目的jar包複製到虛擬機位置,然後執行

FROM 10.9.10.232:5000/java:8
COPY testci.jar /usr/local/testci.jar
WORKDIR /usr/local
CMD java -jar testci.jar
FROM java:8
ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION
/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-
$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN mkdir /app
COPY testci-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.10.131:3306", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar"]
EXPOSE 8501
FROM java:8
ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION /dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN mkdir /app
COPY testci-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait",
"tcp://192.168.10.131:3306", "java", "-
Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar"]
EXPOSE 8501
  1. 打開自己項目,進行跑步者runner設置
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 重啓docker服務
    systemctl restart docker
  3. 授權
    docker exec -it gitlab-runner usermod -aG root gitlab-runner
  4. 註冊
docker exec -it gitlab-runner gitlab-runner register
# 輸⼊ GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.10.132/
# 輸⼊ GitLab Token
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh
# 輸⼊ Runner 的說明
Please enter the gitlab-ci description for this runner:
可以爲空
# 設置 Tag,可以⽤於指定在構建規定的 tag 時觸發 ci
Please enter the gitlab-ci tags for this runner (comma separated):
deploy
# 這⾥選擇 true ,可以⽤於代碼上傳後直接執⾏
Whether to run untagged builds [true/false]:
true
# 這⾥選擇 false,可以直接回⻋,默認爲 false
Whether to lock Runner to current project [true/false]:
false
# 選擇 runner 執⾏器,這⾥我們選擇的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell,
ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
  1. 註冊後,刷新gitlab頁面,在下面會找到提交的結果,再次點擊Runner並勾選
    在這裏插入圖片描述
  2. 使⽤ Runner
    所有操作完成後 push 代碼到服務器,查看是否成功,passed 表示執⾏成功
    其他操作
    刪除註冊信息
    gitlab-ci-multi-runner unregister --name "名稱"
    查看註冊列表
    gitlab-ci-multi-runner list

五、ElasticSearch配置

[root@localhost ~]# cd /usr/local
[root@localhost local]# cd docker-compose/
[root@localhost docker-compose]# mkdir elasticsearch
[root@localhost docker-compose]# cd elasticsearch/
[root@localhost elasticsearch]# vi docker-compose.yml
version: '3.1'
services:
  elasticsearch:
    image: 10.9.10.232:5000/elasticsearch:6.5.4
    restart: always
    container_name: elasticsearch
    ports:
      - 9000:9200
      - 9001:9300
    environment:
      discovery.type: single-node
  kibana:
    image: 10.9.10.232:5000/kibana:6.5.4
    environment:
      SERVER_NAME: kibana
      #注意修改爲本機地址
      ELASTICSEARCH_URL: http://10.9.21.117:9000
    ports:
      - "9002:5601"

~
"docker-compose.yml" [New] 19L, 417C written
//執行安裝
[root@localhost elasticsearch]# docker-compose up -d

//關閉防火牆
[root@localhost runner]# systemctl stop firewalld
//查看服務,看是否安裝成功
[root@localhost runner]# docker ps

//以下操作爲關閉相關服務操作
[root@localhost gitLib]# cd ../runner/
[root@localhost runner]# ll
總用量 4
drwxr-xr-x. 2 root root  25 118 16:57 config
-rw-r--r--. 1 root root 239 117 19:26 docker-compose.yml
drwxr-xr-x. 2 root root 156 117 19:58 environment
[root@localhost runner]# docker-compose down

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章