当前位置: 首页 > news >正文

Docker使用小结

概念
  • 镜像( Image ) :相当于一个 root 文件系统;镜像构建时,分层存储、层层构建;
  • 容器( Container ) :镜像是静态的定义,容器是镜像运行时的实体;容器的实质是进程;分层存储;所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录;
  • 仓库( Repository ):一个仓库会包含同一个软件不同版本的镜像
常用命令
命令作用
docker command --help查看命令帮助
docker ps显示正在运行的容器信息
docker start CONTAINER ID启动已停止的容器
docker restart CONTAINER ID重启已停止的容器
docker logs CONTAINER ID查看容器内的标准输出
docker stop停止容器
docker rm
docker inspect获取容器或镜像的详细信息
docker build -t使用 Dockerfile 构建镜像
docker images列出本地存储的所有镜像
docker pull从 Docker 仓库拉取镜像
docker push将镜像推送到 Docker 仓库
docker exec在运行的容器中执行命令
docker login登录 Docker 仓库
docker logout登出 Docker 仓库
docker info显示 Docker 系统的详细信息
docker network ls列出所有 Docker 网络
docker volume ls列出所有 Docker 卷
Docker镜像制作流程
1.创建工作目录
mkdir test_docker_app
cd test_docker_app

目录结构:

test-flask-app/
├── app.py
└── requirements.txt

app.py

from flask import Flaskapp = Flask(__name__)@app.route('/')
def test():return "Test Docker!"if __name__ == "__main__":app.run(host='0.0.0.0', port=5000)

requirements.txt

flask
2.编写Dockerfile

在test-flask-app/目录下新建Dockerfile文件:

nano Dockerfile

DockerFile内容:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 将当前目录下的文件复制到容器中的 /app 目录
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露端口
EXPOSE 5000# 容器启动后运行的命令
CMD ["python", "app.py"]

Ctrl + O :输入文件名DockerFile
Ctrl + X :退出 nano 编辑器

3.构建镜像

在test-flask-app/目录下执行:

docker build -t test-flask-app .

其中:

  • -t my-flask-app:给镜像打标签。
  • .:表示当前目录是构建上下文。

输出:

[+] Building 23.5s (9/9) FINISHED                                                                                                                                                                                                                              docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                                                                                     0.0s=> => transferring dockerfile: 372B                                                                                                                                                                                                                                     0.0s=> [internal] load metadata for docker.io/library/python:3.9-slim                                                                                                                                                                                                       7.7s=> [internal] load .dockerignore                                                                                                                                                                                                                                        0.0s=> => transferring context: 2B                                                                                                                                                                                                                                          0.0s=> [internal] load build context                                                                                                                                                                                                                                        0.0s=> => transferring context: 636B                                                                                                                                                                                                                                        0.0s=> [2/4] WORKDIR /app                                                                                                                                                                                                                                                   0.3s=> [3/4] COPY . /app                                                                                                                                                                                                                                                    0.0s=> [4/4] RUN pip install --no-cache-dir -r requirements.txt                                                                                                                                                                                                             6.9s=> exporting to image                                                                                                                                                                                                                                                   0.3s => => exporting layers                                                                                                                                                                                                                                                  0.3s => => writing image sha256:bf19d7bb90c28b356e5e4ac5e31c831fe3495c85731175740dd94352d91be009                                                                                                                                                                             0.0s => => naming to docker.io/library/test-flask-app          
4.查看镜像:
docker images
REPOSITORY                                      TAG                       IMAGE ID       CREATED          SIZE                                                                                                                                                                
test-flask-app                                    latest                    bf19d7bb90c2   20 seconds ago   136MB
5.运行容器
docker run -d -p 5000:5000 --name my-flask-container test-flask-app
  • -d:后台运行
  • -p 5000:5000:将宿主机的 5000 端口映射到容器的 5000 端口
  • –name:为容器命名
6. 测试访问
curl http://localhost:5000

打印出:

Test Docker!

或浏览器访问:http://localhost:5000

相关文章:

  • vim的配置
  • Qt解决自定义窗口样式不生效问题
  • 【小沐学GIS】基于C++绘制二维瓦片地图2D Map(QT、OpenGL、GIS)
  • Python与YOLO:自动驾驶中的实时物体检测
  • python:ASCII-generator 实用教程
  • MySQL COUNT(*) 查询优化详解!
  • AI文本分类
  • 【Web】LACTF 2025 wp
  • STM32CUBEIDE开发实战:ADC与UART应用
  • 【从零实现JsonRpc框架#3】线程模型与性能优化
  • Python----神经网络(《Deep Residual Learning for Image Recognition》论文和ResNet网络结构)
  • AI 驱动数据库交互技术路线详解:角色、提示词工程与输入输出分析
  • 计网学习笔记———网络
  • 圆角边框 盒子阴影 文字阴影
  • 线程互斥与线程同步
  • golang-ErrGroup用法以及源码解读笔记
  • Flutter - UIKit开发相关指南 - 概览
  • 手写系列——transformer网络完成加法和字符转译任务
  • Doris和Clickhouse对比
  • 智能时代下,水利安全员证如何引领行业变革?
  • 宣布停火后,印控克什米尔地区再次传出爆炸声
  • 印巴战火LIVE丨“快速接近战争状态”?印度袭击巴军事基地,巴启动反制军事行动
  • 教育部答澎湃:2025世界数字教育大会将发布系列重磅成果
  • “降息潮”延续!存款利率全面迈向“1时代”
  • 商务部再回应中美经贸高层会谈:美方要拿出诚意、拿出行动
  • 上海“随申兑”服务平台有哪些功能?已归集800余个惠企政策