網站首頁 編程語言 正文
docker概念
docker是一種容器技術,用來創造獨立的軟件容器,屬于操作系統的虛擬化技術,隔離的進程獨立于宿主和其他隔離的進程。
docker容器對比虛擬機
虛擬機:需要有必要的二進制庫和完整的操作系統,并且占據所有預分配的資源。
docker容器:與宿主共享操作系統,可以實現資源的動態分配,在用戶空間以分離的進程運行
docker鏡像、容器和倉庫
鏡像是文件,容器是進程;他們之間的關系像是類和實例化對象的關系,一個類可以有多個實例化對象。而倉庫是一個其中的存儲、分發鏡像的服務。docker pull
是從倉庫下載docker鏡像到本地,docker run
是創建一個容器并運行一個命令,docker exec -it
是在運行的容器中執行命令
docker安裝
根據自己的系統選擇安裝方式docker安裝
docker使用
1.簡單嘗試:使用docker pull nginx:latest
下載一個最新的nginx鏡像。
2.使用命令docker run --name my-nginx -p 80:80 -d nginx:latest
,創建一個容器,命令為my-nginx,-d
表示后臺運行并返回容器的ID,-p
將端口指定到宿主的80端口。打開瀏覽器訪問80端口
3.使用命令docker exec -it my-nginx bash
開啟一個交互模式終端
其中第一步不是必須,在執行docker run
命令時找不到鏡像時會自動從倉庫拉取
docker常見命令
命令 | 作用 |
---|---|
docker pull | 從倉庫下載鏡像 |
docker images | 查看所有本地鏡像 |
docker rmi | 刪除鏡像 |
docker run | 創建容器并執行命令 |
docker rm | 刪除容器 |
docker stop | 停止容器,同理還有restart、start |
docker logs | 查看容器日志 |
docker exec bash | 進入容器中執行其他命令 |
單容器部署最基本的django
嘗試部署最基本的django項目
創建django項目
命令行輸入django-admin startproject mysite
,進入創建的django文件夾中我們可以看見整個項目結構
此時我需要在項目根目錄下創建Dockerfile
文件,該文件用于生成docker鏡像,內容如下
# 建立 python3.7 環境 FROM python:3.7 # 鏡像作者 MAINTAINER LALALA # 設置 python 環境變量 ENV PYTHONUNBUFFERED 1 # 設置pip源為國內源 COPY pip.conf /root/.pip/pip.conf # 在容器內創建mysite文件夾 RUN mkdir -p /var/www/html/mysite # 設置容器內工作目錄 WORKDIR /var/www/html/mysite # 將當前目錄文件加入到容器工作目錄中(. 表示當前宿主機目錄) ADD . /var/www/html/mysite # pip安裝依賴 RUN pip install -r requirements.txt
繼續在項目根目錄下創建pip.conf文件,用于修改pip鏡像源
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=mirrors.aliyun.com
最后創建requirements.txt
文件,因為只需要django,只需要安裝django即可
Django==3.2.12
項目內容設置完后,在項目根目錄輸入命令docker build -t django_docker_img:v1 .
創建鏡像,使用命令docker images
查看鏡像,可以看見剛剛創建的鏡像
在Dockerfile
中第一行是from python:3.7
,也就是在創建過程中會從docker倉庫中拉取python:3.7
的鏡像,速度過慢的話請修改你的docker鏡像源,可以直接在docker界面處修改,https://b2bk1nge.mirror.aliyuncs.com
輸入命令docker run -it -d -p 80:8000 --name mysite django_docker_img:v1
創建并運行容器,此命名將該容器映射到本地80端口,使用docker ps
查看運行情況。然后使用命令docker exec -it mysite bash
進入容器內部,會發現此刻處于Dockerfile
中設置的工作目錄,該目錄下內容即為項目文件內容,pip已安裝requirement.txt
中的依賴
最后在容器的bash中執行下面命令,完成數據庫遷移和運行django項目
python manage.py makemigrations python manage.py migrate python manage.py runserver 0.0.0.0:8000 # 務必寫0.0.0.0,如果是127.0.0.1是容器的環回地址,會導致在宿主機中無法訪問
此時在瀏覽器中訪問http://127.0.0.1/
可以看到運行的django項目
小結
原文鏈接:https://blog.csdn.net/qq_43606857/article/details/123900218
相關推薦
- 2022-09-23 MongoDB慢查詢與索引實例詳解_MongoDB
- 2022-07-04 PyTorch計算損失函數對模型參數的Hessian矩陣示例_python
- 2023-01-13 Pytorch實現Fashion-mnist分類任務全過程_python
- 2022-04-04 uni-app 數據上拉加載更多功能
- 2023-12-25 fiddler展示接口的響應時間
- 2022-12-26 C++?Boost?log日志庫超詳細講解_C 語言
- 2022-03-20 詳解C語言對字符串處理函數的實現方法_C 語言
- 2022-08-26 Pandas?DataFrame.drop()刪除數據的方法實例_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支