Docker详细使用

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
相关推荐
Dovis(誓平步青云)4 小时前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
迎仔4 小时前
05-计算设备运维进阶:算力中心的设备医生
运维
小Pawn爷5 小时前
3.Dockerfile
docker
CodeGolang5 小时前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
石去皿5 小时前
【嵌入式就业10】Linux内核深度解析:从启动流程到驱动框架的工业级实践
linux·运维·服务器
954L5 小时前
CentOs7执行yum update出现链接404问题
linux·centos·yum·vault
Wpa.wk5 小时前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
Trouvaille ~5 小时前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
是枚小菜鸡儿吖5 小时前
从 0 到 1 生成自定义算子:CANN + AIGC 的自动化工作流
运维·自动化·aigc
EmbedLinX5 小时前
嵌入式之协议解析
linux·网络·c++·笔记·学习