python| Docker的安裝


1 Docker的安裝

1
2
3
4
5
6
7
8
9
10
# 1 yum 包更新到最新
yum update
# 2 安裝所需要的軟件包, yum-util 提供yum-config-manager 功能, 另外兩個是 devicemapper驅動以來的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3 設置yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4 安裝docker 出現輸入的界面都按y
yum install -y docker-ce
# 5 查看docker的版本, 驗證是否安裝成功
docker -v

2 Docker 架構

3 配置鏡像加速器

4 Docker 服務相關命令

  • 啟動docker服務

    1
    systemctl start docker
  • 停止docker服務

    1
    systemctl stop docker
  • 重啟docker服務

    1
    systemctl restart docker
  • 查看docker服務狀態

    1
    systemctl status docker
  • 開機啟動docker服務

    1
    systemctl enable docker
  • 查看docker 日志

    1
    docker logs 容器名

5 Docker 鏡像相關命令

  • 查看本地鏡像

    1
    2
    3
    4
    5
    6
    docker images
    # REPOSITORY 指的是容器
    # TAG 指的是版本號
    # IMAGE ID 鏡像的id
    # CREATED 創建時間
    # SIZE 大小

  • 搜索鏡像

    1
    docker search redis
  • 下載鏡像

    1
    2
    3
    4
    5
    docker pull redis
    # 不寫版本號 默認是 lastest
    # 我們在hub.docker.com 搜索 軟件版本號
    docker pull redis:5.0
    # 下載 5.0 版本的 redis
  • 刪除鏡像

    1
    2
    3
    4
    5
    6
    7
    8
    # id 刪除
    docker rmi 鏡像id
    # 版本刪除
    docker rmi redis:版本
    # 查看所有鏡像的id
    docker images -q
    # 刪除所有鏡像
    docker rmi `docker images -q`

6 Docker 容器相關命令

  • 創建容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 1 查看鏡像
    docker images
    # 創建容器
    docker run -it --name=c1 mysql:5.7 /bin/bash
    # -i 表示 容器一直運行着
    # -t 表示 給容器加個偽終端
    # -d 以守護式 模式創建容器
    # -name 表示 起名字 后面可以 = 或者空格
    # 指定鏡像 mysql:5.7
    # /bin/bash 表示進入容器時的初始化指令 默認是 /bin/bash

    1
    # 使用exit 退出容器

    注意 :

    1
    2
    3
    # 使用 -it 創建的容器
    # 創建成功會立馬進入容器
    # 在退出容器后會立馬停止容器

    創建后台運行的容器

    1
    2
    # 創建的容器會在后台運行.
    docker run -id --name=m2 mysql:5.7
  • 查看容器

    1
    2
    3
    4
    # 查看正在運行的容器
    docker ps
    # 查看所有容器
    docker ps -a
  • 進入容器

    1
    docker exec -it 容器名 /bin/bash
  • 啟動容器

    1
    docker start 容器名
  • 停止容器

    1
    docker stop 容器名
  • 刪除容器

    1
    2
    docker rm  容器名
    # 開啟的容器是不能被刪除
  • 容器其他信息

    1
    docker inspect 容器名
  • 查看容器日志

    1
    docker logs 容器名

容器啟動錯誤解決

  • Errcode: 13 - Permission denied)

    1
    2
    # 在創建容器時 加上
    -–privileged=true

7 Docker 容器的 數據卷

  • 數據卷的簡介

  • 配置數據卷

數據卷容器

  • 簡介

  • 配置數據卷容器

  • 數據卷目錄 位置查找

    1
    2
    # 查找容器的具體信息
    docker inspect 容器名

    查找宿主機數據目錄與容器對應目錄

小結

8 Docker的應用部署

Docker 部署 mysql

  • 1 搜索 mysql

    1
    docker search mysql
  • 2 拉取mysql 鏡像

    1
    docker pull  mysql:5.7
  • 3 創建容器

    1
    2
    3
    # 1 在/root 下創建mysql 目錄 用於存儲mysql數據信息
    mkdir ~/mysql
    cd ~/mysql
    1
    2
    3
    4
    5
    6
    7
    8
    docker run -id \
    -p 3306:3306 \
    --name=c_mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=951228 \
    mysql:5.7
    • 參數說明

      • -p 3307:3306 將容器的3306端口映射到宿主機的3307端口
      • -v $pwd/conf:/etc/mysql/conf.d 將主機當前目錄下的conf/my.cnf 掛在到容器的 /etc.mysql/my.cnf 配置目錄
      • -v $pwd/logs:/logs 將 主機當前目錄下的logs 目錄掛在到容器的/logs 日志目錄
      • -v $pwd/data:/var/lib/mysql 講主機當前目錄下的data 目錄 掛載到容器的 /var/lib/mysql 數據目錄
      • -e MYSQL_ROOT_PASSWORD=123456 初始化root用戶的密碼
    • Mysql 5.7 默認配置文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      # For advice on how to change settings please see
      # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

      [mysqld]

      # Remove leading # and set to the amount of RAM for the most important data
      # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
      # innodb_buffer_pool_size = 128M

      # Remove leading # to turn on a very important data integrity option: logging
      # changes to the binary log between backups.
      # log_bin

      # These are commonly set, remove the # and set as required.
      # basedir = .....
      # datadir = .....
      # port = .....
      # server_id = .....
      # socket = .....

      # Remove leading # to set options mainly useful for reporting servers.
      # The server defaults are faster for transactions and fast SELECTs.
      # Adjust sizes as needed, experiment to find the optimal values.
      # join_buffer_size = 128M
      # sort_buffer_size = 2M
      # read_rnd_buffer_size = 2M

      sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  • docker 中配置默認路徑

    1
    /usr/my.cnf

Docker 部署 Tomcat

1
# 注意 需要進入 tomcat 容器內 把 webapps.disp 改名為 webapps , 不然訪問不到主頁
  • 1 搜索tomcat鏡像

    1
    docker search tomcat
  • 2 拉去tomcat 鏡像

    1
    docker pull tomcat
  • 3 創建容器, 設置端口映射, 目錄映射

    1
    2
    mkdir ~/tomcat
    cd ~/tomcat
    1
    2
    3
    4
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    • 參數解釋同上

Docker 部署 Nginx

1
2
# 注意, 首先要創建nginx.conf 文件 用於管理 容器的nginx
# 在 宿主nginx 文件夾下創建/conf/nginx.conf 用於映射 容器nginx配置文件

Nginx 原始配置文件

1
2


  • 搜索nginx鏡像

    1
    docker search nginx
  • 拉去nginx 鏡像

    1
    docker pull nginx
  • 創建nginx 容器

    1
    2
    3
    4
    5
    6
    mkdir ~/nginx
    cd mkdir ~/nginx
    # 創建 conf 文件夾
    mkdir conf
    # 在conf 文件夾下創建 nginx.conf 文件, 粘貼下面內容
    vim nginx.conf
  • 准備好 nginx 配置文件

    1
    2
    3
    4
    5
    user  nginx;
    worker_processes 1;

    error_log /var/log/nginx/error.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;

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

}

1
2
3
4
5
6
7
8
9
10

- 創建nginx 容器

```bash
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
  • 參數說明

    1
    2
    3
    4
    # -p 80:80 宿主機80 端口 映射 容器的80端口
    # -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf 使用宿主機 nginx.conf 配置文件映射到 容器的配置文件
    # -v $PWD/logs:/var/log/nginx 掛在log 目錄文件
    # -v $PWD/html:/usr/share/nginx/html

Docker 部署 Redis

  • 1 搜索 Redis

    1
    docker search redis
  • 2 拉去鏡像

    1
    docker pull redis:5.0
  • 3 創建容器 映射端口

    1
    docker run -id --name=c_redis -p 6379:6379 redis:5.0

9 Docker 鏡像原理

10 Docker 鏡像制作

第一種方式

容器轉鏡像

第二種方式

dockerfile

關鍵字

Dockerfile 案例1

構建鏡像

1
2
3
docker built -f centos_dockerfile -t itheima_centos:1.0
# -f 找到 dockerfile 文件
# -t 指定 新鏡像的名稱及版本

Dockerfile 案例2

11 Docker的服務編排

介紹

Docker Compose

1 安裝 Docker Compose

1
2
3
4
5
6
# Compose 目前已經完全支持Linux , Macos 和Windows, 在我們安裝Compose 之前, 需要先安裝Docker, 下面我們以編譯好的二進制包方式安裝在Linux系統中.
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose=`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 設置文件可執行權限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version

2 卸載 Docker Compose

1
2
# 而今之寶方式安裝的, 刪除二進制文件即可
rm /usr/local/bin/docker-compose

3 使用

  • 1 創建 docker-compose 目錄

    1
    2
    mkdir ~/docker-compose
    cd ~/docker-compose
  • 2 編寫 docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    version: '3'
    services:
    nginx:
    image: nginx
    ports:
    - 80:80
    links:
    - app
    valumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
    app:
    image: app
    expose:
    - "8080"
  • 3 創建./nginx/conf.d 目錄

    1
    2
    mkdir -p ./nginx/conf.d
    # -p 表示是在父文件夾
  • 4 在 ./nginx/conf.d 目錄下 編寫 nginx 的 conf 文件. 文件必須是 conf 文件 名字無所謂

    1
    2
    3
    4
    5
    6
    7
    8
    server {
    listen 80;
    access_log off;

    location / {
    proxy_pass http://app:8080;
    }
    }
  • 5 在 ~/docker-compose 目錄下 使用 docker-compose 啟動容器

    1
    docker-compose up
  • 6 測試訪問

    1
    直接訪問 nginx

12 Docker 私有倉庫

一 私有倉庫的搭建

1
2
3
4
5
6
7
8
9
10
11
12
# 1 拉去私有倉庫鏡像
docker pull registry
# 2 啟動私有倉庫容器
docker run -id --name=registry -p 5000:5000 registry
# 3 打開瀏覽器 輸入地址 http://私有倉庫服務器ip:5000/v2/_catalog , 看到 {"repositories":[]} 表示私有倉庫 搭建成功
# 4 修改daemon.json
vim /etc/docker/daemon.json
# 在上述穩健者添加一個key, 保存退出. 此步用於讓docker 新人私有倉庫地址; 注意 講次有倉庫服務器ip 修改為自己私有倉庫服務器的真是ip
{"insecure-registries":["私有倉庫服務器ip:5000"]}
# 5 重啟 docker 服務
systemctl restart docker
docker start registry

二 將 鏡像上傳至私有倉庫

1
2
3
4
5
# 1 標記鏡像為私有倉庫鏡像
docker tag centos:7 私有倉庫服務器ip"5000/contos:7

# 2 上傳標記鏡像
docker push 私有倉庫服務器ip:5000/centos:7

三 私有倉庫的鏡像拉到本地

1
2
docker pull 倉庫ip:5000/centos:7
# 拉取鏡像到本地

13 Docker 與 虛擬機的對比

Docker 容器虛擬化 與 創痛虛擬機比較

 


免責聲明!

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



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