雲服務器配置 docker java mysql mongodb redis nginx jenkins 環境


磁盤掛載

fdisk -l #查看磁盤列表 mkfs.ext4 /dev/vdb #格式化磁盤 mount /dev/vdb /data #掛載磁盤在/data echo '/dev/vdb /data ext4 defaults,nofail 0 1'>> /etc/fstab # 啟動服務器自動掛載 mount -a #校驗自動掛載腳本 df -h #查看磁盤掛載后信息

docker

安裝 docker

yum update #更新系統包 yum install -y yum-utils device-mapper-persistent-data lvm2 #安裝yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #為yum源添加docker倉庫位置 yum install docker-ce #安裝docker systemctl start docker #啟動docker systemctl stop docker #暫停docker mv /var/lib/docker /data/docker # 修改Docker鏡像的存放位置 ln -s /data/docker /var/lib/docker #建立軟連接 echo '{  "registry-mirrors": ["https://registry.docker-cn.com"] } '>> /etc/docker/daemon.json # 鏡像下載代理

拉取 Java 鏡像

docker pull java

拉取 MySql 鏡像

docker pull mysql #拉取 MySql docker run -p 3306:3306 --name mysql \ # run 運行容器 -p 將容器的3306端口映射到主機的3306端口 --name 容器運行的名字 --restart=always \ # 掛斷自動重新啟動 -v /etc/localtime:/etc/localtime \ # 將主機本地時間夾掛在到容器 -v /data/mysql/log:/var/log/mysql \ # 將日志文件夾掛載到主機 -v /data/mysql/data:/var/lib/mysql \ # 將數據文件夾掛載到主機 -v /data/mysql/mysql-files:/var/lib/mysql-files \ # 將數據文件夾掛載到主機 -v /data/mysql/conf:/etc/mysql \ # 將配置文件夾掛在到主機 -e MYSQL_ROOT_PASSWORD=xiujingmysql. \ # 初始化root用戶的密碼 -d mysql # -d 后台運行 docker exec -it mysql /bin/bash # 進入Docker容器內部的bash

拉取 Mongodb 鏡像

docker pull mongo #拉取 mongodb docker run -p 27017:27017 --name mongo \ # run 運行容器 -p 將容器的27017端口映射到主機的27017端口 --name 容器運行的名字 --restart=always \ # 掛斷自動重新啟動 -v /etc/localtime:/etc/localtime \ # 將主機本地時間夾掛在到容器 -v /data/mongodb/db:/data/db \ # 將數據文件夾掛載到主機 -v /data/mongodb/configdb:/data/configdb \ # 將數據庫配置文件掛載到主機 -v /data/mongodb/initdb:/docker-entrypoint-initdb.d # 通過/docker-entrypoint-initdb.d/將更復雜的用戶設置顯式留給用戶 當容器首次啟動時它會執行/docker-entrypoint-initdb.d 目錄下的sh 和js腳本 。 以腳本字母順序執行 -e MONGO_INITDB_ROOT_USERNAME=admin \ # 設置admin數據庫賬戶名稱 如果使用了此項,則不需要 --auth 參數 -e MONGO_INITDB_ROOT_PASSWORD=admin \ # 設置admin數據庫賬戶密碼 如果使用了此項,則不需要 --auth 參數 -d mongo \ # -d 后台運行 --auth # --auth 需要密碼才能訪問容器服務 docker exec -it mongo mongo admin # 進入mongo db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); #創建一個名為 admin,密碼為 123456 的用戶。 db.auth('admin', '123456') # 嘗試使用上面創建的用戶信息進行連接。

拉取 Redis 鏡像

docker pull redis #拉取 redis docker run -p 6379:6379 --name redis \ # run 運行容器 -p 將容器的6379端口映射到主機的6379端口 --name 容器運行的名字 --restart=always \ # 掛斷自動重新啟動 -v /etc/localtime:/etc/localtime \ # 將主機本地時間夾掛在到容器 -v /data/redis:/data/redis \ # 將數據文件夾掛載到主機 -d redis \ # -d 后台運行 --requirepass "123456" # 設置密碼123456

拉取 Nginx 鏡像

docker pull nginx #拉取 nginx docker run -p 80:80 -p 443:443 --name nginx -d nginx # 運行容器 docker container cp nginx:/etc/nginx /data/nginx/ #拷貝容器配置 docker rm -f nginx # 刪除容器

nginx 配置文件


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error_log.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log   /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    gzip on; #開啟gzip
    gzip_disable "msie6"; #IE6不使用gzip
    gzip_vary on; #設置為on會在Header里增加 "Vary: Accept-Encoding"
    gzip_proxied any; #代理結果數據的壓縮
    gzip_comp_level 6; #gzip壓縮比(1~9),越小壓縮效果越差,但是越大處理越慢,所以一般取中間值
    gzip_buffers 16 8k; #獲取多少內存用於緩存壓縮結果
    gzip_http_version 1.1; #識別http協議的版本
    gzip_min_length 1k; #設置允許壓縮的頁面最小字節數,超過1k的文件會被壓縮
    gzip_types application/javascript text/css; #對特定的MIME類型生效,js和css文件會被壓縮

    include /etc/nginx/conf.d/*.conf;

    server {
      #nginx同時開啟http和https
    	listen 80 default backlog=2048;
    	listen 443 ssl;
    	server_name ysf.djtlpay.com;
    	
    	ssl_certificate  /ssl/1_ysf.djtlpay.com_bundle.crt;
    	ssl_certificate_key  /ssl/2_ysf.djtlpay.com.key;
	
        location / {
            root /usr/share/nginx/html;
            index  index.html index.htm;
        }
   }		
}

運行 nginx

docker run -p 80:80 -p 443:443 --name nginx \ # run 運行容器 -p 將容器的80,443端口映射到主機的80,443端口 --name 容器運行的名字 --restart=always \ -v /etc/localtime:/etc/localtime \ # 將主機本地時間夾掛在到容器 -v /data/nginx/html:/usr/share/nginx/html \ # nginx 靜態資源 -v /data/nginx/logs:/var/log/nginx \ # 將日志文件夾掛載到主機 -v /data/nginx/conf:/etc/nginx \ # 將配置文件夾掛在到主機 -v /data/nginx/conf/ssl:/ssl \ # 將證書文件夾掛在到主機 -d nginx #

拉取Jenkins鏡像:

docker pull jenkins/jenkins:lts # 拉取 jenkins docker run -p 8080:8080 -p 50000:50000 --name jenkins \ # run 運行容器 -p 將容器的80,443端口映射到主機的8080,50000端口 --name 容器運行的名字 -u root \ # 運行的用戶為root -v /etc/localtime:/etc/localtime \ # 將主機本地時間夾掛在到容器 -v /data/jenkins_home:/var/jenkins_home \ # 將jenkins_home文件夾掛在到主機 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \ #設置jenkins運行環境時區 -d jenkins/jenkins:lts # -d 后台運行

Docker 開啟遠程API

  • 用vi編輯器修改docker.service文件
#需要修改的部分: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock #修改后的部分: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

Docker 常用命令

systemctl start docker #啟動docker systemtctl enable docker #將docker服務設為開機啟動 systemctl stop docker #停止容器 systemctl restart docker #重啟docker服務 docker images # 列出鏡像 docker rmi --name # 刪除鏡像 -f 強制刪除 docker ps # 列出容器 -a 所有 docker start --name # 啟動容器 docker stop --name # 停止容器 docker restart --name # 重啟docker容器 docker rm --name # 刪除容器 -f 強制刪除 docker stats -a # 查看所有容器情況 docker system df # 查看Docker磁盤使用情況 docker exec -it --name /bin/bash #進入Docker容器內部的bash docker cp 主機文件 容器名稱:容器路徑 #復制文件到docker容器中 docker logs --name #查看docker鏡像日志 docker rm $(docker ps -a -q) # 刪除所有容器 -f 強制刪除 docker rmi $(docker images -a -q) # 刪除所有鏡像 -f 強制刪除 docker rm -f `docker ps -a | grep -vE 'mysql|nginx|redis|jenkins' | awk '{print $1}'` # 刪除mysql|nginx|redis|jenkins非容器 -f 強制刪除 docker rmi -f `docker images | grep none | awk '{print $3}'` # 刪除鏡像none鏡像 -f 強制刪除

docker-compose

安裝 docker-compose

# 下載Docker Compose curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # 修改該文件的權限為可執行 chmod +x /usr/local/bin/docker-compose # 查看是否已經安裝成功 docker-compose --version

使用Docker Compose的步驟

  • 使用Dockerfile定義應用程序環境,一般需要修改初始鏡像行為時才需要使用;
  • 使用docker-compose.yml定義需要部署的應用程序服務,以便執行腳本一次性部署;
  • 使用docker-compose up命令將所有應用服務一次性部署起來。

docker-compose.yml常用命令

# 指定運行的鏡像名稱 image: name:version # 配置容器名稱 container_name: name # 指定宿主機和容器的端口映射 ports: - 3306:3306 # 將宿主機的文件或目錄掛載到容器中 volumes: - /etc/localtime:/etc/localtime - /data/mysql/log:/var/log/mysql - /data/mysql/data:/var/lib/mysql - /data/mysql/conf:/etc/mysql - /data/mysql/mysql-files:/var/lib/mysql-files # 配置環境變量 environment: - MYSQL_ROOT_PASSWORD=xiujingmysql. # 連接其他容器的服務 links: - db:database #可以以database為域名訪問服務名稱為db的容器 # 掛斷自動重新啟動 restart: always # 指定容器執行命令 command: redis-server --requirepass xiujingredis.

Docker Compose常用命令

# 構建、創建、啟動相關容器 docker-compose up -d # -d表示在后台運行 # 停止所有相關容器 docker-compose stop # 刪除容器文件 docker-compose rm -f # -f 強制刪除 # 重啟容器 docker-compose restart # 列出所有容器信息 docker-compose ps # 查看容器日志 docker-compose logs

使用Docker Compose 部署應用

編寫docker-compose.yml文件

version: '3' services: # 指定服務名稱 nginx: # 指定服務使用的鏡像 image: nginx # 指定容器名稱 container_name: nginx # 指定服務運行的端口 ports: - 80:80 - 443:443 # 指定容器中需要掛載的文件 volumes: - /etc/localtime:/etc/localtime # 掛斷自動重新啟動 restart: always # 指定容器的環境變量 environment: - MYSQL_ROOT_PASSWORD=xiujingmysql. # 指定服務名稱 mysql: # 指定服務使用的鏡像 image: mysql # 指定容器名稱 container_name: mysql # 指定服務運行的端口 ports: - 13306:3306 # 指定容器中需要掛載的文件 volumes: - /etc/localtime:/etc/localtime - /data/mysql/log:/var/log/mysql - /data/mysql/data:/var/lib/mysql - /data/mysql/mysql-files:/var/lib/mysql-files - /data/mysql/conf:/etc/mysql # 掛斷自動重新啟動 restart: always # 指定容器的環境變量 environment: - MYSQL_ROOT_PASSWORD=xiujingmysql. # 指定服務名稱 redis: # 指定服務使用的鏡像 image: redis # 指定容器名稱 container_name: redis # 指定服務運行的端口 ports: - 16379:6379 # 指定容器中需要掛載的文件 volumes: - /etc/localtime:/etc/localtime - /data/redis:/data/redis # 掛斷自動重新啟動 restart: always # 指定容器執行命令 command: redis-server --requirepass xiujingredis. # 指定服務名稱 mongo: # 指定服務使用的鏡像 image: mongo # 指定容器名稱 container_name: mongo # 指定服務運行的端口 ports: - 27017:27017 # 指定容器中需要掛載的文件 volumes: - /etc/localtime:/etc/localtime - /data/mongodb/db:/data/db - /data/mongodb/configdb:/data/configdb - /data/mongodb/initdb:/docker-entrypoint-initdb.d # 掛斷自動重新啟動 restart: always # 指定容器的環境變量 environment: - AUTH=yes - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=admin # 指定服務名稱 jenkins: # 指定服務使用的鏡像 image: jenkins # 指定容器名稱 container_name: jenkins # 指定服務運行的端口 ports: - 8080:8080 - 50000:50000 # 指定容器中需要掛載的文件 volumes: - /etc/localtime:/etc/localtime - /data/jenkins_home:/var/jenkins_home # 掛斷自動重新啟動 restart: always # 指定容器的環境變量 environment: - JAVA_OPTS=-Duser.timezone=Asia/Shanghai # 指定容器運行的用戶為root user: root 

運行Docker Compose命令啟動所有服務

docker-compose up -d

GitHub:https://github.com/burningmyself/burningmyself.github.io/blob/master/docs/docker/docker-compose.md#docker%E5%92%8Cdocker-compose-%E9%85%8D%E7%BD%AE-mysql-mongodb-redis-nginx-jenkins-%E7%8E%AF%E5%A2%83


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM