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
相关推荐
正点原子6 分钟前
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB测试 #USB HOST #USB 鼠标
linux·功能测试·stm32·嵌入式硬件·计算机外设·usb
淋过很多场雨9 分钟前
现代c++获取linux系统版本号
linux·开发语言·c++
运维老司机22 分钟前
FRP内网穿透代理两个web页面(多端口内网穿透)
linux·frp·内网穿透
搬码临时工1 小时前
路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法
运维·服务器·网络·物联网·tcp/ip·计算机网络·智能路由器
犯困的土子哥1 小时前
Linux:Ext系列文件系统
linux
三天不学习1 小时前
混合开发部署实战:PyInstaller + .NET 8 + Docker全链路配置
python·docker·容器·.net
努力努力再努力wz2 小时前
【Linux实践系列】:用c/c++制作一个简易的进程池
linux·运维·数据库·c++·c
fly spider3 小时前
一站式Windows下Docker开启MySQL并链接本地Navicat(附乱码解决方案)
windows·mysql·docker·乱码解决
liyongjun63163 小时前
CentOS 下 Zookeeper 常用命令与完整命令列表
linux·服务器·zookeeper·centos
facaixxx20244 小时前
什么是巨型帧Jumbo Frames?云服务器开启巨型帧有什么用?
运维·服务器