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

一.docker的介绍

1、Docker 是什么?

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

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

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

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

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

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

Docker 的优缺点

(1)优点

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

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

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

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

署。

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

性等问题。

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

(2)缺点

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

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

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

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

容器的存储。

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

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

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

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

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

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

可能变得难以维护。

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

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

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

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

等。

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

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

Kubernetes 等运⾏ Docker 容器的⼯具。

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

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

的时间和精⼒。

Docker 核⼼概念

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

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

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

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

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

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

  1. 仓库注册服务器(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. 镜像操作 ![](https://i-blog.csdnimg.cn/direct/d4a9656e55894407b74ce54a4e70520b.png) (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](https://mirrors.aliyun.com/repo/Centos-vault-8.5.21 "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](http://localhost "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

相关推荐
东方佑19 分钟前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
zhougl9961 小时前
html处理Base文件流
linux·前端·html
泥土编程2 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
wirepuller_king5 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
在野靡生.6 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~6 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
我没想到原来他们都是一堆坏人7 小时前
利用vmware快速安装一个可以使用的centos7系统
linux·虚拟机
x-cmd7 小时前
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
android·linux·开发语言·c++·web·音乐播放器·脚本语言
weitinting7 小时前
Ali linux 通过yum安装redis
linux·redis
myloveasuka7 小时前
[Linux]从硬件到软件理解操作系统
linux·开发语言·c++