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 Flask

app = 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

<think>嗯,用户让我介绍一下Docker使用。首先,我需要确定用户对Docker的了解程度。可能他们听说过Docker,但不太清楚具体是什么,或者已经有一些基础,想进一步了解如何使用。不过根据问题本身,看起来用户可能是一个刚开始接触Docker的新手,所以需要从基础开始解释。 首先,我应该定义Docker是什么。Docker是一个开源的应用容器引擎,基于容器化技术,允许开发者打包应用及其依赖到一个可移植的容器中。然后,需要解释容器和虚拟机的区别,比如容器更轻量级,共享宿主机的内核,而虚拟机需要独立的操作系统。 接下来,用户可能需要了解Docker的核心概念。比如镜像(Image)和容器(Container),以及Dockerfile和Docker Compose。这些是使用Docker的基础,必须逐一解释清楚,避免混淆。 然后,应该介绍如何安装Docker。不同操作系统有不同的安装方法,比如在Ubuntu上使用apt安装,或者通过Docker官网下载安装包。这里需要简要说明步骤,但可能不需要太详细,因为用户可能已经安装好了,或者可以自行查找具体安装步骤。 接下来是基本使用命令,这部分很重要。用户需要知道如何拉取镜像、运行容器、查看正在运行的容器、停止和删除容器等。例如,docker pull、docker run、docker ps、docker stop、docker rm等命令。这些命令是日常使用中最频繁的,需要详细说明每个命令的作用和常见参数。 然后是Dockerfile的编写,这是构建自定义镜像的关键。需要解释Dockerfile的基本结构,比如FROM指令指定基础镜像,RUN执行命令,COPY复制文件,EXPOSE暴露端口,CMD设置启动命令。最好能给出一个简单的例子,比如基于Ubuntu安装Nginx的Dockerfile,这样用户更容易理解。 Docker Compose部分,用户可能需要管理多个容器,这时候Docker Compose就派上用场了。需要说明docker-compose.yml文件的结构,以及如何使用docker-compose up命令启动多个服务。例如,一个包含Web应用和数据库的示例配置文件,帮助用户理解多容器应用的编排。 网络和数据卷也是Docker的重要部分。网络方面,可以介绍默认的网络类型,如桥接网络,以及如何创建自定义网络。数据卷用于持久化数据,避免容器销毁后数据丢失,需要解释如何挂载卷到容器中。 最后,实际应用场景和注意事项。比如在开发、测试、持续集成中的使用,以及镜像优化、安全性的考虑。注意事项部分要提醒用户不要以root权限运行容器,及时更新镜像等安全问题。 在整理回答时,要确保结构清晰,分步骤介绍,每个部分用标题和列表形式呈现,方便用户阅读。同时,要检查所有的命令和代码示例是否正确,避免语法错误。还要注意使用中文,避免专业术语的直译,让内容更易懂。 可能用户的需求不仅仅是了解基本概念,而是想快速上手使用Docker部署自己的应用。因此,除了基本命令,实际应用的例子会更有帮助。比如,如何将本地的Python应用打包成镜像,运行并访问。或者如何通过Docker Compose部署一个包含后端服务和数据库的环境。 另外,需要提醒用户常见的问题,比如端口映射错误、卷挂载路径不正确、镜像构建失败等,可能的解决方法。但可能因为篇幅限制,不能在介绍中详细展开,但可以提到这些常见问题,并建议查阅更详细的文档或资源。 总结一下,介绍Docker需要从概念出发,逐步深入到安装、基本命令、镜像构建、多容器管理、网络和数据管理,最后给出应用场景和注意事项。确保逻辑清晰,步骤明确,示例实用,帮助用户建立全面的理解并能够动手实践。</think>### Docker 简介与核心概念 Docker 是一种**容器化技术**,允许开发者将应用及其依赖打包成轻量级、可移植的容器,实现**一次构建,随处运行**。与虚拟机不同,Docker 容器直接共享宿主机的操作系统内核,因此启动更快、资源占用更低。 #### 核心概念 1. **镜像(Image)** - 静态的模板文件,包含应用代码、运行环境、库等,如 `ubuntu:20.04`、`nginx:latest`。 2. **容器(Container)** - 镜像的运行实例,提供隔离的进程空间。 3. **Dockerfile** - 用于定义镜像构建步骤的脚本文件。 4. **Docker Compose** - 通过 YAML 文件管理多容器应用。 --- ### 安装 Docker 以 **Ubuntu** 为例: ```bash # 更新软件包索引 sudo apt update # 安装依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common # 添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加仓库 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 安装 Docker sudo apt update sudo apt install docker-ce ``` --- ### 基本使用命令 #### 1. 镜像操作 - **拉取镜像**: ```bash docker pull ubuntu:20.04 ``` - **列出本地镜像**: ```bash docker images ``` - **删除镜像**: ```bash docker rmi <镜像ID> ``` #### 2. 容器操作 - **启动容器**(以交互模式运行): ```bash docker run -it --name my_container ubuntu:20.04 /bin/bash ``` - `-i`:保持标准输入打开 - `-t`:分配伪终端 - **查看运行中的容器**: ```bash docker ps ``` - **停止容器**: ```bash docker stop <容器ID> ``` - **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值