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

Docker基本管理

目录

查看docker信息

Docker镜像操作

Docker挂载阿里云加速器

1.阿里云官网获取加速器地址

2.在服务器上挂载加速器

3.重启docker服务

搜索,下载镜像

查看镜像信息

本地的镜像添加新的标签

删除镜像

如何将镜像传送给其他主机的docker?

镜像导出成文件

镜像文件导入镜像库

上传镜像

创建阿里云个人镜像仓库(免费)

设置registry密码

创建命名空间和镜像仓库

​编辑创建完毕

上传阿里云仓库

Docker容器操作

创建容器

查看容器的运行状态

启动容器

停止容器

删除容器

命令docker run

docker run的启动过程

创建并启动容器

进入容器

将本地文件复制到容器中

从容器复制文件到本地主机

查看容器日志

如何将镜像传送给其他主机的docker?

导出容器

导入容器


查看docker信息

docker version                #查看docker版本docker info                   #查看docker详细信息
—————————————————————————————————————————————————————————————————————————————————————————
Client:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers: 0						# 容器数量Running: 0Paused: 0Stopped: 0Images: 1							# 镜像数量Server Version: 20.10.3			# server 版本Storage Driver: overlay2			# docker 使用的是 overlay2 文件驱动Backing Filesystem: xfs			# 宿主机上的底层文件系统Supports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfs			# Cgroups 驱动Cgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2Default Runtime: runcInit Binary: docker-initcontainerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939brunc version: ff819c7e9184c13b7c2607fe6c30ae19403a7affinit version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-693.el7.x86_64		# 宿主机的相关信息Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 976.3MiBName: localhost.localdomainID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDTDocker Root Dir: /var/lib/docker			# docker 数据存储目录Debug Mode: falseRegistry: https://index.docker.io/v1/		# registry 地址Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:							# 加速站点https://6ijb8ubo.mirror.aliyuncs.com/Live Restore Enabled: false

Docker镜像操作

Docker挂载阿里云加速器

  • 防止docker拉取镜像失败:download failed after attempts=6: dial tcp 104.18.125.25:443: i/o timeout

1.阿里云官网获取加速器地址

每个阿里云账号都会生成一个加速器

2.在服务器上挂载加速器

cd /etc/docker/                                    #切换目录tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["加速器地址"]}
EOF                                               #使用加速器

3.重启docker服务

systemctl restart docker.service

搜索,下载镜像

docker search 关键字                              #根据仓库或镜像的关键字搜索镜像docker pull 仓库名/镜像名:标签              
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

查看镜像信息

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.jsondocker images [-q]                    #查看下载到本地的所有镜像 #-q 表示仅显示镜像ID
docker inspect 镜像ID号                #根据镜像的唯一标识 ID 号,获取镜像详细信息
  •  lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
  • upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这层
  • MergedDir是表现层,是容器的挂载点

本地的镜像添加新的标签

docker tag 名称:旧标签  新名称:新标签          #添加新的标签但ID号不会变

删除镜像

docker rmi 镜像名或镜像ID [-f]                    #删除镜像-f                     #强制删除#快速删除所有镜像
docker rmi $(docker images -q)docker rmi nginx:1.18
docker rmi 50fe74b50e0d
docker rmi 605c77e624dd -f注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
docker rmi nginx:web

如何将镜像传送给其他主机的docker?

镜像导出成文件

有镜像主机操作

docker save -o 存储文件名 存储的镜像          #将镜像导出成文件
scp /opt/nginx-1.20.tar 20.0.0.70:/opt     #传输文件给另一台主机

镜像文件导入镜像库

无镜像主机操作

#将镜像文件导入镜像库
docker load < 存出的文件
docker load -i 存出的文件

上传镜像

  • 默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
  • 可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录
  • 在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传
docker login                 #输入用户名及密码
docker tag nginx:1.20 别名   #添加别名
docker push 别名             #上传即可

官网账户稍有问题,改上传阿里云

创建阿里云个人镜像仓库(免费)

设置registry密码

创建命名空间和镜像仓库

创建完毕

上传阿里云仓库

docker login --username=aliyun6346886006 registry.cn-hangzhou.aliyuncs.com   
#登录阿里云,输入密码docker tag nginx:latest registry.cn-hangzhou.aliyuncs.com/xy101-jlh/nginx:1.20       
#设置别名docker push registry.cn-hangzhou.aliyuncs.com/xy101-jlh/nginx:1.20           
#上传镜像

Docker容器操作

创建容器

  • 容器创建:就是将镜像加载到容器的过程。
  • 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
docker create [选项] 镜像名:标签 [容器启动命令]     #创建容器常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让Docker分配一个伪终端tty
-it :合起来实现和容器交互的作用,运行一个交互式会话shell 
--name : 指定容器名例:docker create -it nginx:latest /bin/bash

查看容器的运行状态

docker ps -a	            #-a选项可以显示所有的容器
docker ps -a -q              #查看容器id号
docker inspect 容器名/容器id  #查看容器详细信息

启动容器

docker start 容器的ID/名称
docker ps -a    #查看所有容器
docker ps       #查看正在运行的容器

停止容器

docker stop 容器的ID/名称 [-t 等待时间]   #停止容器,发送SIGTERM信号,默认等待10d 
docker kill 容器的ID/名称      #强制退出容器,默认发送SIGKILL信号

删除容器

docker rm [-f] 容器ID/名称   #删除已经停止的容器  [-f]选项强制删除
#若想删除正在 运行的容器,必须先暂停该容器的启动状态,在进行删除或使用-f选项,否则无法删除docker rm $(docker ps -a -q)          #批量清理后台停止的容器    
docker rm $(docker ps -a -q) -f       #批量清理后台所有容器

命令docker run

docker run的启动过程

  1. 检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器
  2. 在只读的镜像层上再挂载一层可读可写的容器层
  3. 从docker网桥给容器分配一个虚拟接口和IP地址
  4. 使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止

创建并启动容器

  • 等同于先执行docker create命令,再执行docker start命令
  • 当运行一个容器时,镜像不存在会先自动创建镜像,然后再创建容器并启动容器
docker run -d [-i -t] [--name 容器名] 镜像名:标签 [容器启动命令]          #创建并启动容器-P                       #使用随机的宿主机端口映射容器端口(从32768开始)-p 宿主机端口:容器端口      #使用指定的宿主机端口映射容器端口

同时也会在本地为这个容器创建一个IP

进入容器

需要进入容器进行命令操作时,可以使用docker exec命令进入运行着的容器

docker exec -it 容器ID/名称 容器启动命令-i 选项表示让容器的输入保持打开;-t 选项表示让Docker分配一个伪终端。
———————————————————————————————————————————————————————————————————————————————————————————
例#进入容器前,确保容器正在运行docker exec -it c3 /bin/shlsexit				#退出容器后,容器仍在运行

将本地文件复制到容器中

docker cp 宿主机文件路径  容器名或容器ID:绝对路径                      #复制宿主机文件到容器中

从容器复制文件到本地主机

docker cp 容器名或容器ID:绝对路径  宿主机文件路径                      #复制容器文件到宿主机中

查看容器日志

docker logs 容器名/容器id    #查看容器中PID=1的主进程的日志

如何将镜像传送给其他主机的docker?

导出容器

有容器主机操作

docker export 容器名/id > 保存目录/文件名
docker export -o 保存目录/文件名 容器id/容器名

导入容器

无容器主机操作

#镜像是创建容器的根本,因此只能先将容器文件导出为镜像,再有镜像创建、启动容器,才能导入容器
docker import 容器文件 -- 名称:标签
cat 容器文件 | docker import - 镜像名:标签     #将容器模板文件导入成镜像

相关文章:

  • VGMShield:揭秘视频生成模型滥用的检测与追踪技术
  • 【JVM基础01】——介绍-初识JVM运行流程
  • ESC(ELectronic Stability Control,电子稳定控制系统)
  • 数据的力量:Facebook如何通过数据分析驱动创新
  • IDEA关联数据库
  • 钡铼分布式 IO 系统 OPC UA边缘计算耦合器BL205
  • 【网络】Socket编程
  • 分布式唯一id的7种方案
  • Ubuntu22.04:安装Samba
  • Gitee使用教程2-克隆仓库(下载项目)并推送更新项目
  • SpringBoot解决Apache Tomcat输入验证错误漏洞
  • 视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案
  • 基于java+springboot+vue实现的学生选课系统(文末源码+Lw)129
  • [论文笔记] CT数据配比方法论——1、Motivation
  • qml 实现一个listview
  • @angular/forms 源码解析之双向绑定
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • ESLint简单操作
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JS数组方法汇总
  • Linux链接文件
  • markdown编辑器简评
  • php的插入排序,通过双层for循环
  • Python连接Oracle
  • 基于Android乐音识别(2)
  • 聊聊sentinel的DegradeSlot
  • 聊一聊前端的监控
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何用vue打造一个移动端音乐播放器
  • 深度学习入门:10门免费线上课程推荐
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 数据库巡检项
  • #android不同版本废弃api,新api。
  • #pragma once
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (19)夹钳(用于送货)
  • (2)(2.10) LTM telemetry
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)测试工具
  • (二十六)Java 数据结构
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (规划)24届春招和25届暑假实习路线准备规划
  • (含笔试题)深度解析数据在内存中的存储
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .htaccess 强制https 单独排除某个目录
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .考试倒计时43天!来提分啦!
  • @Autowired @Resource @Qualifier的区别