工程实践:Docker入门技巧
前面介绍了如何用Docker打包自己的项目,这次要讲一下Docker的一些基本操作。
查看Docker版本
首先是如何查看Docker的版本:
1 |
|
获取镜像
Docker的基础用法之一就是从官方库拉取镜像来创建容器,只要执行以下命令:
1 |
|
例如:
1 |
|
运行容器
要运行容器,则需要执行以下命令:
1 |
|
例如:
1 |
|
Docker run命令
Docker的run命令包含多个命令:
--name
为容器命名,-d
在后台运行:
1 |
|
-P
指定随机端口映射,容器内部端口随机映射到主机的端口,-p
指定端口映射,语法是-p <host-port>:<container-port>
:
1 |
|
也可以同时映射多个端口:
1 |
|
-v
挂载目录,挂载卷允许你将主机上的文件或目录与容器内的文件或目录进行关联,从而实现数据的持久化和共享。语法是-v <host-path>:<container-path>
。假设有一个名为my_app
的容器,它需要访问主机上的/data
目录中的数据文件,则需要输入以下指令:
1 |
|
上述指令中,/host/path
是主机上的路径,例如 /data
。/container/path
是容器内的路径,例如容器中的应用程序期望的路径。
-rm
删除容器后自动删除卷,这个指令会运行容器,并在停止后自动删除:
1 |
|
-i
,-t
交互式选项。有的时候需要在容器内有一些交互操作,就需要使用这两个选项:
1 |
|
上述例子中,启动了一个交互式的 Ubuntu 容器,并将其连接到 Bash 终端。这允许直接在容器内执行命令,输入数据等。如果省略了 -i
和 -t
,那么容器可能会在后台运行,并且无法直接与其进行交互。因此,如果只是希望在后台运行一个服务,而不需要直接与容器进行交互,那么可以省略这两个选项。
启动已停止的容器
要启动已经停止的容器,首先要查看容器的ID,随后使用start
指令来启动,代码如下:
1 |
|
停止和重启Docker
要停止docker,需要使用stop
指令。重启docker,则使用restart
指令。如下:
1 |
|
进入后台的Docker
使用run -d
会让docker在后台运行,此时只要使用exec
+/bin/bash
就可以进入后台docker:
1 |
|
后面加上的/bin/bash
是指在容器内打开一个交互式的Bash终端。
Docker exec命令
Docker exec主要用于在运行中的容器内执行命令。这有很多种用法,例如:
- 容器内部命令执行: 你可以使用
docker exec
在容器内执行命令,而不必进入容器的交互式终端。这对于执行一次性任务或调试容器内的问题非常有用。
1 |
|
- 进入容器内部交互式 Shell: 通过执行交互式 Shell(例如 Bash),你可以进入容器内部的终端,以便在容器内部执行多个命令。
1 |
|
- 查看容器日志: 使用
docker exec
可以查看容器的日志,而无需停止容器。这对于实时监控容器的运行状态非常有用。
1 |
|
- 在运行中的服务中执行管理命令: 对于运行中的服务,你可以使用
docker exec
执行一些管理命令,例如数据库操作、Web 服务器的重新加载配置等。
1 |
|
- 容器内部文件操作: 你可以使用
docker exec
在容器内部进行文件操作,例如查看、复制或修改文件。
1 |
|
删除容器与镜像
删除容器就是rm
:
1 |
|
要清理所有停止的容器,则需要执行以下命令:
1 |
|
强制杀死容器
有时候可能会遇到应用崩溃的情况,这时候需要使用kill
指令杀死容器:
1 |
|
Docker rm命令
- -f :通过 SIGKILL 信号强制删除一个运行中的容器。
- -l :移除容器间的网络连接,而非容器本身。
- -v :删除与容器关联的卷。
例如:
1 |
|
删除镜像则是rmi
命令:
1 |
|
使用Python的简单用例
可以使用 Docker Hub 上提供的官方 Python 镜像来创建一个 Python 3.9 的容器。以下是步骤:
拉取 Python 3.9 镜像: 打开终端或命令提示符,并执行以下命令来拉取 Python 3.9 镜像:
1
docker pull python:3.9
这会从 Docker Hub 下载 Python 3.9 镜像到你的本地系统。
运行 Python 3.9 容器: 一旦下载完成,你可以通过以下命令运行一个 Python 3.9 容器:
1
docker run -it python:3.9 /bin/bash
这个命令使用
-it
选项进入交互模式,并在容器内启动 Bash 终端。验证 Python 版本: 在容器内部,你可以使用以下命令验证 Python 版本:
1
python --version
想要在这个Python容器中写对外开放的服务?
和之前一样,需要运行python容器时开放端口:
1 |
|
这是一个更具体的例子,在python3.9的容器运行了your_flask_app.py
:
1 |
|
2024/1/23 于苏州家中