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

Docker的安装与操作

文章目录

    • Docker的安装与操作
      • 一、安装Docker
        • 1、关闭防火墙
        • 2、安装依赖包
        • 3、设置阿里云镜像源
        • 4、安装Docker-ce(docker社区版)
        • 5、查看Docker信息
        • 6、设置镜像加速
      • 二、Docker操作
        • 1、镜像操作
          • 1.1、列出本地镜像
          • 1.2、搜索镜像
          • 1.3、获取镜像
          • 1.4、删除镜像
          • 1.5、查看下载到本地的所有镜像
          • 1.6、查看镜像详细信息
          • 1.7、为本地的镜像添加新的标签
          • 1.8、镜像导出到本地
          • 1.9、导入本地镜像到库中
          • 1.20、上传镜像
        • 2、容器操作
          • 2.1、创建容器
          • 2.2、查看所有容器以及状态
          • 2.3、启动容器
          • 2.4、启动容器(创建并启动)
          • 2.5、查看容器详细信息
          • 2.6、进入容器
          • 2.7、容器导入/导出
          • 2.8、容器的删除
          • 2.9、容器与宿主机之间的数据拷贝
        • 3、日志管理

Docker的安装与操作

一、安装Docker

1、关闭防火墙

systemctl stop firewalld
setenforce 0

2、安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils:是yum的工具包集合,提供了yum-config-manager 工具。
device mapper:是 linux 的内核用来将块设备映射到虚拟块设备的 framework,
它支持许多高级卷管理技术。docker 的 devicemapper 存储驱动程序利用此框架的自动精简配置
(thin provisioning) 和快照功能来管理 docker 镜像和容器。
device mapper存储驱动程序需要 device-mapper-persistent-data和 lvm2。

3、设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装Docker-ce(docker社区版)

yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service

安装好的Docker系统有两个程序,Docker服务端和docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。
Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

5、查看Docker信息

docker version
docker info

image-20220905145446896

6、设置镜像加速

以阿里云为例(腾讯云等其他几个主流厂商也是有提供免费的镜像加速的)。

image-20220905145850129

image-20220905150027695

选择对于的操作系统,直接复制粘贴即可。

image-20220905150109906

二、Docker操作

1、镜像操作

1.1、列出本地镜像
docker images
    -a 列出本地所有镜像
    -q 只显示镜像id

image-20220905151841150

文字选项说明:

  • **REPOSITORY:**表示镜像仓库源
  • **TAG:**镜像的标签
  • **镜像ID:**镜像ID
  • **创建时间:**创建时间
  • **SIZE:**大小
1.2、搜索镜像
格式:docker search 关键字
docker search nginx

image-20220905152406809

1.3、获取镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
格式:docker pull 关键字
docker pull httpd

image-20220905152630700

1.4、删除镜像
格式:docker rmi 镜像名/id
docker rmi httpd
docker rmi dabbfbe0c57b
    -f 强制删除

image-20220905153133044

image-20220905153234616

1.5、查看下载到本地的所有镜像
镜像下载后存放在 /var/lib/docker 

cat /var/lib/docker/image/overlay2/repositories.json

image-20220905153745700

1.6、查看镜像详细信息
docker inspect 镜像id或名称
    -f 指定模式输出

image-20220905154752506

1.7、为本地的镜像添加新的标签
格式:docker tag 旧名称:标签 新名称:标签

image-20220905155147493

1.8、镜像导出到本地
格式:docker save -o /路径/存储文件名 镜像名 (接指定绝对路径,实现支持存放位置)
    -o 输出到的文件

image-20220905160634765

1.9、导入本地镜像到库中
格式:docker load < /路径/存储文件
    docker load -i /路径/存储文件
    -i 指定导入的文件

image-20220905162931888

image-20220905163009553

1.20、上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。

登录后配置

可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。

在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker hub的网址:https://hub.docker.com/

setting/centos:tagname
    //setting/centos是创建docker hub后的存储库名
docker tag httpd:latest setting/centos:tagname	#添加新的标签
docker login									#登录公共仓库
Username:
password:
docker push setting/centos:tagname						#上传镜像

image-20220905171333615

image-20220905171524214

image-20220905171637836

2、容器操作

2.1、创建容器
docker create [选项] 镜像 

常用选项:
-i:让容器开启标准输入
-t:让Docker分配一个伪终端tty
-it:合起来实现和容器交互的作用,运行一个交互式会话shell

docker create -it nginx:latest

image-20220905182934886

2.2、查看所有容器以及状态
docker ps -a //-a:显示所有容器
-a 显示所有的容器
-f 根据条件过滤显示的内容
-l 显示最近创建的容器
-n 累出最近创建的n个容器
-q 静默模式,只显示容器编号
-s 显示总的文件大小
    
说明:
CONTAINER ID:容器的ID号
IMAGE:加载的镜像
COMMAND :运行的程序
CREATED :创建时间
STATUS:当前的状态
PORTS:端口映射
NAMES:名称

image-20220905174003820

2.3、启动容器
docker start 0865439bf85d
docker ps -a

image-20220905183602350

2.4、启动容器(创建并启动)
#加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

#示例1:
docker run -itd nginx:latest /bin/bash

#示例2:执行后退出
docker run  centos:latest /usr/bin/bash -c ls -lh /
#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:latest /usr/local/bash -c "while true;do echo lcdb;done" 
    
    -t 表示进入的终端
    -i 开启标准输入,表示想要交互
    -d 默认不会进入容器,后台运行,可以使用docker exec进入。
	-c 指定交互命令
docker run -itd nginx:latest /bin/bash
    /bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。

image-20220905185105139

docker run  centos:latest /usr/bin/bash -c ls -lh /

image-20220905190415385

2.5、查看容器详细信息
#格式:docker inspect 容器id 
docker ps -a   #先查看运行时容器的id
docker inspect b90d59168cf0

image-20220905190811611

2.6、进入容器

进入容器的两种方式:

docker attach :通过这个方式进入,如果退出会导致容器也会停止

docker exec:通过这个方式进入,如果退出不回导致容器停止。

退出命令:exit

docker attach 容器id
docker exec -it 容器id /bin/bash

image-20220905192441534

image-20220905192556326

docker run -it centos:latest /bin/bash

image-20220905193032041

2.7、容器导入/导出

用户可以讲任何一个docker从一台主机迁移至任意一台主机:

1、首选需要讲已创建好的容器导出为文件,使用【docker export】命令实现,该容器当前处于运行状态也可以正常导出。

2、导出后将该文件传输至其他主机,通过相应的导入命令以实现容器的迁移。

3、 与镜像的迁移基本同理

'命令格式:'
docker export [容器ID/名称] >文件名

'例:'
docker export 59faa88f097f > /opt/test/centos
--
scp /opt/test/centos root@192.168.10.12:/opt

image-20220905193854669

image-20220905200110529

'命令格式:'
cat [文件名] |docker import - [生成的镜像名称][:标签]
cat centos | docker import - centos:7

'#导入文件centsos成为本地镜像'
cat centos | docker import - centos:7
docker run -itd centos:7 /bin/bash
--

image-20220905200519139

2.8、容器的删除
'命令格式:'
docker rm [容器ID/名称]

'例:'
docker ps -a
docker rm -f d6288ff65860

image-20220905200703921

2.9、容器与宿主机之间的数据拷贝
//容器内容拷贝到宿主机中
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
//宿主机中内容拷贝到容器中   
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

image-20220906142512142

image-20220906142525672

docker cp b3c25e19d04e:/root/test.txt ~/

image-20220906143201606

docker cp /root/test2.txt b3c25e19d04e:/root/

image-20220906143405410

3、日志管理

存放日志的位置

/var/lib/docker/containers/

查看日志信息

docker logs 容器id
docker logs 59faa88f097f

image-20220906162143204

清理日志

方式一:

当日志占满之后如何处理
        
###设置docker日志文件数量及每个日志大小
 vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://f613ce8f.m.daocloud.io"]"log-driver": "json-file",
"log-opts": { "max-size" : "500m", "max-file" : "3"}
}

修改完需要重新加载  systemctl daemon-reload  systemctl restart docker

image-20220906163459609

方式二:

使用脚本并设置周期性任务,实现定期清理日志内容。
#!/bin/sh 
logs=$(find /var/lib/docker/containers/ -name *-json.log)  
for log in $logs  
        do  
                cat /dev/null > $log  
        done 

f613ce8f.m.daocloud.io"],
“log-driver”: “json-file”,
“log-opts”: { “max-size” : “500m”, “max-file” : “3”}
}

修改完需要重新加载 systemctl daemon-reload systemctl restart docker


[外链图片转存中...(img-Jt8DKevI-1663501547182)]

方式二:

~~~c
使用脚本并设置周期性任务,实现定期清理日志内容。
#!/bin/sh 
logs=$(find /var/lib/docker/containers/ -name *-json.log)  
for log in $logs  
        do  
                cat /dev/null > $log  
        done 

相关文章:

  • Zabbix监控入门到跑路
  • 无人机中的坐标系与相机姿态计算
  • 100天精通Python(数据分析篇)——第56天:Pandas读写txt和csv文件(read_csv、to_csv)
  • 【开发小记】vue项目优化
  • 1、javaweb学习知识简析
  • 【Linux操作系统】基础概念和常用指令(一)
  • 类和对象·默认成员函数
  • Elastic Stack(elk+filebeat)
  • PyTorchの可视化工具
  • LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97%
  • docker安装以及运行nacos、rabbitmq、MySQL容器小记
  • S7-200SMART PLC进行MODBUS通信轮询时掉站处理和错误信息提取的具体方法演示
  • Transformer - Attention Is All You Need - 跟李沐学AI
  • c语言qsort函数使用教程
  • Android修行手册 - TabLayout全解析(下)-监听和示例
  • python3.6+scrapy+mysql 爬虫实战
  • [译] React v16.8: 含有Hooks的版本
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • AngularJS指令开发(1)——参数详解
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java比较器对数组,集合排序
  • PHP的类修饰符与访问修饰符
  • Service Worker
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 笨办法学C 练习34:动态数组
  • 编写高质量JavaScript代码之并发
  • 从伪并行的 Python 多线程说起
  • 浮动相关
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 探索 JS 中的模块化
  • 走向全栈之MongoDB的使用
  • No resource identifier found for attribute,RxJava之zip操作符
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • raise 与 raise ... from 的区别
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • #AngularJS#$sce.trustAsResourceUrl
  • %check_box% in rails :coditions={:has_many , :through}
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (力扣)循环队列的实现与详解(C语言)
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ***原理与防范
  • .env.development、.env.production、.env.staging
  • .net/c# memcached 获取所有缓存键(keys)