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

docker的安装+docker镜像的基本操作

一.docker的介绍

1Docker 是什么?

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤

机制,容器之间不会存在任何接⼝。

Docker 通过 Linux Container(容器)技术将任意类型的应⽤进⾏包

装,变成⼀种轻量级、标准化、可移植、⾃管理的组件。在包装应

⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以将

这种移植到任意环境去运⾏,省去兼容性的问题。

Docker 的优缺点

1)优点

1. 体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。

2. 启动迅捷:更快速的交付和部署,docker容器 ,⽐传统虚拟机

要快很多,docker核⼼解决的问题就是利⽤容器实现VM类似的

功能。3. 操作⽅便:通过配置 dockerfile 便⽀持灵活的⾃动化创建和部

署。

4. 更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容

性等问题。

5. 更强的可扩展性和可移植性。

2)缺点

1. 安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影

响到主机上的其他容器以及主机本身的安全。

2. 存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮

常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量

容器的存储。

3. 性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。

这些性能问题越来越少,但是仍然需要考虑。

4. ⽹络问题:Docker 可能会在⽹络配置上存在⼀些问题,这可能

需要更多的时间来诊断和解决。

5. 复杂性:Docker 是⼀个⾮常灵活的系统,但这同时也让它更加

复杂。⻓时间使⽤ Docker 会产⽣⼤量的脚本和配置⽂件,这些

可能变得难以维护。

6. 资源消耗:使⽤ Docker 必须占⽤⼀些资源,包括 CPU、内

存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能

问题。7. 学习曲线:Docker 是⼀个相对新的技术,相⽐传统环境需要⼀

定的学习曲线。需要了解Docker 基本概念、命令和配置⽂件

等。

8. 需要花费时间配置和管理:使⽤ Docker 需要花时间配置和管理

容器集群和应⽤程序。需要配置每个容器,管理 Jenkins

Kubernetes 等运⾏ Docker 容器的⼯具。

9. 映像构建复杂:构建Docker映像需要按照特定格式编写

Dockerfile 脚本,需要遵循⼀定的规范和流程,这可能需要更多

的时间和精⼒。

Docker 核⼼概念

1. 镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也

是容器的基础,类似于 iso 镜像⽂件。

2. 容器(container):基于镜像所创建的虚拟实例,相当于⼀个

简易的 Linux 环境,可启停,且多个容器之间互相隔离。

3. 仓库(Repository):集中存放 docker 镜像的位置,可使⽤

docker pull  push 命令下载或上传到私有或公有仓库。

4. 仓库注册服务器(registry):存放仓库的地⽅,如果没有私有

仓库,则使⽤公共仓库 docker hub

.安装docker

1.配置环境:

[root@docker0 ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf

> overlay

> br_netfilter

> EOF

overlay

br_netfilter

[root@docker0 ~]# modprobe overlay

[root@docker0 ~]# modprobe br_netfilter

[root@docker0 ~]# cat << EOF | tee /etc/sysctl.d/k8s.conf

> net.bridge.bridge-nf-call-iptables = 1

> net.bridge.bridge-nf-call-ip6tables = 1

> net.ipv4.ip_forward = 1

> EOF

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.ipv4.ip_forward = 1

[root@docker0 ~]# sysctl --system

2.安装:

[root@docker0 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加仓库:

[root@docker0 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@docker0 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

4.启动服务:

[root@docker0 ~]# systemctl start docker.service

5.查看现有的镜像:

[root@docker0 ~]# docker images

6.搜索镜像:

[root@docker0 ~]# docker search tomcat

Docker的基本操作

  1. 镜像操作

(1)配置docker镜像站:

[root@docker0 ~]# vim /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"

        ]

}

[root@docker0 ~]# systemctl restart docker.service

(2)下载centos镜像:

[root@docker0 ~]# docker pull centos

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

(3)运行并创建容器:

[root@docker0 ~]# docker run -i -t --name=c0 centos:latest /bin/bash

docker是软件 -i是交互 -t是允许在终端运行,取名为c0,latest是版本

现在是已经进入了一个新系统

(4)配置阿里云的yum仓库:

[root@c28bcbe962be ~]# rm -rf /etc/yum.repos.d/*

[root@c28bcbe962be ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.21

ls /etc/yum.repos.d/

yum clean all && yum makecache

yum -y install iproute

yum -y install httpd

yum -y install net-tools

cat /etc/redhat-release

echo docker_httpd_server > /var/www/html/index.html

(5)启动服务:

httpd -k start

(6)访问

访问自身:

curl http://localhost:80

在宿主机上访问:

[root@docker0 ~]# curl 172.17.0.2

docker_httpd_server

无法在物理机上访问,也无法ping到这个主机

如果没有指令正在执行,容器就会停止

[root@c28bcbe962be ~]# exit

(7)重启容器:

[root@docker0 ~]# docker start c0

c0

[root@docker0 ~]# docker attach c0   //将c0的终端挂载到当前的宿主机上面来

[root@c28bcbe962be /]#

[root@c28bcbe962be /]# netstat -lnput|grep 80

[root@c28bcbe962be /]# httpd -k start

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

[root@c28bcbe962be /]# curl localhost

docker_httpd_server

以上是退出之后就没进程了,需要从新启动

期望退出想继续运行:ctrl+p+q(按住ctrl不松手,先按p再按q)

docker远程管理

管理步骤:

  1. 停用docker服务

[root@c28bcbe962be /]# exit

exit

[root@docker0 ~]# systemctl stop docker

2.进入配置文件修改

[root@docker0 ~]# vim /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"

        ]

,

        "hosts": [

           "tcp://0.0.0.0:2375",

           "unix:///var/run/docker.sock"

        ]

}

[root@docker0 ~]# systemctl start docker

[root@docker0 ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd //这行剩下的删了

[root@docker0 ~]# systemctl stop docker.service

[root@docker0 ~]# systemctl start docker.service

3.加载daemon.json

[root@docker0 ~]# systemctl daemon-reload

4.启动服务

[root@docker0 ~]# systemctl start docker.service

5.查看状态

[root@docker0 ~]# netstat -lnput|grep 2375 //确保端口打开

tcp6       0      0 :::2375                 :::*                    LISTEN      40705/dockerd       

[root@docker0 ~]# ls -lh /var/run/     //确保docker.sock文件在

srw-rw----.  1 root    docker     0 8月  22 16:10 docker.sock  //出现这个就行

根据以上允许远程连接,需要2375端口打开,查看有docker.sock文件则就可以远程连接

  1. 远程管理

[root@docker0 ~]# docker -H 192.168.2.13 images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 浅谈垃圾回收机制
  • Python实现贪心算法
  • Python3:多行文本内容转换为标准的cURL请求参数值
  • UDP+TCP
  • leetcode242:有效的字母异位词
  • 【精选】基于协同过滤算法的小说推荐系统(定制参考分享)
  • 【51单片机】ds18b20驱动,11.0592MHZ,使用DS18b20
  • 【运维】linux使用systemd手动部署与管理服务进程,以webhook回调告警为例(附常用linux进程/端口状况查看命令)
  • C#发邮件时如何确保邮件内容的安全和隐私?
  • 猫用空气净化器好不好?养猫推荐宠物空气净化器品牌
  • uniapp点击预览图片,两种效果
  • ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南
  • 聚类分析|距离与相似系数|层次聚类|K均值聚类|SPSS及Matlab
  • SQL 调优最佳实践笔记
  • Spring + Boot + Cloud + JDK8 + Elasticsearch 单节点 模式下实现全文检索高亮-分页显示 快速入门案例
  • 2017届校招提前批面试回顾
  • CSS3 变换
  • css属性的继承、初识值、计算值、当前值、应用值
  • Laravel 菜鸟晋级之路
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • PAT A1050
  • Python 反序列化安全问题(二)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue-router 实现分析
  • Vue--数据传输
  • 从零开始在ubuntu上搭建node开发环境
  • 基于组件的设计工作流与界面抽象
  • ------- 计算机网络基础
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前言-如何学习区块链
  • - 转 Ext2.0 form使用实例
  • ionic入门之数据绑定显示-1
  • 选择阿里云数据库HBase版十大理由
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #window11设置系统变量#
  • (02)Unity使用在线AI大模型(调用Python)
  • (1)(1.11) SiK Radio v2(一)
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)字符分类函数
  • (javaweb)Http协议
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)hibernate配置管理
  • (学习日记)2024.02.29:UCOSIII第二节
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET微信公众号开发-2.0创建自定义菜单
  • /etc/skel 目录作用
  • @javax.ws.rs Webservice注解