docker 基础命令

docker

安装

更新系统

sudo apt update
sudo apt -y dist-upgrade

安装docker

sudo apt-get -y install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

开启远程访问api

sudo vim /lib/systemd/system/docker.service
# 找到ExecStartExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 
# 修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
# 保存退出。

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
curl http://ip:2375/version

Docker 架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

docker

命令篇

查找镜像

sudo docker search ubuntu
sudo docker search centos
sudo docker search nginx

拉取镜像

sudo docker pull 镜像名称:版本

如果不写版本号 默认版本为 latest

sudo docker pull ubuntu:24.04
sudo docker pull centos:centos7
sudo docker pull nginx
sudo docker pull mysql
sudo docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c

查看本地镜像

sudo docker images
选项说明
REPOSITORY镜像的仓库源
TAG镜像的标签
IMAGE ID镜像的ID
CREATED镜像创建时间
SIZE镜像的大小

同一个仓库源可以有多个TAG 代表这个仓库的不同个版本

系统镜像运行容器

参数说明

参数说明
-i交互式操作 即使没没有附加也会保持 STDIN 打开
-t分配伪终端
-d分离模式 在后台运行
/bin/bash使用那个shell环境
sh使用那个shell环境
–rm容器停止后自动删除容器
sudo docker run -itd ubuntu:24.04

查看容器

sudo docker ps 查看运行中的容器

sudo docker ps -a 查看所有容器包括没有运行的容器

sudo docker ps
sudo docker ps -a

停止容器

sudo docker stop 容器ID 
sudo docker kill 容器ID 

启动容器

sudo docker start 容器ID 

进入正在运行的容器

sudo docker exec -it 容器ID /bin/bash

从正在运行的容器终端退出到宿主主机

exit

删除容器

删除未运行的容器

sudo docker rm 容器ID

删除运行中的容器

sudo docker rm -f 容器ID

删除镜像

如果不写版本号 默认版本为 latest

sudo docker rmi 镜像名称:版本

指定容器名

-p 端口映射 物理主机端口:容器主机端口

–name 容器名

sudo docker run -d -p 81:80 --name nginx01 nginx

容器退出时删除容器

–rm

sudo docker run -d -p 82:80 --rm --name nginx02 nginx

容器重启策略

–restart=always
–restart=always 表示容器退出时,docker会总是自动重启这个容器
–restart=on-failure:3 表示容器的退出状态码非0(非正常退出),自动重启容器,3是自动重启的次数。超过3此则不重启
–restart=no 默认值,容器退出时,docker不自动重启容器
–restart=unless-stopped 表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器

sudo docker run -d -p 83:80 --restart=always --name nginx03 nginx

环境变量

-e

sudo docker run --rm -p 3306:3306 -p 33060:33060 \
--name mysql-test -e MYSQL_ROOT_PASSWORD=lihaozhe -itd mysql

限制CPU和内存

–cpus CPU数量

–memory 内存大小 单位 b kb m g

sudo docker run -d -p 85:80 --rm --cpus 2 --memory 256m --name nginx05 nginx
sudo docker stats nginx05

查看容器日志

-f 追踪实时日志

-t 现实时间戳

sudo docker logs -ft nginx05

数据卷

sudo docker run -d -p 86:80 --rm --name nginx06 nginx
sudo docker inspect nginx06 | grep UpperDir
sudo ls -l /var/lib/docker/overlay2/52bce6808bd731967bf71f820f7a5127306a84bff80a96fda5fcbd4da59f0ae3/diff
sudo mkdir /var/lib/docker/overlay2/52bce6808bd731967bf71f820f7a5127306a84bff80a96fda5fcbd4da59f0ae3/diff/aa
sudo mkdir /var/lib/docker/overlay2/52bce6808bd731967bf71f820f7a5127306a84bff80a96fda5fcbd4da59f0ae3/diff/bb
sudo mkdir /var/lib/docker/overlay2/52bce6808bd731967bf71f820f7a5127306a84bff80a96fda5fcbd4da59f0ae3/diff/cc
sudo docker exec -it nginx06 /bin/bash
ls
mkdir /dd
exit
sudo ls -l /var/lib/docker/overlay2/52bce6808bd731967bf71f820f7a5127306a84bff80a96fda5fcbd4da59f0ae3/diff
sudo docker stop nginx06

当容器删除后 数据卷和容器一起被删除

匿名绑定

-v 就是 --volume

-v 容器中的路径 这就是匿名绑定

Source 物理主机路径

Destination 容器主机路径

"Mounts": [
            {
                "Type": "volume",
                "Name": "a6c2be4750a24e2384e87a60c55961f0f2ffe4f0def0bc084ee2c77f79071e6a",
                "Source": "/var/lib/docker/volumes/a6c2be4750a24e2384e87a60c55961f0f2ffe4f0def0bc084ee2c77f79071e6a/_data",
                "Destination": "/usr/share/nginx/html",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

sudo docker run -d -p 10007:80 -v nginx-volume:/usr/share/nginx/html --name nginx-volume nginx
sudo docker inspect nginx-volume
su root
cd /var/lib/docker/volumes/49114e1e1a6f6c9b57ca4c3aa380dd4b40807e389f089f0b0ed64581b27089a9/_data
sudo docker volume prune
ls /var/lib/docker/volumes
选项说明
create创建数据卷
inspect显示数据卷详情
ls列表方式显示数据卷
prune删除不使用的数据卷
rm删除数据卷

具名绑定

-v 就是 --volume

-v 数据卷名:容器中的路径 这就是具名绑定

Source 物理主机路径

Destination 容器主机路径Bind Mount

"Mounts": [
            {
                "Type": "volume",
                "Name": "nginx-volume",
                "Source": "/var/lib/docker/volumes/nginx-volume/_data",
                "Destination": "/usr/share/nginx/html",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ]
sudo docker volume create nginx-volume
sudo docker volume ls 
sudo docker run -d -p 10008:80 -v nginx-volume:/usr/share/nginx/html --name nginx-volume nginx
sudo docker inspect nginx-volume
sudo docker stop nginx-volume
sudo docker rm nginx-volume
sudo docker volume rm nginx-volume
ls /var/lib/docker/volumes

Bind Mount

-v 就是 --volume

-v 物理机路径:容器中的路径 Bind Mount

Source 物理主机路径

Destination 容器主机路径

sudo docker run --name nginx-test --rm -d -p 80:80 nginx
# 准备 nginx 容器与本地文件映射文件目录
# /home/lhz/nginx/html 存放网页文件
# /home/lhz/nginx/conf.d 存放配置文件
mkdir -p /home/lhz/nginx/html /home/lhz/nginx/conf.d
# docker cp:用于容器与主机之间的数据拷贝
# 从容器中拷贝文件到本地
sudo docker cp nginx-test:/usr/share/nginx/html /home/lhz/nginx
sudo docker cp nginx-test:/etc/nginx/conf.d/default.conf /home/lhz/nginx/conf.d
sudo docker cp nginx-test:/etc/nginx/nginx.conf /home/lhz/nginx
# 删除现有nginx容器
sudo docker stop nginx-test
sudo docker run -d -p 80:80 \
-v /home/lhz/nginx/html:/usr/share/nginx/html \
-v /home/lhz/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/lhz/nginx/nginx.conf:/etc/nginx/nginx.conf \
--name nginx-test --restart=always nginx
sudo docker run -d -p 81:80 \
-v /home/lhz/nginx/html:/usr/share/nginx/html \
-v /home/lhz/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/lhz/nginx/nginx.conf:/etc/nginx/nginx.conf \
--name nginx-test01 --restart=always nginx
sudo docker run -d -p 82:80 \
-v /home/lhz/nginx/html:/usr/share/nginx/html \
-v /home/lhz/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/lhz/nginx/nginx.conf:/etc/nginx/nginx.conf \
--name nginx-test02 --restart=always nginx

html:/usr/share/nginx/html
-v /home/lhz/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
-v /home/lhz/nginx/nginx.conf:/etc/nginx/nginx.conf
–name nginx-test01 --restart=always nginx


```bash
sudo docker run -d -p 82:80 \
-v /home/lhz/nginx/html:/usr/share/nginx/html \
-v /home/lhz/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/lhz/nginx/nginx.conf:/etc/nginx/nginx.conf \
--name nginx-test02 --restart=always nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/590395.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——链表(精简易懂版)

文章目录 链表概述链表的实现链表的节点(单个积木)链表的构建直接构建尾插法构建头插法构建 链表的插入 总结 链表概述 1,链表(Linked List)是一种常见的数据结构,用于存储一系列元素。它由一系列节点&…

双链表的应用

cf edu161 D. Berserk Monsters 思路: 因为考虑到,每个怪是否死亡与其左右的怪息息相关,再者,若当前怪死亡,周围怪的相邻信息也会产生变化,由此可以想到使用双链表进行维护,双链表的维护方式有…

STM32——中断篇

技术笔记! 1 中断相关概念 1.1 什么是中断? 中断是单片机正在执行程序时,由于内部或外部事件的触发,打断当前程序,转而去处理这一事件,当处理完成后再回到原来被打断的地方继续执行原程序的过程。 在AR…

算法学习系列(五十四):单源最短路的综合应用

目录 引言一、新年好二、通信线路三、道路与航线四、最优贸易 引言 关于这个单源最短路的综合应用,其实最短路问题最简单的就是模板了,这是一个基础,然后会与各种算法结合到一块,就是不再考察单个知识点了,而是各种知…

ICode国际青少年编程竞赛- Python-1级训练场-基础训练1

ICode国际青少年编程竞赛- Python-1级训练场-基础训练1 1、 Dev.step(4)2、 Dev.step(-4) Dev.step(8)3、 Dev.turnLeft() Dev.step(4)4、 Dev.step(3) Dev.turnLeft() Dev.step(-1) Dev.step(4)5、 Dev.step(-1) Dev.step(3) Dev.step(-2) Dev.turnLeft() Dev.step(…

su03t语音模块烧录识别不出问题解决方法

今天被su03t模块的烧写问题,卡了一下午,也是非常困惑。所幸到现在已经能够解决问题,并且有一些心得,因此想要记录一下,也可以帮助有同样困惑的小伙伴。 首先我们来说一下接线问题,因为要利用到ch340&#x…

使用DataGrip连接DM达梦数据库

前言 达梦数据库虽然提供了官方的数据库管理工具"DM管理工具",但是该软件经常莫名卡顿,影响开发效率和心情。所以,本人一般使用DataGrip进行数据库操作。DataGrip是JetBrains公司开发的一款强大的数据库IDE,支持多种数…

SpringBoot 打包所有依赖

SpringBoot 项目打包的时候可以通过插件 spring-boot-maven-plugin 来 repackage 项目&#xff0c;使得打的包中包含所有依赖&#xff0c;可以直接运行。例如&#xff1a; <plugins><plugin><groupId>org.springframework.boot</groupId><artifact…

Appium + mitmProxy 实现APP接口稳定性测试

随着 App 用户量的不断增长&#xff0c;任何小的问题都可能放大成严重的线上事故&#xff0c;为了避免对App造成损害的任何可能性&#xff0c;我们必须从各个方面去思考 App 的稳定性建设&#xff0c;尽可能减少任何潜在的威胁。 1.背景介绍 为了保障 App 的稳定性&#xff0c…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

【USB 3.2 Type-C】 端口实施挑战的集成解决方案 (补充一)

USB 3.2 Type-C 端口集成 补充&#xff0c;上一篇感觉还有没理解到位的一部分&#xff1b; 一、只做正反插的通信&#xff0c;已经差不多够了&#xff0c;但是这并不是完整的TYPE-C,必须要补充上PD; 参考连接&#xff1a; TYPE-C PD浅谈&#xff08;一&#xff09;https://w…

【MyBatis】深入解析MyBatis:高效操作数据库技术详解

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【MyBatis】深入解析MyBatis&#xff1a;高效操作数据库技术详解 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 动态SQL1. \<if>标签2. \<trim&…

易查分查询分组功能如何使用?

期中考试马上要陆续开始&#xff0c;老师如果负责多个班级或年级&#xff0c;如何把同一级部的查询单独放到一个列表页呢&#xff1f; 易查分的查询分组功能就可实现&#xff0c;下面就来教大家如何使用此功能。 &#x1f4d6;案例&#xff1a;负责相关工作的老师&#xff0c;需…

(代码结构3)项目redis key 管理

场景:项目中到处可见的key&#xff0c;没有统一管理&#xff0c;极其难维护。大佬同事实现了一个。 代码 如图,Redis.php 是对redis的二次封装&#xff0c;对redis key模块的强制校验&#xff0c;FillerKeyTrait.php 是对filler模块的key获取。主要原理是:对redis二次封装&…

线性表—单链表实现

文章目录 链表介绍 单链表介绍 创建单链表节点 销毁 打印 查找 创建节点 增加数据 尾插 头插 指定位置插入 删除数据 尾删 头删 指定位置删除 整体代码 SListNode.h SListNode.c 链表介绍 链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;由一…

每日OJ题_贪心算法二③_力扣1005. K 次取反后最大化的数组和

目录 力扣1005. K 次取反后最大化的数组和 解析代码 力扣1005. K 次取反后最大化的数组和 1005. K 次取反后最大化的数组和 难度 简单 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT&#xff08;素拓活动小工具&#xff09; 场景来源 去年单位内部的一次素拓活动&#xff0c;分工负责策划设置其中的“你画我猜”环节&#xff0c;网络上搜集到题目文字后&#xff0c;想着如何快速做成对应一页一页的PPT。第一时间想…

机器学习笔记-20

处理大数据集的算法 1. 随机梯度下降 我们之前一直在学的梯度下降算法也叫Batch梯度下降算法&#xff0c;前面的笔记有提过一嘴。以线性回归为例子&#xff0c;随机梯度下降也适用于其他使用Batch梯度下降算法求参数的学习算法&#xff0c;随机梯度下降是对Batch梯度下降算法的…

[图解]被严重污染的领域专家

0 00:00:00,740 --> 00:00:04,610 今天我们来说一下领域专家 1 00:00:05,480 --> 00:00:06,920 这个概念 2 00:00:08,460 --> 00:00:13,180 这个概念现在已经被严重污染了 3 00:00:16,080 --> 00:00:21,170 你看&#xff0c;这是来自一个领域驱动设计课程的资料…

数据结构与算法---树

数据结构可视化网址 Structure Visualization: https://www.cs.usfca.edu/~galles/visualization/Totuma: https://www.totuma.cn/Algorithm Visualizer: https://algorithm-visualizer.org/ 构建二叉树 // C#include<stdio.h> #include<stdlib.h>typedef char T…