Docker详细使用
文章目录
使用场景
以下场景使用的命令如果不知参数什么意思可以在下面【功能列表】中查询
docker安装
https://docs.docker.com/engine/install/
常用命令
帮助启动类命令
说明 | 命令 |
---|---|
启动docker | systemctl start docker |
停止docker | systemctl stop docker |
重启docker | systemctl restart docker |
查看docker状态 | systemctl status docker |
开机启动 | systemctl enable docker |
查看docker概要信息 | docker info |
查看docker总体帮助文档 | docker --help |
查看docker命令帮助文档 | docker 具体命令 --help |
镜像命令
说明 | 命令 |
---|---|
列出本地主机上的镜像 | docker images |
搜索镜像 | docker search {镜像名字} |
下载镜像 | docker pull {镜像名字:版本} |
删除镜像 | docker rmi -f {镜像ID} |
网络命令
说明 | 命令 |
---|---|
查看网络 | docker network ls |
查看网络源数据 | docker network inspect {网络名字} |
删除网络 | docker network rm {网络名字} |
创建网络(默认创建的是bridge模式) | docker network create {网络名字} |
容器命令
说明 | 命令 |
---|---|
列出当前所有正在运行的容器 | docker ps |
列出当前所有的容器(包含历史) | docker ps -a |
新建+启动容器 | docker run(详细命令看下面) |
启动已停止运行的容器 | docker start {容器ID或者容器名} |
停止容器 | docker stop {容器ID或者容器名} |
强制停止容器 | docker kill {容器ID或容器名} |
重启容器 | docker restart {容器ID或者容器名} |
删除已停止的容器 | docker rm {容器ID} |
查看容器日志 | docker logs {容器ID} |
查看容器内运行的进程 | docker top {容器ID} |
查看容器内部细节 | docker inspect {容器ID} |
进入正在运行的容器并以命令行交互 | docker exec -it {容器ID} /bin/b}ash |
从容器内拷贝文件到主机上 | docker cp {容器ID:容器内路径} {主机路径} |
从主机上拷贝文件到容器内 | docker cp {主机路径} {容器ID:容器内路径} |
新建+启动容器
shell
# -i:以交互模式运行容器,通常与 -t 同时使用;
# -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# -d:后台执行
# -p:指定端口映射
# --network:网络名,必须是已存在的,如果不存在需要先创建网络(详细可参考下面网络章节)
# -v 卷映射,将容器数据映射到本地(详细可参考下面存储(挂载本地)章节)
# --name:容器名
docker run -it -d \
-p {对外端口:程序端口} \
-v {本地目录或卷目录:容器程序目录} \
--network {网络名} \
--name={容器新名字} \
{容器名}
# 例子
docker run -it -d \
-p 9789:80 \
-v /sensorsdata/main/packages/test/nocobase:/app/nocobase \
--network my-bridge-network \
--name=ubp_dev_c140_new_name \
ubp_dev_140
compose(服务编排)
以下命令需要在【docker-compose.yml】文件目录下执行
说明 | 命令 |
---|---|
启动所有docker-compose服务并后台运行 | docker compose up -d |
停止并删除容器、网络、卷、镜像 | docker compose down |
进入容器实例内部 | docker compose exec {docker-compose.yml文件中写的服务id} /bin/bash |
展示当前docker-compose编排过的运行的所有容器 | docker compose ps |
展示当前docker-compose编排过的容器进程 | docker compose top |
查看容器输出日志 | docker compose logs yml里面的服务id |
检查配置 | docker compose config |
检查配置,有问题才有输出 | docker compose config -q |
重启服务 | docker compose restart |
启动服务 | docker compose start |
停止服务 | docker compose stop |
功能列表
存储(挂载本地)
映射,容器内的数据备份+持久化到本地主机目录
介绍
- 分为目录挂载 和卷映射
- 相同点
- 都是将容器里的目录挂载到本地目录
- 当被挂载的本地目录存在时使用本地目录下的内容,如果本地目录不存在则自动创建目录
- 不同点
- 目录挂载:本地挂载目录不存时会自动创建,**
不会
**将容器的挂载目录内容拷贝到本地 - 卷映射:本地挂载目录不存时会自动创建,**
会
**将容器的挂载目录内容拷贝到本地
- 目录挂载:本地挂载目录不存时会自动创建,**
使用
⽬录挂载
shell
# -v :挂载
# 将docker容器的【/usr/share/nginx/html】目录挂载到本地【/tmp/nghtml】目录
-v /tmp/nghtml:/usr/share/nginx/html
卷映射
shell
# -v :挂载
# 将docker容器的【/etc/nginx】目录卷映射到【ngconf】卷中
-v ngconf:/etc/nginx
# 查看docker所有的卷
docker volume ls
# 查看这个卷挂载的详细信息(卷名称、卷挂载的本地目录)
# {VOLUME NAME}:卷名
docker volume inspect {VOLUME NAME}
网络
介绍
作用
- 容器间的互联和通信以及端口映射
- 容器IP变动时候可以通过服务名直接网络通信而不受到影响
模式介绍
- bridge模式:让主机和容器之间可以通过网桥相互通信
- 使用--network bridge指定,默认使用docker0
- host模式:直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换
- 使用--network host指定
- none模式:不为Docker容器进行任何网络配置
- 使用--network none指定
- container模式:新创建的容器不会创建自己的网卡,配置自己的IP
- 使用--network container:NAME或者容器ID指定
使用
- bridge模式:使用--network bridge
- host模式:使用--network host
- none模式:使用--network none
- container模式:使用--network container:NAME或者容器ID
Dockerfile
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
https://docs.docker.com/reference/dockerfile/
Compose
https://docs.docker.com/reference/compose-file/
介绍
- 实现对Docker容器集群的快速编排
- Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)
- 可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。
使用
步骤
- 编写docker-compose.yml文件
- 启动并运行整个应用程序,完成一键部署上线:
docker-compose up -d