Docker的概述及如何启动docker的镜像、远程管理宿主机的docker进程

一、概述:

1、Docker 是什么?

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采用"沙盒"机制,容器之间不会存在任何接口。

2、Docker 和虚拟机的区别:

1)启动速度:Docker 启动速度⾮常快,属于秒级别,⽽虚拟机通常需要⼏分钟去启动。

2)资源消耗:Docker 需要的资源更少,它直接运⾏在宿主机的内核上,以⼀系列进程的结合形式存在。⽽虚拟机则需要消耗更多的资源,因为它在操作系统级别进⾏虚拟化。

3)轻量级:Docker 更轻量,它的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩⽽虚拟机则相对较重,需要消耗更多的内存。

4)隔离性:虚拟机可以实现系统级别的隔离,⽽ Docker 则属于进程之间的隔离,隔离性相对较弱。

5)安全性:Docker 的安全性也更弱。

6)可管理性:Docker 的集中化管理⼯具还不算成熟。

7)兼容性:开发⼈员不需要关系具体是哪个 Linux 操作系统,基本市⾯上主流系统都可使⽤ Docker。

8)数据持久性:Docker ⽆法存储数据,当容器重启后,数据会消失;⽽虚拟机可以存储各种数据,包括日志、数据库等。

3、Docker 解决的问题

系统环境不⼀致问题;应用隔离问题;服务器扩展问题

4、Docker 的优缺点:

(1)优点:体积小、启动迅捷、操作⽅便、更轻松的扩展、更强的可扩展性和可移植性。

(2)缺点:安全问题、存储问题、性能问题、⽹络问题、需要花费时间配置和管理、映像构建复杂。

5、Docker 架构

1)⽤ docker pull 命令从 hub.docker.com 官⽹上下载 images (镜像)。

2)可以⽤ docker save 命令将镜像保存到本地 tar ⽂件,也可以⽤ docker load 命令将本地tar ⽂件导⼊镜像。

3)可以⽤ docker build 构建 Dockerfile 镜像。

4)可以⽤ docker run 和 docker create 将镜像运⾏成 container (容器),容器内可以安装需要的 APP。

5)可以⽤ docker commit/export 将容器做成镜像反复的使⽤。

6)可以将自己制作的镜像发布到 hub.docker.com网站,需要注册账号。

6、Docker 核⼼概念:

1)镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像⽂件。

2)容器(container):基于镜像所创建的虚拟实例,相当于⼀个简易的 Linux 环境,可启停,且多个容器之间互相隔离。

3)仓库(Repository):集中存放 docker 镜像的位置,可使⽤ docker pull 或 push 命令下载或上传到私有或公有仓库。

4)仓库注册服务器(registry):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库 docker hub。

7、Docker特性

1)文件系统隔离:每个进程容器运⾏在⼀个完全独⽴的根⽂件系统里。

2)资源隔离:实现不同的容器的资源配额和调度,cgroup。

3)网络隔离:每个进程容器运⾏在自己的⽹络空间,拥有虚拟接口和 IP 地址。

4)⽇志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),⽤于实时检索或者批量检索。

5)变更管理:容器⽂件系统的变更可以提交到新的镜像中,并可重复使⽤以创建更多的容器。

6)交互式shell:Docker可以分配⼀个虚拟终端并且关联到任何容器的标准输出上,例如运⾏⼀个⼀次性交互shell。

二、安装docker

root@docker \~\]# cat \<\< EOF \| tee /etc/modules-load.d/k8s.conf \> overlay \> br_netfilter \> EOF overlay br_netfilter \[root@docker \~\]# modprobe overlay \[root@docker \~\]# modprobe br_netfilter \[root@docker \~\]# 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@docker \~\]# sysctl --system \[root@docker \~\]# yum install -y yum-utils device-mapper-persistent-data lvm2 ****# 添加阿⾥云yum源**** \[root@docker\~\]#yum-config-manager --add-repo [https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo](https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo "https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo") ****# 安装docker,allowerasing:允许卸载旧版本**** \[root@docker\~\]#docker-compose-plugin -y --allowerasing \[root@docker\~\]#yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin ****#**** ****设置阿⾥云镜像加速器**** ****,**** ****阿⾥云官**** ****网**** ****:**** [阿里云-计算,为了无法计算的价值](https://www.aliyun.com/ "阿里云-计算,为了无法计算的价值") 登录后点击控制台 ![](https://i-blog.csdnimg.cn/direct/e1dd80526b1c41769c394038112b43b0.png) ![](https://i-blog.csdnimg.cn/direct/5f49a7b8513d4f409693df8698b89798.png) ![](https://i-blog.csdnimg.cn/direct/d4c22011a73f4c288390612a7a86cd67.png) ![](https://i-blog.csdnimg.cn/direct/99652d208cfb4b5fbe823635a66b341f.png) ![](https://i-blog.csdnimg.cn/direct/705703e1f1334517a2a20e60167c0570.png) ![](https://i-blog.csdnimg.cn/direct/d9ab531d2ed74de48bcc330d7d1be53e.png) #### 三、启动docker \[root@docker\~\]#systemctl start docker # 启动服务 \[root@docker\~\]#docker images # 查看镜像 \[root@docker\~\]#docker info \| grep "https" # 查看自己的镜像加速器地址 \[root@docker\~\]#docker search tomcat \[root@docker \~\]# 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@docker \~\]# systemctl restart docker ****# 拉取centos基础镜像,镜像是模版,容器是实例**** \[root@docker\~\]#docker pull centos \[root@docker \~\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 years ago 231MB ****# 交互式进入容器**** \[root@docker \~\]# docker run -it --name=c0 centos:latest /bin/bash 版本信息 \[root@87eb4bb2639a /\]# ls bin home lost+found opt run sys var dev lib media proc sbin tmp etc lib64 mnt root srv usr \[root@87eb4bb2639a /\]# cd /etc/yum.repos.d/ \[root@87eb4bb2639a yum.repos.d\]# ls CentOS-Linux-AppStream.repo CentOS-Linux-BaseOS.repo CentOS-Linux-ContinuousRelease.repo CentOS-Linux-Debuginfo.repo CentOS-Linux-Devel.repo CentOS-Linux-Extras.repo CentOS-Linux-FastTrack.repo CentOS-Linux-HighAvailability.repo CentOS-Linux-Media.repo CentOS-Linux-Plus.repo CentOS-Linux-PowerTools.repo CentOS-Linux-Sources.repo ****# 安装阿里云网络yum源**** \[root@87eb4bb2639a /\]#rm -rf \*.repo \[root@87eb4bb2639a /\]#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo \[root@87eb4bb2639a /\]#yum clean all \[root@87eb4bb2639a /\]#yum makecache \[root@87eb4bb2639a /\]#yum -y install iproute net-tools httpd \[root@87eb4bb2639a /\]# uptime //当前位置和启动时间 06:33:59 up 2:28, 0 users, load average: 0.29, 0.19, 0.11 \[root@87eb4bb2639a /\]# cat /etc/redhat-release //查看当前镜像版本 CentOS Linux release 8.4.2105 ****# 修改httpd首页文件、启动并测试访问**** \[root@87eb4bb2639a /\]# echo 'docker_httpd_server' \> /var/www/html/index.html \[root@87eb4bb2639a /\]# systemctl start httpd System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down \[root@87eb4bb2639a /\]# httpd -k start \[root@87eb4bb2639a /\]# curl localhost //容器内部 docker_httpd_server \[root@docker \~\]# curl [http://172.17.0.2](http://172.17.0.2 "http://172.17.0.2") //宿主机 docker_httpd_server ****# 查看当前容器的进程**** \[root@87eb4bb2639a /\]# ps -all //查看docker进程 \[root@87eb4bb2639a /\]#ps -aux\|grep docker root 323 0.0 0.0 9192 728 pts/0 S+ 07:04 0:00 grep --color=auto docker ****# 进入管理界面,将c0的终端挂载到当前宿主机上**** \[root@87eb4bb2639a /\]# exit //退出之后没进程了 exit \[root@docker \~\]# docker start c0 c0 \[root@docker \~\]# docker attach c0 \[root@87eb4bb2639a /\]# ****# 期望退出,服务继续运⾏ ctrl+p+q**** \[root@87eb4bb2639a /\]# curl localhost docker_httpd_server \[root@87eb4bb2639a /\]# read escape sequence #### 四、远程管理宿主机的docker进程 1、关闭docker守护进程 \[root@docker \~\]# systemctl status docker \[root@docker \~\]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket 2、再次测试 \[root@docker \~\]# docker attach c0 You cannot attach to a stopped container, start it firs 3、发现再次启动docker并未生成新的docker.sock套接字文件 #mysql案例 /var/lib/mysql/msyql.sock mysql -uroot -proot mysql -hxxxx -uroot -proot \[root@docker \~\]# ls -lh /var/run/ srw-rw----. 1 root docker 0 8月 22 11:36 docker.sock \[root@docker \~\]# systemctl start docker srw-rw----. 1 root docker 0 8月 22 11:36 docker.sock 4、修改配置文件,设置允许远程,默认情况下没有daemon.json⽂件,在添加daemon之前,先修改 \[root@docker \~\]# vim /usr/lib/systemd/system/docker.service { "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"**** ****\]**** } 5、删除相关sock文件 \[root@docker \~\]# vim /usr/lib/systemd/system/docker.service 13 ExecStart=/usr/bin/dockerd \[root@docker \~\]# systemctl daemon-reload # 加载配置⽂件 \[root@docker \~\]# systemctl start docker 6、重新开启docker守护进程,查看状态 \[root@docker \~\]#systemctl daemon-reload \[root@docker \~\]#systemctl start docker \[root@docker \~\]# ls -lh /var/run/docker.sock //查看sock套接字文件 srw-rw----. 1 root docker 0 8月 22 16:22 /var/run/docker.sock \[root@docker \~\]# netstat -lntpu\|grep 2375 //#要允许远程连接,需要有⼀个服务,使⽤端⼝体现 tcp6 0 0 :::2375 :::\* LISTEN 5133/dockerd 远程管理 \[root@docker \~\]#docker -H192.168.2.50 -it -name ... #### 五、Docker 基本操作 1、镜像操作 ![](https://i-blog.csdnimg.cn/direct/2fb1c70ac745469eb142f2374ad9b320.png) ![](https://i-blog.csdnimg.cn/direct/410013b69bfa44c184e3c36e6ac73701.png) ![](https://i-blog.csdnimg.cn/direct/5adf83d3ad45463da429475cf337c154.png) 2、容器操作 ![](https://i-blog.csdnimg.cn/direct/3935c78772c5405bbf35b51c649fc133.png) ![](https://i-blog.csdnimg.cn/direct/05fbcdd6cbfe4258b44d46001c7208d3.png)

相关推荐
Bruce-li__28 分钟前
创建私人阿里云docker镜像仓库
阿里云·docker·云计算
阳区欠2 小时前
【Linux】进程通信
linux·运维·服务器·共享内存·进程通信·system v·管道文件
may_一一2 小时前
终端SSH连接工具SecureCRT安装和连接Linux
运维·服务器·ssh
姓刘的哦3 小时前
Ubuntu环境安装
linux·运维·ubuntu
mingyuewu3 小时前
MAC安装docker 后提示com.docker.vmnetd”将对您的电脑造成伤害
macos·docker·容器
小小寂寞的城3 小时前
Ubuntu里安装Jenkins
ubuntu·ci/cd·docker·jenkins
春生黎至10053 小时前
GZ073网络系统管理赛项赛题第1套模块A:网络构建解题笔记
运维·网络
IT程序媛-桃子4 小时前
【网安面经合集】42 道高频 Web 安全面试题全解析(附原理+防御+思路)
运维·网络·安全·面试
❀͜͡傀儡师4 小时前
多台服务器上docker部署 Redis 集群
运维·服务器·redis
JCBP_4 小时前
数据结构4
运维·c语言·数据结构·vscode