1. 程式人生 > >【整理】docker-compose安裝操作

【整理】docker-compose安裝操作

docker離線安裝

  1. 安裝docker-18.03.1-ce
#解壓
[[email protected] ~]# tar xzvf docker-18.03.1-ce.tar 

#將解壓出來的 docker 檔案所有內容移動到 /usr/bin/ 目錄下
[[email protected] ~]# cp docker/* /usr/bin/

#開啟 docker 守護程序
[[email protected] ~]# dockerd &

#檢視版本
[[email protected] ~]# docker --version
  1. docker註冊為service

將以下檔案放入 /usr/lib/systemd/system/docker.service 中,就可使用service docker restart/stop 等操作來啟停docker

#建立或編輯docker.service
[[email protected] ~]# cd /usr/lib/systemd/system
[[email protected] ~]# vi docker.service

進入vim介面後,按Insert鍵,進入編輯模式,把下面docker.service內容右鍵複製進去。 然後按Esc鍵退出編輯,輸入:wq!,回車儲存檔案即可。

docker.service:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

Docker-Compose

compose主要用於開發/測試場合,適合小規模應用的部署, 並不適合生產環境使用

  1. 安裝 下載docker-compose-Linux-x86_64檔案,國內下載地址
#複製到linux下 /usr/local/bin並改名為docker-compose
[[email protected] ~]#mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

#賦權
[[email protected] ~]#chmod +x /usr/local/bin/docker-compose

#檢視版本
[[email protected] ~]#docker-compose -v
  1. 命令 注意:docker-compose命令必須在docker-compose.yml檔案同目錄下執行
#修改檔案後需要重新build,本地建立映象
[[email protected] ~]#docker-compose build

#建立並啟動容器,第一次可以直接up,可以跳過build環節,
[[email protected] ~]#docker-compose up –d --build

#關閉並刪除容器
[[email protected] ~]#docker-compose down

#開啟服務
[[email protected] ~]#docker-compose start

#停止服務
[[email protected] ~]#docker-compose stop

#重啟服務
[[email protected] ~]#docker-compose restart

#刪除服務中的各個容器
[[email protected] ~]#docker-compose rm

#顯示容器
[[email protected] ~]#docker-compose ps

#顯示容器中的輸出內容
[[email protected] ~]#docker-compose logs
  1. 匯入映象
[[email protected] ~]# docker load –i  映象名.tar  
  1. mysql+redis+springboot+nginx

匯入相關映象後,在目錄下建立docker-compose.yml檔案,之後的相關操作都依賴該檔案

[[email protected] ~]# vi docker-compose.yml

進入vim介面後,按Insert鍵,進入編輯模式,把下面docker-compose.yml內容右鍵複製進去。 然後按Esc鍵退出編輯,輸入:wq!,回車儲存檔案即可。

docker-compose.yml:

version : '3'

services:

  mysql:
    image: mysql:5.7
    container_name: mysql
    expose:
      - "3306"
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ROOT_HOST: '%'
    restart: always
    
  redis:
    image: redis:3.0.3
    container_name: redis
    restart: always
    expose:
      - "6379"
     
  springboot:
    image: springboot
    restart: always
    container_name: springboot
    expose:
      - "8083"
    environment:
      - spring.profiles.active=test 
      - TZ=Asia/Shanghai
    depends_on:
      - mysql
      - redis
      
  nginx: 
    image: mynginx
    container_name: mynginx
    restart: always
    ports:
      - "80:80"
    depends_on:
      - springboot

version: 使用第幾代語法來編寫檔案

services: 表示該檔案管理啟停的服務

image: 指定啟動容器的映象,映象倉庫/標籤或者映象id

**container_name:**該服務自定義容器名稱

restart: 服務重啟策略,指定為always時,容器總是重新啟動。no是預設的重啟策略,在任何情 況下都不會重啟容器。

expose: 暴露埠,但不對映到宿主機,只被連線的服務訪問。埠為內部埠

ports: 暴露埠資訊。使用宿主:容器 (HOST:CONTAINER)格式

environment: 新增環境變數,mysql中的環境變數為資料庫名,資料庫密碼等。 springboot兩個環境變數分別是指定工程執行環境和執行時區 可以在這裡新增環境變數覆蓋工程中的相應配置,如新增cacheType=jvm可以覆蓋工程中的cacheType=redis配置

depends_on: 服務依賴,指定服務之間的依賴關係,表示需要先啟動depends_on下面的服務後,再啟動本服務。工程中可以使用依賴的服務名代替相關IP資訊

工程配置檔案:

spring.datasource.url=jdbc:mysql://mysql:3306/test?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.redis.hostName=redis
spring.redis.port=6379    
spring.redis.pool.maxActive=1024    
spring.redis.pool.maxWait=1000    
spring.redis.pool.maxIdle=200
spring.redis.timeout=0

nginx配置檔案:

upstream webapp{
 server springboot:8083 max_fails=3 fail_timeout=20s;  
} 
 server {
     listen       80 default_server;
     listen       [::]:80 default_server;
     server_name  _;
     location /{
     proxy_pass http://webapp/;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection keep-alive;
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
     }
 }

network_mode: 當需要獲取主機資訊時如MAC等,可以選擇主機模式,此時容器使用和主機同一網路,此時不可使用depends_on中的依賴服務名代替相關IP資訊,因所有容器都處於主機網路,可用localhost代替相關IP資訊。

#橋接模式
network_mode: "bridge"

#主機模式
network_mode: "host"

#無網路模式(稍後可自定義)
network_mode: "none"

#與指定服務同網路
network_mode: "service:[service name]"

#與指定容器同網路
network_mode: "container:[container name/id]"

注意:後面可以使用up、down等指令啟停全部服務。

相關文章