Docker基础1-3

news2024/11/16 23:38:03

Docker基础1-3

时间:2023-01-02
https://www.bilibili.com/video/BV1gr4y1U7CY/
xmind文档:https://www.aliyundrive.com/s/6iaQt9zLDVm

一、Docker简介

1、Docker解决了什么问题

Docker打破了过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
举例:
传统方法部署博客系统,需要在服务器上安装mysql,redis,rabbitmq,nginx,运行jar包,将dist文件上传到指定位置,修改各软件的配置文件等;而Docker可以将上述数据库、中间件、配置文件、应用服务、程序运行所需要的依赖(最小化linux内核)等全部打包成一个image。在其他服务器上部署博客系统应用时,只需要安装docker,使用docker run image,即可完整部署该博客系统。

2、Docker理念

Docker是基于Go语言实现的云开源项目,Docker的主要目标是“Build,Ship and Run Any App,Anywhere”。一次镜像,处处运行。Docker是解决了运行环境和配置问题的软件容器,方便做持续集成并并有助于整体发布的容器虚拟化技术。

3、容器和虚拟机的比较

(1)虚拟机

虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
虚拟机

虚拟机缺点:
1 资源占用多 ,虚拟机是在宿主机上运行Hypervisor层软件,并模拟出完整的guest OS
2 冗余步骤多
3 启动慢

(2)容器

容器不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。Docker容器是在操作系统层面上实现虚拟化,Docker占用体积小,启动速度快。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。在这里插入图片描述

(3) 为什么Docker比虚拟机快

docker不需要Hypervisor(虚拟机)
docker利用的是宿主机的内核,而不需要加载Guest OS内核
在这里插入图片描述
在这里插入图片描述

4、Docker官网

https://www.docker.com/
https://hub.docker.com/ 存放镜像image

二、Docker安装

1、安装前提条件

Docker必须部署在Linux内核系统上,要求系统为64位、Linux系统内核版本为 3.8以上。
查看内核
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)

-bash-4.2# cat  /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

-bash-4.2# uname -r
3.10.0-1160.53.1.el7.x86_64

2、Docker基本组成

(1)镜像image

Docker 镜像是一个只读模板,可以用来创建 Docker 容器。docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

(2)容器container

从面向对象角度:
Docker 利用容器(Container)独立运行的一个或一组应用。镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
从镜像容器角度:
容器可以看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

(3)仓库repository

仓库(Repository)是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库:Docker公司提供的Docker Hub。

3、Docker平台架构

Docker 是一个 C/S 模式的架构。

Docker客户端发送指令给Docker Server端处理。
如docker 客户端发送docker pull centos命令,Docker daemon守护进程接收到该条命令后检查本地是否有centos镜像,有则使用本地镜像,无则去配置的docker 镜像地址下载centos镜像,这里没有写版本,那就默认取lastest版本,如果是docker pull centos:7.3 则获取指定版本的centos镜像。获取到镜像后,运行docker run centos命令,则以centos镜像为模板,创建一个容器。在这里插入图片描述
在这里插入图片描述

4、Centos7安装Docker步骤

官方安装文档:https://docs.docker.com/engine/install/centos/

(1)确保Linux内核版本3.8以上

(2) 卸载旧版本Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

(3)yum安装gcc及相关软件包

yum  -y  install gcc
yum -y intsall gcc-c++
yum install -y yum-utils

(4)设置稳定的镜像仓库,docker官网的仓库太慢,建议使用阿里云的

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

(5) 更新yum软件包索引

yum   makecache  fast

(6) 安装Docker CE

yum   -y  install  docker-ce docker-ce-cli containerd.io

(7) 启动docker

systemctl start docker

(8) 测试Docker是否启动成功

docker  version
docker  run hello-word

(9) 卸载Docker

systemctl stop docker
yum remove docker-ce   docker-ce-cli containerd.io
rm -fr /var/lib/docker
rm -fr /var/lib/containerd

5、Docker配置阿里云镜像加速器

https://blog.csdn.net/weixin_45764765/article/details/1283672197

三、Docker常用命令

1、启动类命令

1 启动Docker

systemctl  start  docker

2 停止docker

systemctl  stop  docker

3 重启docker

systemctl  restart  docker

4 查看docker状态

systemctl  status  docker

5 设置docker开机自启

systemctl  enable  docker

6 查看docker概要信息

docker info

7 查看帮助信息

docker --help

8 查看某个具体命令的帮助信息

docker run --help

2、镜像命令

# 1 查看本地主机的镜像
-bash-4.2# docker images
REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
redis             latest    0256c63af7db   12 days ago   117MB
nginx             latest    1403e55ab369   12 days ago   142MB
rabbitmq          latest    3ddcc140fe5c   2 weeks ago   228MB
mysql             8.0       7484689f290f   3 weeks ago   538MB
primetoninc/jdk   1.8       f4b4fccc65bb   4 years ago   657MB

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

docker images 参数说明
-a  列出本地所有的镜像,包含历史镜像层
-q  静默模式,只显示镜像id
-----------------------------------------------------------------------------------
# 2  查找镜像 
-bash-4.2# docker search  redis  --limit 5
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                    Redis is an open source key-value store that…   11695     [OK]       
redislabs/redisinsight   RedisInsight - The GUI for Redis                77                   
redislabs/redisearch     Redis With the RedisSearch module pre-loaded…   56                   
redislabs/redis          Clustered in-memory database engine compatib…   36                   
redislabs/rebloom        A probablistic datatypes module for Redis       21                   [OK]

NAME  镜像名称
DESCRIPTION   镜像描述
STARS 点赞数
OFFICIAL  是否官方
AUTOMATED   是否是自动构建的

参数说明  --limit  N  只列出N个镜像,不写limit时,默认展示25个镜像
-----------------------------------------------------------------------------------
# 3、下载镜像  docker  pull  镜像名称[:TAG]
-bash-4.2# docker pull mysql:5.7
5.7: Pulling from library/mysql
d26998a7c52d: Downloading [============================>                      ]  28.59MB/49.82MB
4a9d8a3567e3: Download complete 
........
701dea355691: Pull complete 
Digest: sha256:6306f106a056e24b3a2582a59a4c84cd199907f826eff27df36406f227cd9a7d
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
# docker pull mysql:5.7  指下载5.7版本的mysql
# docker pull mysql 指下载最新版本的mysql,等价于docker pull mysql:lastest
-----------------------------------------------------------------------------------
# 4、查看镜像、容器、数据卷所占的空间
-bash-4.2# docker system  df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          6         4         2.097GB   1.233GB (58%)
Containers      4         3         1.708kB   1.093kB (63%)
Local Volumes   3         1         191.6kB   130.7kB (68%)
Build Cache     0         0         0B        0B
-----------------------------------------------------------------------------------
# 5、删除镜像  docker  rmi   镜像名称或id
-bash-4.2# docker rmi  redis
Error response from daemon: conflict: unable to remove repository 
reference "redis" (must force) - container cec779594508 is using 
its referenced image 0256c63af7db

删除镜像时,必须没有容器使用该镜像,docker stop 容器名称或id,再删除镜像
或者使用 -f 选项,无论是否有容器使用该镜像,都可以删掉镜像 

3、容器命令

3.1 新建并启动容器

docker   run  [OPTIONS]  IMAGES   [COMMAND][ARGS]

------ OPTIONS说明----
--name="myredis"   为容器起一个新名字,否则系统随机给容器起名字
-d  后台运行容器,返回容器ID
-i   interactive 交互式运行容器,通常与 -t 一起使用,提供一个可以操作容器的终端
-t   tty  为容器分配一个伪终端,通常与-i 同时使用
-P   随机端口映射
docker  run  -it  centos:lastest  /bin/bash   创建启动centos容器,并提供一个交互式shell

3.2 列出当前正在运行的容器

docker   ps   [OPTIONS]
-a  列出当前所有正在运行的容器 + 历史上运行过的
-l  显示最近创建的容器
-n  显示最近n个创建的容器
-q  quiet 静默模式,只显示容器编号

3.3 退出容器

两种退出方式
exit 退出,容器停止:  docker run -it  centos /bin/bash 进入容器,exit退出容器,exit退出后,容器会停止运行
ctrl + p + q退出,容器不停止: docker run -it  centos /bin/bash 进入容器,退出容器,ctrl + p + q退出容器不停止

3.4 停止容器

docker  stop 容器ID或容器名称

3.5 强制停止容器

docker  kill 容器ID或容器名称

3.6 启动已停止的容器

docker  start  容器ID或容器名称

3.7 重启容器

docker restart  容器ID或容器名称

3.8 删除已停止的容器

docker   rm   容器ID或容器名称

3.9 启动守护式容器

docker   run   -d    redis:6.0.8    后台启动
docker   run   -it    redis:6.0.8   前台启动

3.10 查看容器日志

docker   logs  容器名称或容器ID

3.11 查看容器内运行的进程

docker  top  容器名称或容器ID

3.12 查看容器内部细节

docker  inspect 容器名称或容器ID

3.13 进入正在运行的容器,并以命令行交互

(1)
docker  exec  -it  容器ID   bashShell  使用exit退出不会导致容器停止。
exec是在容器中打开新的终端,并且可以启动新的进程
(2)
docker  attach   容器ID   使用exit退出会导致容器停止

一般使用docker  run -d redis 后台启动程序,然后docker exec -it  redis redis-cli  进入容器操作

3.14 从容器拷贝文件到宿主机

docker  cp  容器ID:容器内路径    宿主机路径
该命令在Linux命令行运行

3.15 导入和导出容器

docker   export 容器ID > 文件名.tar
cat  文件名.tar  | docker import - 镜像用户/镜像名:镜像版本号

4、总结

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images       # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

在这里插入图片描述

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

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

相关文章

LeetCode:15. 三数之和

15. 三数之和1)题目2)思路3)代码4)结果1)题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] …

【Nginx】核心配置文件结构

文章目录Nginx核心配置文件结构全局块user指令work process指令其他指令events块events指令配置实例http块定义MIME-Type自定义服务日志其他配置指令server块和location块Nginx服务器基础配置实例Nginx核心配置文件结构 从前面的内容学习中,我们知道Nginx的核心配置…

给力!低代码开发平台广州流辰信息科技助您增辉创价值!

低代码平台开发公司流辰信息深耕行业多年,一直以市场为导向,凭借敏锐的市场洞察力砥砺前行、拼搏进取,提升研发创新能力,广州流辰信息科技与各新老客户朋友风雨同舟,携手共创宏伟新蓝图! 一、熔铸前沿科技 …

kettle的安装以及注意(迭代中....)

1、下载 kettle的官网下载地址:Pentaho from Hitachi Vantara - Browse Files at SourceForge.net 如果需要下载其他版本: 直接点击对应的版本Name(8.0以下的实在Data Integration文件夹里面)进去,再选择client-too…

【C++】代码调试的学习笔记

1. IO输出调试:输出重定向 在《第八期-C基础与深度解析》课程中,老师使用了“输出重定向”的语句来查看cout和cerr的结果: ./HelloWorld >txt1 2>txt2 代码含义:将程序HelloWorld的标准输出stdout重定向至文件txt1&#xf…

百趣代谢组学分享:从SWATH到MRM:一种新型高覆盖度靶向代谢组学技术

百趣代谢组学文献分享,SWATHtoMRM: Development of High-Coverage Targeted Metabolomics Method Using SWATH Technology for Biomarker Discovery,是由中国科学院生物与化学交叉研究中心,Dr. Zheng-Jiang Zhu课题组发表在AC上的一篇技术型文…

verilog学习笔记- 3)SignalTap II 软件的使用

目录 SignalTap II简介: SignalTap II使用: SignalTap II简介: SignalTap II 全称 SignalTap II Logic Analyzer,是第二代系统级调试工具,可以捕获和显示实时信号,是 一款功能强大且极具实用性的 FPGA 片…

IO模型详解

什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll跟IO模型有什么关系?有几种经典IO模型呢?BIO、NIO、AIO到底有什么区别的? 什么是IO呢? IO,英文全称是Input/Output,翻译过来就是输入/输出。平时我们听得挺多,就是什么磁盘IO,网络I…

LCHub:2023年低代码开发平台市场规模将增长25%至100亿美元

随着企业希望变得更加敏捷、业务流程更加自动化,并创建新的Web和移动应用来满足消费者的需求,自动化开发工具正在成为关键因素,尤其在IT人才持续短缺的情况下。 根据调研机构最近进行的一项研究,面对持续的IT技能短缺,低代码和无代码平台等能够实现流程自动化并使员工能…

便捷生活,你我共享 | 美格智能Cat.1模组为共享经济赋能

近年来,共享经济在国内的兴起,主要基于两大优势,一是资源共享,为人们的生活带来便捷;二是绿色低碳,符合社会的发展潮流。作为近年来经济发展的新业态,共享经济的快速普及,以及带来的…

SpringMVC的请求参数传递

1,简单参数类型 单个参数 发送: http://localhost/commonParam?nameitcast接收: Controller public class UserController {RequestMapping("/commonParam")ResponseBodypublic String commonParam(String name){System.out.pr…

LeetCode:12. 整数转罗马数字

12. 整数转罗马数字1)题目2)思路3)代码4)结果1)题目 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 字符 数值 I 1 V …

带有数字化伪装外观,全新ID.7轿车即将全球首发

一切就绪,ID.7即将出场!今年的CES展会将于2023年1月5日至8日在拉斯维加斯举行。展览期间,大众汽车集团(美国)将展出基于模块化电驱动平台(MEB)打造的首款纯电三厢轿车。展车将采用智能伪装外观&…

Vue3+TS封装axios

1.实现最基础的封装 将其封装为一个类,而不是一个函数的原因是因为类可以创建多个实例,适用范围更广,封装性更强一些。 index.ts // index.ts import axios from axios import type { AxiosInstance, AxiosRequestConfig } from axiosclas…

爬虫学习-selenium模块

与爬虫的关联可以便携的获取网站中动态加载的数据便携实现模拟登录基于游览器自动化的一个模块(按键精灵脚本)使用流程环境安装pip install selenium下载一个游览器的驱动程序:谷歌浏览器驱动安装 - 琳达的博客 - 博客园 (cnblogs.com)from s…

测试开发 | TestNG 与 Junit 对比,测试框架如何选择?

TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下:1. Junit 更适合隔离性比较强的单元测试;2. TestNG 是比 Junit 涵盖功能更全面的测试框架,具…

世界第一虚拟乐队举办了一场 AR 音乐会 #Gorillaz

“世界第一虚拟乐队” 是谁?23 年前,一支名为 Gorillaz 的乐队在英国埃塞克斯横空出世。和当时主流乐队形式不同的是,这支乐队以虚拟形象出现,凭借着过硬的音乐制作实力和别具一格的虚拟乐队形象,不久后就席卷了全球&a…

如何打造敏捷项目管理团队?【金曼说4】

曾经乔布斯说过他此生最骄傲的事不是创造了苹果,而且团队。由此也说明团队的重要性。一支优秀的团队能打造出无数优秀的产品和项目。无论是在商场还是战场上,快速反应和适应能力都至关重要,在技术和干扰性力量导致变革速度加快的时代更是如此…

HTML 常见面试题

一、HTML5(超文本标记语言,第五次重大修改)二、HTML5新特性①:新的语义标签 header footer nav aside article section②:新的表单控件 calendar date time email url search③:音频、视频( aud…