docker 相关指令、API

本文详细介绍如何使用Docker镜像加速器提升下载速度,并演示了如何配置、启动和管理Tomcat容器,包括容器的日志查看、文件复制等操作。
学习链接:https://www.gitbook.com/book/yeasy/docker_practice/details

-- 镜像加速器
请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
  "registry-mirrors": [
    "http://hub-mirror.c.163.com"
  ]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
-- 拉取tomcat 
docker pull tomcat
-- docker 运行容器(启动tomcat服务),通过ip地址访问
docker run -d --name my-tomcat -p 8080:8080 hub.c.163.com/library/tomcat
-- 以交互的形式启动,进入tomcat容器 看一下文件目录 --- 找到 webapps 目录
docker exec -it my-tomcat /bin/bash
-- 将准备好的 web 应用拷贝到 docker my-tomcat 容器, 这里拷贝进去之后会自动部署, 直接就可以访问
docker cp seerhealth.war my-tomcat:/usr/local/tomcat/webapps
-- 查看容器的日志,后面的id是容器运行时产生的容器id
docker logs -f de34920db6191a32fdcb8f83699e52cb454500c7082b9193464a94a5130df006 
-- 查看
docker ps: 查看当前运行的容器
docker ps -a:查看所有容器,包括停止的。
docker inspect [NAME]/[CONTAINER ID]:查看更详细的关于某一个容器的信息。
-- 启动之前已经停止的my-tomcat镜像
docker start my-tomcat
-- 终止
docker stop [NAME]/[CONTAINER ID]:将容器退出。
docker kill [NAME]/[CONTAINER ID]:强制停止一个容器
-- 删除
docker rm [NAME]/[CONTAINER ID]:不能够删除一个正在运行的容器,会报错。需要先停止容器
-- 下面的命令启动一个tomcat容器,当tomcat容器停止后或者Docker被重启时,tomcat容器都会重启
docker run -dit --restart unless-stopped hub.c.163.com/library/tomcat
-- 如果创建时未指定 --restart=always ,可通过update 命令设置
docker update --restart=always my-tomcat
### 使用 Docker 部署 FastAPI 并连接相关数据库 #### 准备工作 为了确保顺利部署,需确认所有服务之间的网络通信正常。特别是当涉及多个微服务架构时,应验证各组件间 IP 地址设置无误,在生产环境中避免使用 `localhost` 进行内部服务间的调用[^3]。 #### 创建 FastAPI 应用程序 FastAPI 是基于 Python 的现代 Web 框架,支持异步编程模型并提供强大的数据校验能力。创建一个新的 FastAPI 项目前,建议初始化虚拟环境来管理依赖项,并安装必要的库文件如 uvicorn 和 fastapi 自身[^1]。 ```bash pip install fastapi[all] pip install "uvicorn[standard]" ``` #### 编写 Dockerfile 文件 定义一个名为 `Dockerfile` 的文本文件用于描述如何打包应用程序及其运行所需的一切资源到容器中去。此文件会指导 Docker 如何组装镜像以及启动容器内的进程[^2]: ```dockerfile FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8-slim COPY ./app /app WORKDIR /app RUN pip install --no-cache-dir -r requirements.txt CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"] ``` 上述命令选择了官方推荐的基础镜像,并指定了应用目录位置、安装Python包列表路径最后通过 CMD 来指定默认执行指令。 #### 数据库集成方案 对于大多数Web应用来说,持久化存储不可或缺。通常情况下会选择关系型或者NoSQL类型的数据库管理系统作为后台支撑。这里以 PostgreSQL 关系型数据库为例说明如何实现与 FastAPI 结合: - **建立外部链接**: 如果数据库实例已经存在于其他地方,则只需修改配置参数即可让 API 访问远程服务器上的 DB; - **共存于同一宿主机上**: 利用 docker-compose 工具可以在单台机器上面轻松搭建起多层架构的应用集群; 下面是一个简单的例子展示如何利用 compose 文件同时拉取两个不同的服务——web api 和 db server : ```yaml version: '3' services: web: build: . ports: - "80:80" environment: DATABASE_URL: postgresql://user:password@db/mydatabase depends_on: - db db: image: postgres:latest volumes: - pgdata:/var/lib/postgresql/data/ volumes: pgdata: ``` 该 YAML 片段不仅实现了前后端分离模式下的跨服通讯还解决了本地开发测试期间的数据保存问题。 #### 测试与发布 完成以上步骤之后就可以尝试构建自己的镜像并通过 push 命令上传至仓库供他人下载使用了。在此之前记得先进行全面的功能性和性能方面的调试优化工作以保证最终版本的质量稳定可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值