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
相关推荐
tan180°16 分钟前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y21 分钟前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程44 分钟前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9981 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
DuelCode1 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
你想考研啊3 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks3 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
独行soc4 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
BD_Marathon4 小时前
Ubuntu下Tomcat的配置
linux·ubuntu·tomcat
饥饿的半导体4 小时前
Linux快速入门
linux·运维