当前位置: 首页 > news >正文

day053-初识docker与基础命令

文章目录

  • 0. 老男孩思想-当年老男孩老师发给女生的消息
  • 1. docker
    • 1.1 虚拟机与容器的区别
    • 1.2 docker架构
  • 2. 环境准备
    • 2.1 虚拟机:2核4g
    • 2.2 安装docker
    • 2.3 配置docker镜像源
    • 2.4 导入常用镜像
  • 3. 镜像常用命令
    • 3.1 下载镜像
    • 3.2 查看镜像
    • 3.3 导入镜像
    • 3.4 查看各种详细信息
    • 3.5 将镜像保存成文件
    • 3.6 删除镜像
    • 3.7 更改镜像标签tag
  • 4. 启动容器
    • 4.1 开启系统内核转发功能
  • 5. 容器相关命令
    • 5.1 查看容器
    • 5.2 启动、关闭、重启容器
    • 5.3 删除容器
    • 5.4 进入容器
    • 5.5 上传文件到容器
  • 6. 思维导图

0. 老男孩思想-当年老男孩老师发给女生的消息

  1. 太阳出,公鸡叫,愉快的心情就要到。黑夜走,白昼来,开心的一天就要来。钟儿
    响,铃儿闹,快快起床去报到。早安宝贝儿(配几个小图标)
  2. 周一开始用心酝酿,周二给你思念,周三加入温暖,周四补充快乐,周五放上好运,
    周六用幸福的外衣包裹,在周六早晨一起送给你,愿你一天持续拥有好心情。
  3. 一双手,把人生的风雨撑起;一颗心,把情感的厚度浸透;一声问候,把受伤的心灵
    抚慰:一条信息,把哥的祝福传达,早安,我亲爱的宝贝儿,很想你。
  4. 我要帮你减,减掉周一到周五,留下周六和周日。我要帮你加,加上十一假期和五一,外加端午、中秋,加减法,我来操心,你的存在意义就是负责吃和玩,外加上每天开心就可以!

在这里插入图片描述

1. docker

Docker通过容器技术将应用及其依赖打包成轻量级、可移植的单元,用于快速构建、部署和运行应用程序。

1.1 虚拟机与容器的区别

在这里插入图片描述

对比维度虚拟机容器
核心架构硬件级虚拟化(模拟硬件)操作系统级虚拟化(共享主机OS内核)
Guest OS需要独立操作系统无需Guest OS(直接调用主机内核)
资源占用高(每个vm独占OS资源,GB级内存/磁盘)极低(进程级隔离,MB级内存/磁盘)
启动速度分钟级秒级
性能损耗较高接近原生
隔离性强隔离(独立内核,完全系统级隔离)较弱(进程隔离,共享内核,依赖配置)
镜像大小GB级(完整OS)MB级(包含应用+依赖库)
跨平台兼容性强(不同OS间自由运行)弱(依赖主机内核)
典型工具VMware、OpenStackDocker、k8s
适用场景运行不同OS的应用
强隔离需求(如金额系统)
云原生/微服务
DevOps
  • Guest OS:Guest OS(客户操作系统)是指在虚拟化环境(如虚拟机或容器)中运行的操作系统,与Host OS(宿主机操作系统)相对应。
  • 原生:原生(Native)指代码直接编译为机器码在操作系统上运行(如C++编写的原生应用)。这是性能天花板,几乎没有额外损耗。
  • 云原生/微服务:
    • 微服务:把APP拆成独立小零件
    • 云原生:把这些零件扔进云里(云服务)

1.2 docker架构

  • docker是CS架构

在这里插入图片描述

2. 环境准备

2.1 虚拟机:2核4g

在这里插入图片描述

2.2 安装docker

  • docker软件包:docker-27.0.3.tgz 链接: https://pan.baidu.com/s/1URrI4RpFSANv54M81Y0f2Q?pwd=m8qz 提取码: m8qz
  • docker.service文件,配置系统systemd服务:docker.service 链接:https://pan.baidu.com/s/1CSmWnFTyrcrAACC9iJMJTA?pwd=nvkp 提取码: nvkp
# 解压
tar xf docker*.tgz
# 修改docker程序的所有者
chown -R root:root docker
# 移动docker命令到/bin下
mv docker/* /bin
# 系统自带了docker-runc程序,需删除该程序的命令,否则会与安装的docker命令冲突
rm /user/local/bin/runc
# 配置docker的systemd管理服务
mv docker.service /user/lib/systemd/system/
# 重新加载systemd文件
systemctl daemon-reload
# 启动服务
systemctl enable --now docker
# 检查服务状态
systemctl status docker
# 查看docker版本
docker version

2.3 配置docker镜像源

[root@docker01 ~]# cat /etc/docker/daemon.json
{"registry-mirrors" : ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://docker.mirrors.ustc.edu.cn","https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://docker.shootchat.top","https://registry.docker-cn.com"]
}

2.4 导入常用镜像

  • 常用docker镜像:oldboyedu_useful_docker_images.tar.gz 链接: https://pan.baidu.com/s/1aSzgyfAQu-FL-5fb1UqysA?pwd=dxfz 提取码: dxfz
# 先解压
tar xf oldboy*.tar.gz
# 导入镜像
for n in `ls`;do docker load -i $n; done

3. 镜像常用命令

3.1 下载镜像

  • docker pull 服务名称:版本
  • 常见版本:
    • 1.24
    • latest:最新版本;在测试环境中使用;若是不指定服务的版本,默认下载最新版
  • 常见系统:
    • alpine:极简系统;只有最基本的系统,shell一般是/bin/sh
    • bullseye、bookworm:Debian系统
    • ubuntu
  • 示例:docker pull nginx:alpine
  • docker官方仓库,可以查看服务版本:[Docker Hub Container Image Library | App Containerization](https://hub.docker.com/)

3.2 查看镜像

  • docker images
    • -a:显示所有镜像
[root@docker01 ~]# docker images
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
nginx        alpine        77656422f700   2 weeks ago   52.5MB
  • Docker 默认的数据存储目录/var/lib/docker,用于存放 Docker 的所有核心数据,包括镜像(images)、容器(containers)、卷(volumes)、网络配置(networks)等。
  • 查看详细信息:–no-trunc,不压缩,不省略
[root@docker01 ~]# docker images --no-trunc
REPOSITORY   TAG           IMAGE ID                                                                  CREATED       SIZE
nginx        alpine        sha256:77656422f7009bf47cd4992cb1a118af09c25bb157336478bdbf399af09e8e41   2 weeks ago   52.5MB
tomcat       9.0-jdk8      sha256:56d6933de864f447c36fdbd7daffe5a1f11114be2b4464973695eb1d5bc95f8c   2 years ago   285MB
nginx        1.24          sha256:b6c621311b44ae45292790dd4a8004a830c3c251177e5f87f278e294ea05f9ca   2 years ago   142MB

3.3 导入镜像

  • docker load -i 镜像文件
    • -i/–input:指定镜像文件路径
    • 镜像文件是tar包或tar.gz都行
    • 一次只能导入一个镜像

3.4 查看各种详细信息

  • docker inspect 镜像/容器
  • 结果是json格式,一般与jq结合使用
  • jq是linux系统中强大的json处理器
[root@docker01 ~]# docker inspect nginx:alpine |jq '.[0].Config.Cmd'
["nginx","-g","daemon off;"
]

3.5 将镜像保存成文件

  • docker save 镜像名:版本 -o 文件名.tar
    • -o/–output:指定输出路径
    • 未压缩
  • docker save 镜像名:版本 |gzip > 文件名.tar.gz
    • 使用gzip压缩算法进行压缩

3.6 删除镜像

  • docker rmi 镜像名/ID
  • 如果镜像正在使用中,需先删除容器,再删除镜像

3.7 更改镜像标签tag

  • docker tag 原镜像名 新镜像名
  • 更改后,原来镜像还会存在,只是该镜像会增加一个标签;磁盘占用空间不变

在这里插入图片描述

4. 启动容器

  • docker run -d --name 字符串 -p 端口:端口 镜像名称
    • -d:后台运行
    • –name:指定容器名字
    • -p:指定主机与容器间的端口映射
[root@docker01 ~]# docker images |grep nginx
web_nginx    1.29          77656422f700   2 weeks ago    52.5MB
nginx        alpine        77656422f700   2 weeks ago    52.5MB
nginx        1.24          b6c621311b44   2 years ago    142MB
nginx        1.24-alpine   55ba84d7d539   2 years ago    41.1MB
[root@docker01 ~]# docker run -d --name nginx -p 80:80 nginx:alpine
30742acfd43e65e4a8d5ef91e45b2228fc24b7da97abdd169940f7a56ca25efe
[root@docker01 ~]# ss -lntup|grep 80
tcp     LISTEN   0        128              0.0.0.0:80            0.0.0.0:*       users:(("docker-proxy",pid=42839,fd=4))                                                         
tcp     LISTEN   0        128                 [::]:80               [::]:*       users:(("docker-proxy",pid=42844,fd=4))                              

在这里插入图片描述

  • 容器名字不能冲突
  • 宿主机端口不能冲突

4.1 开启系统内核转发功能

在这里插入图片描述

  • 启动ipv4转发功能

5. 容器相关命令

5.1 查看容器

  • docker ps:查看正在运行的容器
    • -a:查看所有容器
    • -q:只显示容器id
    • –no-trunc:不省略,显示详细信息
[root@docker01 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS                 PORTS                                       NAMES
30742acfd43e   nginx:alpine   "/docker-entrypoint.…"   8 minutes ago   Up 8 minutes           0.0.0.0:80->80/tcp, :::80->80/tcp           nginx
84d9c99ff504   web:zrlog_v1   "catalina.sh run"         3 hours ago     Up 3 hours (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   zrlog
[root@docker01 ~]# docker ps -a
CONTAINER ID   IMAGE              COMMAND                   CREATED         STATUS                     PORTS                                        NAMES
30742acfd43e   nginx:alpine       "/docker-entrypoint.…"   8 minutes ago   Up 8 minutes               0.0.0.0:80->80/tcp, :::80->80/tcp            nginx
84d9c99ff504   web:zrlog_v1       "catalina.sh run"         3 hours ago     Up 3 hours (healthy)       0.0.0.0:8080->8080/tcp, :::8080->8080/tcp    zrlog
b1a28a4a68aa   web:bird_v2        "/docker-entrypoint.…"   9 hours ago     Exited (255) 5 hours ago   443/tcp, 0.0.0.0:81->80/tcp, :::81->80/tcp   web_bird_v2
77d8cef70f7b   web:bird_v1        "/docker-entrypoint.…"   10 hours ago    Exited (255) 5 hours ago   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   web_bird
bd78e0c6288a   mysql:8.0-debian   "docker-entrypoint.s…"   28 hours ago    Exited (0) 4 hours ago                                                  mysql8
c2e818624e94   nginx:1.24         "/docker-entrypoint.…"   4 days ago      Exited (0) 4 days ago                                                   nginx_v1

5.2 启动、关闭、重启容器

docker stop nginx
docker ps
docker start nginx
docker ps
docker restart nginx

5.3 删除容器

  • docker rm 容器名称/ID:删除已停止的容器
    • -f:强制删除,可以删除正在运行的容器
  • 删除所有容器:
[root@docker01 ~]# docker ps -aq |xargs docker rm -f
30742acfd43e
84d9c99ff504
b1a28a4a68aa
77d8cef70f7b
bd78e0c6288a
c2e818624e94
[root@docker01 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

5.4 进入容器

  • docker exec -it 容器名称 /bin/bash或/bin/sh
    • -i:交互模式
    • -t:分配终端
[root@docker01 ~]# docker exec -it nginx_v1 /bin/bash
root@fe7d1d3a9d8d:/# ls -l /usr/share/nginx/html/index.html 
-rw-r--r-- 1 root root 615 Apr 11  2023 /usr/share/nginx/html/index.html
root@fe7d1d3a9d8d:/# echo oldboy > /usr/share/nginx/html/index.html 
root@fe7d1d3a9d8d:/# 
exit
[root@docker01 ~]# curl 10.0.0.10
oldboy

5.5 上传文件到容器

  • docker cp 文件/目录 容器名称:路径
[root@docker01 ~]# echo 孙克旭 > index.html 
[root@docker01 ~]# docker cp ./index.html nginx_v1:/usr/share/nginx/html/
Successfully copied 2.05kB to nginx_v1:/usr/share/nginx/html/
[root@docker01 ~]# curl 10.0.0.10
孙克旭

6. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作



文章转载自:
http://melbourne.gbfuy28.cn
http://weigher.gbfuy28.cn
http://artichoke.gbfuy28.cn
http://modernminded.gbfuy28.cn
http://stenotypist.gbfuy28.cn
http://icky.gbfuy28.cn
http://fossor.gbfuy28.cn
http://conceptualize.gbfuy28.cn
http://hussif.gbfuy28.cn
http://kampala.gbfuy28.cn
http://inapprehensible.gbfuy28.cn
http://fatigable.gbfuy28.cn
http://raceme.gbfuy28.cn
http://wickiup.gbfuy28.cn
http://eupneic.gbfuy28.cn
http://scamping.gbfuy28.cn
http://butylate.gbfuy28.cn
http://villanelle.gbfuy28.cn
http://jigger.gbfuy28.cn
http://diggish.gbfuy28.cn
http://rookie.gbfuy28.cn
http://superficies.gbfuy28.cn
http://flabelliform.gbfuy28.cn
http://evergreen.gbfuy28.cn
http://maracay.gbfuy28.cn
http://manana.gbfuy28.cn
http://legitimization.gbfuy28.cn
http://colessee.gbfuy28.cn
http://computational.gbfuy28.cn
http://soddish.gbfuy28.cn
http://www.dtcms.com/a/280741.html

相关文章:

  • 广东省省考备考(第四十六天7.15)——判断推理:位置规律(听课后强化训练)
  • SD-WAN 技术在新能源行业的应用与优选方案分析
  • 【华为机试】3. 无重复字符的最长子串
  • 光米投影 多余之物的本思
  • 怎么样才能入门深度学习?
  • element plus使用插槽方式自定义el-form-item的label
  • NW917NW921美光固态闪存NW946NW952
  • 1.2 vue2(组合式API)的语法结构以及外部暴露
  • Vue框架之模板语法(插值表达式、指令系统、事件处理和表单绑定)全面解析
  • MATLAB 安装 ACADO 的完整步骤
  • 简单工厂设计模式
  • Web应用防火墙(WAF)技术
  • vue实现el-table-column中自定义label
  • 全局 WAF 规则:构筑 Web 安全的坚固防线
  • Git基础概念与常用命令详解
  • x86版的ubuntu上使用qemu运行arm版ubuntu
  • Java项目:基于SSM框架实现的网盘管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • EMS4100芯祥科技USB3.1高速模拟开关芯片规格介绍
  • iOS高级开发工程师面试——多线程
  • LVS三种模式实战
  • Unity沉浸式/360View/全景渲染
  • 新手向:Python数据处理Excel报表自动化生成与分析
  • Zookeeper入门安装与使用详解
  • Java行为型模式---迭代器模式
  • Linux、Ubuntu和CentOS的关系与区别
  • 设计模式笔记_结构型_适配器模式
  • 3.正则化——新闻分类
  • 生产问题排查-数据库连接池耗尽
  • 牛客:HJ23 删除字符串中出现次数最少的字符[华为机考][字符串]
  • Linux 环境下安装 Node.js v16.13.0 完整指南