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.gpgecho "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/nullsudo 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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Elasticsearch】安装配置与使用

1 前期准备 1.1 环境准备 麒麟ARM 64位操作系统 1.2 安装包准备 Elasticsearch下载地址: https://www.elastic.co/cn/downloads/elasticsearch 2 部署elasticsearch 2.1 创建es专用用户 注意:ES不能使用root用户来启动,必须使用普通用户来安装启…

【HTTP上】协议/域名/url/请求和响应/状态码/重定向

文章目录 0.应用层协议0.1HTTP协议 1.域名2.DNS3.访问浏览器4.URL搜索特殊字符如#&~ 5.万维网6.http请求和响应的格式6.1HTTP请求格式6.2HTTP响应格式6.3示例6.3模拟HTTP【框架】6.4查看请求或响应的工具FiddlerPostman 7.网页7.0对访问网页的认识7.1wget7.2新的认识7.3GET…

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更好理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

北京金融大数据有限公司X百望云签署战略合作协议 共同发布“金数数据要素流通云平台”

随着数据资产与数据要素相关政策密集出台&#xff0c;资本与实业企业均跃跃欲试。但因为没有龙头企业的方案引领和成熟的落地实践&#xff0c;市场呈谨慎观望态势&#xff0c;热度无处安放。 北京金融大数据有限公司&#xff08;以下简称“金融大数据公司”&#xff09;作为市…

excel怎么删除条件格式规则但保留格式?

这个问题的意思就是要将设置的条件格式&#xff0c;转换成单元格格式。除了使用VBA代码将格式转换外&#xff0c;还可以用excel自己的功能来完成这个任务。 一、将条件格式“留下来” 1.设置条件格式 选中数据&#xff0c;点击开始选项卡&#xff0c;设置条件格式&#xff0…

微服务保护和分布式事务(Sentinel、Seata)笔记

一、雪崩问题的解决的服务保护技术了解 二、Sentinel 2.1Sentinel入门 1.Sentinel的安装 &#xff08;1&#xff09;下载Sentinel的tar安装包先 &#xff08;2&#xff09;将jar包放在任意非中文、不包含特殊字符的目录下&#xff0c;重命名为 sentinel-dashboard.jar &…

STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)续-音质问题解决总结

一、前言 之前进行了STM32CubeMXMDK通过I2S接口进行音频输入输出&#xff08;全双工读写一个DMA回调&#xff09;的研究总结&#xff1a; https://juejin.cn/post/7339016190612881408#heading-34 后续音质问题解决了&#xff0c;目前测试下来48khz的双声道使用效果很好&…

Pytorch学习笔记——TensorBoard的初使用

1、TensorBoard介绍 TensorBoard是TensorFlow的可视化工具&#xff0c;但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面&#xff0c;可以展示你训练过程中的各种信息&#xff0c;如损失值、准确度、权重分布等&#xff0c;更好地帮助开发者理解和调试模型。 Tenso…

BJFUOJ-C++程序设计-实验3-继承和虚函数

A TableTennisPlayer 答案&#xff1a; #include<iostream> #include<cstring> using namespace std;class TableTennisPlayer{ private:string firstname;string lastname;bool hasTable;public:TableTennisPlayer(const string &, const string &, bool…

深入剖析Tomcat(五) 剖析Servlet容器并实现一个简易Context与Wrapper容器

上一章介绍了Tomcat的默认连接器&#xff0c;后续程序都会使用默认连接器。前面有讲过Catalina容器的两大块内容就是连接器与Servlet容器。不同于第二章的自定义丐版Servlet容器&#xff0c;这一章就来探讨下Catalina中的真正的Servlet容器究竟长啥样。 四种容器 在Catalina中…

实现优先队列——C++

目录 1.优先队列的类模板 2.仿函数的讲解 3.成员变量 4.构造函数 5。判空&#xff0c;返回size&#xff0c;返回队头 6.插入 7.删除 1.优先队列的类模板 我们先通过模板来进行初步了解 由上图可知&#xff0c;我们的模板里有三个参数&#xff0c;第一个参数自然就是你要存储的数…

读天才与算法:人脑与AI的数学思维笔记16_音乐图灵测试

1. 艾米 1.1. 人工智能作曲家 1.1.1. 分析机可能会生成任意复杂程度、精细程度的科学的音乐作品 1.1.1.1. 阿达洛夫莱斯 1.1.2. 巴赫的作品是大多数作曲家开始学习创作的起点&#xff0c;也是大多数计算机开始学习作曲的起点…

uniapp 短视频浏览组件(仿抖音、上滑下滑)组件 Ba-VideoSView

简介&#xff08;下载地址&#xff09; Ba-VideoSView 是一款uniapp短视频上划浏览组件&#xff0c;支持无限滑动加载&#xff0c;支持自定义界面&#xff08;功能遮罩&#xff09;,支持点播、直播。 支持无限滑动加载支持自定义界面&#xff08;遮罩&#xff09;支持监听上滑…

第 8 章 机器人平台设计(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 学习到当前阶段大家对ROS已经有一定的认知了&#xff0c;但是之前的内容更偏理论&#xff0c;尤其是介绍完第6…

KKView远程控制2.0版本发布,TeamViewer面临巨大挑战

KKView远程控制2.0版本发布&#xff0c;TeamViewer面临巨大挑战 近日&#xff0c;备受瞩目的远程控制软件KKView发布了其全新2.0版本&#xff0c;KKView以其独特的创新性和用户友好的设计&#xff0c;为远程办公、远程培训等领域提供了更加高效、便捷的解决方案。 KKView远程…

K8S 哲学 - deployment -- kubectl【create 、 rollout 、edit、scale、set】

kubectl create kubectl rollout kubectl edit kubectl set kubectl scale 1、创建与配置文件解析 2、deploy 滚动更新 &#xff1a;template 里面的内容改变触发滚动更新 编辑该 deploy 的 配置文件 &#xff0c;加入一个 label 不会触发滚动更新 改变 nginx镜…

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法&#xff0c;它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制&#xff0c;比如日志必须是连续的&#xff0c;只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上&#xff0c;Raft算法相对…

Python语言零基础入门——文件

目录 一、文件的基本概念 1.文件 2.绝对路径与相对路径 3.打开文件的模式 二、文件的读取 三、文件的追加 四、文件的写入 五、with语句 六、csv文件 1.csv文件的读取 2.csv文件的写入 七、练习题&#xff1a;实现日记本 一、文件的基本概念 1.文件 文件是以计算…

浏览器安装路径位置的查看、指定网址快捷方式的创建

浏览器安装路径位置的查看、指定网址快捷方式的创建 浏览器安装路径位置的查看 法一、属性查看法 右键点击浏览器的桌面图标&#xff0c;选择“属性”&#xff0c;“快捷方式”页中的“目标”框中可见. 以Microsoft Edge浏览器为例&#xff0c;参见下图&#xff1a; 法二、地…