天天看點

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

10分鐘,快速學會docker

  • 1 總體框圖
  • 2 快速入門
    • 2.1 擷取鏡像
    • 2.2 檢視本地鏡像
    • 2.3 運作鏡像
    • 2.4 檢視正在運作的容器
    • 2.5 修改容器
    • 2.6 删除容器
    • 2.7 送出容器
    • 2.8 通過dockerfile建構鏡像跑成容器
    • 2.9 儲存檔案和重新加載
    • 2.10 其他摘抄
      • 小狐狸的筆記
      • 入門操作
  • 3 多容器部署
    • 3.1 運作nginx容器,并檢視ip
    • 3.2 運作alpine容器通過curl通路nginx
    • 3.3 通過--link參數
    • 3.4 三個容器的組織nginx、php、mysql
    • 3.5 docker-compose
    • 3.6 代碼解析:
  • 4 參考

1 總體框圖

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

2 快速入門

2.1 擷取鏡像

docker pull nginx
docker pull nginx:latest
           

2.2 檢視本地鏡像

docker images
           

2.3 運作鏡像

docker run -d -p 80:80 nginx
           

-d 背景運作

-p 内外端口映射

2.4 檢視正在運作的容器

docker ps
           

2.5 修改容器

docker exec -it xxxx bash
           

-it 接容器id

xxxx是容器ID的代号前兩位

2.6 删除容器

docker rm -f xxx
           

xxx為容器ID

2.7 送出容器

docker commit xxx name
           

xxx為容器ID

2.8 通過dockerfile建構鏡像跑成容器

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
  • 建立dockerfile檔案(寫法自行查閱官方文檔)
    【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
  • 然後在目前目錄建立index.html
    【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
  • build打包成鏡像,此時通過鏡像運作容器,nginx的index檔案顯示為上述内容
    【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

2.9 儲存檔案和重新加載

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

儲存

docker save name(鏡像名稱) > name(tar檔案名稱).tar
           
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

加載

docker load < name(tar檔案名稱).tar
           
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

2.10 其他摘抄

小狐狸的筆記

安裝和常用CLI:
添加阿裡雲鏡像:sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝指令:sudo yum install -y  docker-ce docker-ce-cli containerd.io
啟動指令:sudo systemctl start docker
添加目前使用者到docker使用者組:sudo usermod -aG docker $USER (需登出),newgrp docker (立即生效)
Helloworld:docker run hello-world  (本地沒有鏡像的話會自動從遠端倉庫pull)
pull nginx 鏡像:docker pull nginx(等效于nginx:latest)
運作:docker run -【d】(背景運作不阻塞shell) 【-p 80:80】(指定容器端口映射,内部:外部) nginx
檢視正在運作:docker ps
删除容器:docker rm -f <container id(不用打全,字首區分)>
進入bash:docker exec -it <container id(不用打全,字首區分)> bash
commit鏡像:docker commit <container id(不用打全,字首區分)>  <name>
檢視鏡像清單:docker images (剛才commit的鏡像)
使用運作剛才commit的鏡像:docker run -d <name>
使用Dockerfile建構鏡像:docker build -t <name> <存放Dockerfile的檔案夾>
删除鏡像:docker rmi <name>
儲存為tar:docker save <name> > <tar name>
從tar加載:docker load < <tar name>

一些啟動參數:
背景運作容器:-d
容器内外端口映射:-p 内部端口号:外部端口号
目錄映射:-v 'dir name' : <dir>
指定映像版本:<name>:<ver>

           

入門操作

入門操作

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

3 多容器部署

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

3.1 運作nginx容器,并檢視ip

docker run -d -p 80:80 --name mynginx nginx
docker ps
docker exec -it mynginx bash
cat /etc/hosts
           
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

172.17.0.2是容器的ip

然後我們退出(exit)然後又啟動一個新的容器

3.2 運作alpine容器通過curl通路nginx

docker run -dit alpine
docker exec -it xxxx(容器id) sh

apk add curl
curl 172.17.0.2
           
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

3.3 通過–link參數

--link 
           

把另一個容器映射到本容器裡面(通過修改/etc/hosts檔案)

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

3.4 三個容器的組織nginx、php、mysql

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

注意:建立順序需要先mysql,然後啟動php的時候link參數映射到mysql,同理類推~

這樣對運維來說太麻煩了,有什麼好方法嗎?docker-compose

3.5 docker-compose

視訊位址:https://www.bilibili.com/video/BV1Wt411w72h?from=search&seid=3688284699898465652

項目分為三個子產品

  • nginx
  • php
  • mysql

目錄結構如下

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

使用方式

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

然後就啟動完成了, 如下圖

CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                NAMES
25b3b7498399        nginx:alpine                      "nginx -g 'daemon of…"   50 seconds ago      Up 3 seconds        0.0.0.0:80->80/tcp   docker-compose-demo-1_nginx_1
c8aa834d8a6f        devilbox/php-fpm:8.0-work-0.106   "/docker-entrypoint.…"   50 seconds ago      Up 3 seconds        9000/tcp             docker-compose-demo-1_php_1
de051f9b9569        mysql:5.6                         "docker-entrypoint.s…"   50 seconds ago      Up 3 seconds        3306/tcp             docker-compose-demo-1_mysql_1
           

3.6 代碼解析:

  • 建立倆檔案夾

    conf

    html

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
  • 然後在conf/下面建立nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}
http {                                                  
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        location ~ \.php$ {                     
            fastcgi_pass    php:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME     /var/www/html/$fastcgi_script_name;    
            include         fastcgi_params;
        }
    }
}
           
  • 然後寫docker-compose.yml
version: "3"
services:
  nginx:
    image: nginx:alpine
    ports:
    - 80:80
    volumes:
    - ./html:/usr/share/nginx/html
    - ./conf/nginx.conf:/etc/nginx/nginx.conf
  php:
    image: devilbox/php-fpm:8.0-work-0.106
    volumes:
    - ./html:/var/www/html
  mysql:
    image: mysql:5.6
    environment:
    - MYSQL_ROOT_PASSWORD=123456
           
  • 在該目錄下運作docker-compose up -d (-d 背景啟動)

流程:

【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考
【docker入門】10分鐘,快速學會docker1 總體框圖2 快速入門3 多容器部署4 參考

4 參考

【docker入門】10分鐘,快速學會docker

【docker入門2】實戰~如何組織一個多容器項目docker-compose

【docker compose示範程式】