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

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

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

相关文章

【线程池】

什么是线程池&#xff1f; 线程池是一个可以复用线程的技术。简单来说&#xff0c;线程池是一种基于池化技术的思想来管理线程的技术&#xff0c;旨在减少线程的创建和销毁次数&#xff0c;提高系统的响应速度和吞吐量。它预先创建了一定数量的线程&#xff0c;并将这些线程放…

Java中的定时器(Timer)

目录 一、什么是定时器? 二、标准库中的定时器 三、实现自定义定时器 一、什么是定时器? 定时器就像一个"闹钟"&#xff0c;当它到达设定的时间后&#xff0c;就会执行预定的代码。 例如&#xff0c;我们在TCP的超时重传机制中讲过&#xff0c;如果服务器在规定…

DNS劫持问题

目录 DNS劫持概述 定义 图示 ​编辑图示说明 DNS劫持的原理 1. DNS请求与响应过程 图示 ​编辑2. 劫持发生点 本地劫持 路由器劫持 中间人攻击 图示 ​编辑图示说明 DNS劫持的影响 1. 对个人用户的影响 图示 ​编辑图示说明 2. 对企业的影响 图示 ​编辑图示…

0828作业+梳理

一、作业 代码&#xff1a; #include <iostream>using namespace std;using datatype int; //类型重命名 #define MAX 2 //宏定义 //结构体定义 struct Sqlist { private:datatype *data; //顺序表数组int size 0; //数组大小int len 0; …

Ubuntu 16.04下Firefox版本更新

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 在Ubuntu 16.04上更新Firefox的过程可能涉及多个步骤&#xff0c;具体取决于你的需求&#xff0c;比如是要安装一个稳定版本&#xff0c;还是需要使用最新的开发者版本或beta版本。下面我将详细介绍如何在Ub…

Python酷库之旅-第三方库Pandas(105)

目录 一、用法精讲 456、pandas.DataFrame.rdiv方法 456-1、语法 456-2、参数 456-3、功能 456-4、返回值 456-5、说明 456-6、用法 456-6-1、数据准备 456-6-2、代码示例 456-6-3、结果输出 457、pandas.DataFrame.rtruediv方法 457-1、语法 457-2、参数 457-3…

搭建面向切面编程项目

此项目在整合Mybatis基础上修改&#xff0c;可参考主页的整合Mybatis文章 注解版本 第一步 引入maven坐标 <!-- 切面编程所需jar包--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId>…

学生管理系统升级(登录注册 + 关联学生管理系统)

新增需求 这是在昨天的基础初代版本上面新增一个登录注册忘记密码的功能 需求分析 注册 登录 忘记密码 user类代码呈现 package StudentSystem;public class User {private String username;private String password;private String personID;private String phoneNumber;pu…

PHP同城派送多区域运营配送小程序源码

&#x1f69a;&#x1f4a8;「同城派送多区域运营小程序」——让每一份需求快速触达&#xff01;&#x1f308;&#x1f680; &#x1f525; 开篇燃爆&#xff1a;同城生活新风尚&#xff0c;一键速达不是梦&#xff01; Hey小伙伴们&#xff0c;你还在为找不到合适的同城服务…

推荐并整理一波vscode插件(哪些内置了,哪些好用)

文章目录 背景现在还在用的&#xff08;21款&#xff09;Chinese(Simplified)简体中文Chinese LoremLorem ipsumCode Runner&#xff08;很推荐&#xff09;Codeium: AI Coding Autocomplete&#xff08;推荐&#xff09;Draw.io IntegrationESLintHighlight Matching TagJavaS…

甄选范文“论软件系统建模方法及其应用”,软考高级论文,系统架构设计师论文

论文真题 软件系统建模(Software System Modeling)是软件开发中的重要环节,通过构建软件系统模型可以帮助系统开发人员理解系统、抽取业务过程和管理系统的复杂性,也可以方便各类人员之间的交流。软件系统建模是在系统需求分析和系统实现之间架起的一座桥梁,系统开发人员…

【二叉树】OJ题目

&#x1f31f;个人主页&#xff1a;落叶 目录 单值⼆叉树 【单值二叉树】代码 相同的树 【相同二叉树】代码 对称⼆叉树 【对称二叉树】代码 另一颗树的子树 【另一颗树的子树】代码 二叉树的前序遍历 【二叉树前序遍历】代码 二叉树的中序遍历 【二叉树中序遍历】…

NVIDIA将在Hot Chips 2024会议上展示Blackwell服务器装置

NVIDIA 将在 Hot Chips 2024 上展示其 Blackwell 技术堆栈&#xff0c;并在本周末和下周的主要活动中进行会前演示。对于 NVIDIA 发烧友来说&#xff0c;这是一个激动人心的时刻&#xff0c;他们将深入了解NVIDIA的一些最新技术。然而&#xff0c;Blackwell GPU 的潜在延迟可能…

【freeDiameter】服务端和客户端的连接流程

连接流程详解 进程启动时&#xff0c;先使用main_cmdline解析命令行参数&#xff0c;比如使用-c就会使用指定路径的配置文件&#xff0c;使用-d就会启用后台进程。 之后使用fd_core_initialize初始化核心库。具体会先使用fd_conf_init初始化配置&#xff0c;比如设置各项的默…

最长的一帧学习 part3

文章目录 八、osgUtil:: SceneView::cull ()part1 初始化必要的SceneView类成员变量part2 立体显示的处理part3 执行SceneView::cullStage函数&#xff0c;它也是场景视图筛选工作的核心函数part3.1 首先统计场景中的遮挡节点&#xff08;OccluderNode&#xff09;&#xff0c;…

缺失ffmpeg.dll要用什么修复方法?快速恢复丢失的ffmpeg.dll文件

多媒体软件用户常常会遭遇一个提示&#xff1a;系统无法找到ffmpeg.dll文件。这类情况经常在启动视频编辑软件、流媒体播放应用或其他音视频处理工具时出现&#xff0c;导致相关程序无法正确加载和执行。ffmpeg.dll是一种关键的动态链接库文件&#xff0c;负责处理复杂的视频和…

ssrf+redis未授权访问漏洞复现

ssrfredis未授权访问漏洞复现 一&#xff0c;pikachu靶场练习 docker拉取环境&#xff1a; docker run -d -p 8765:80 8023/pikachu-expect:latest国内很多加速源都用不成&#xff0c;配置代理拉取即可&#xff0c;配置方式如下&#xff1a; 1&#xff0c;新建目录 mkdir -…

数据结构与算法的代码实现(C++版)

数据结构与算法的代码实现&#xff08;C版&#xff09; 1. 线性表的顺序表示和实现1.1 线性表的初始化1.2 线性表的销毁1.3 线性表的清空1.4 线性表的长度1.5 判断线性表是否为空1.6 线性表的线性表取值1.7 线性表的顺序查找1.8 线性表的插入1.9 线性表的删除总结 2. 线性表的链…

JavaScript ES6+ 新特性

JavaScript ES6 新特性 引言 随着前端技术的不断发展&#xff0c;JavaScript 语言也在不断演进。自 ES6&#xff08;ES2015&#xff09;发布以来&#xff0c;JavaScript 引入了许多新的特性和语法&#xff0c;极大地提升了开发者的编程体验和代码的可维护性。本篇文章将详细探…