docker一文全通

一、docker基本原理

要想理解docker运行原理,需要弄清楚以下几个问题:

1、docker如何处理复杂的应用依赖?如何处理依赖之间的兼容关系?

  • docker将应用、运行所需的系统函数库、应用相关依赖、配置文件,全部打包到一起,形成可移植的镜像。
  • 并且docker使用了沙箱机制,使得应用之间相互隔离。

2、docker如何处理开发、测试、生产各个环境的差异?

  • docker镜像包含了完整的运行环境,其中就包括系统函数库,也就是docker镜像仅仅依赖系统的linux内核,而无论是Centos还是Ubuntu它们的核心都是linux内核,所以docker镜像可以任意linux操作系统上运行。

3、总结

docker通过将应用和所需的最小运行的环境一起打包为镜像,利用沙箱机制隔离各个应用,从而实现了应用依赖兼容和在任意linux操作系统上的运行。

二、docker的基本概念

1、镜像(image)

  • docker将应用和其所需要的依赖、函数库、环境、配置等文件打包到一起,称为镜像。

2、容器(container)

  • docker镜像在运行的时创建一个隔离环境环境,对外不可见,称为容器。

3、DockerHub

  • dockerhub是一个docker镜像的托管平台,这种平台又称为docker register
  • 国内也有很多这种公开的托管服务平台,比如网易云镜像服务、阿里云镜像服务。

三、docker安装及验证

docker安装简单流程

四、docker应用镜像安装运行–流程

docker运行流程图

  • 上图所示,docker在安装完成后,启动docker,会启动一个docker server的进程,这个进程其实是docker的守护进程,它用来接收并处理docker命令,管理镜像和容器。
  • 我们在控制台Client敲出docker命令,然后Docker Server也就是docker守护进程会接收命令,并且处理命令。
  • **运行流程:**上图所示,Client发出指令,docker server接收命令并运行,根据指令去docker公共镜像托管仓库去获取并下载MySQL镜像,然后启动运行MySQL镜像,生成Container容器,MySQL运行成功。因为每个容器是相互隔离的,所以,多运行几次,便会生成多个互相独立的MySQL容器。

五、docker应用镜像安装运行–命令解读

MySQL一键安装及命令解读

六、docker常用指令

docker常用指令

七、docker常用指令演示(以nginx安装为例)

在这里插入图片描述

  • ①搜索Nginx镜像
    Dockerhub镜像仓库
    搜索镜像,了解镜像详情及配置。
    在这里插入图片描述
  • ②拉取Nginx镜像
 // 拉取nginx镜像,这里也可以在nginx:[版本]指定版本
 //格式: docker pull 镜像名
docker pull nginx

在这里插入图片描述

  • ③查看镜像
 // 查看当前系统已经pull拉取的所有镜像
docker images

在这里插入图片描述
④保存镜像为tar文件

//查看命令help帮助
docker save --help
// -o 文件名 镜像名,是将当前镜像保存为一个本地文件,通常保存为tar压缩文件
//格式:docker save -o 文件名 镜像名[:版本]
docker save -o nginx.tar nginx

在这里插入图片描述

  • ⑤删除本地镜像
//删除本地镜像
//格式:docker rmi 镜像名[:版本]
docker rmi nginx:latest

在这里插入图片描述

  • ⑥加载本地镜像tar包
//了解docker load 命令help帮助
docker load --help
//-i 镜像tar包,-i后面是镜像tar包;-q 是指不要加载输出
docker load -i nginx.tar -q

在这里插入图片描述

  • ⑦创建容器并运行镜像
//运行镜像
//-d指后台运行;--name 指定当前容器名称;
//-p 指定端口映射,前面是宿主机端口(可随意),后面是应用默认端口(固定的)
//格式:docker run -d --name 镜像名 -p 宿主机端口:应用端口 镜像名
docker run -d --name nginx -p 8081:80 nginx

在这里插入图片描述
上面显示容器端口占用报错和容器名重复报错,只需要把当前容器删除从新命名即可,指令是【docker rm -f 镜像名】。

  • ⑧查看容器
//查看正常运行容器
docker ps
docker ps -a //查看所有容器
//可以格式化查看的内容
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" 

在这里插入图片描述
在这里插入图片描述

  • ⑨删除容器
//删除容器
//格式:docker rm 容器名
//-f 可以强制删除正在运行的容器
docker  rm dockerNginx   
docker rm -f dockerNginx   

在这里插入图片描述

  • ⑩停止容器
//格式:docker stop 容器名,停止容器
docker stop dockerNginx

在这里插入图片描述

  • ⑪启动容器
//格式:docker start 容器名,启动容器
docker start dockerNginx

在这里插入图片描述
nginx运行成功直接访问该端口:
在这里插入图片描述

  • ⑫查看容器详情
//格式:docker inspect 容器名
docker inspect dockerNginx

在这里插入图片描述

  • ⑬查看容器运行日志
//格式:docker logs [-f] 容器名,-f表示follow一直跟踪日志,ctrl + c结束
docker logs 

在这里插入图片描述* ⑭进入容器内部

//格式:docker exec -it 镜像名 bash,进入容器内部,
//-it即开启一个终端用以交互,bash是命令行终端模式
docker exec -it nginx bash

在这里插入图片描述

八、docker命令别名

# 修改/root/.bashrc文件,添加相关docker命令简写:
vi /root/.bashrc
		内容如下:
		# .bashrc
		
		# User specific aliases and functions
		
		alias rm='rm -i'
		alias cp='cp -i'
		alias mv='mv -i'
		alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
		alias dis='docker images'
		
		# Source global definitions
		if [ -f /etc/bashrc ]; then
		        . /etc/bashrc
		fi

保存退出,命令是 :wq!回车
使得命令生效:

//执行下面命令,使得命令简写生效
source /root/.bashrc

九、数据卷

Docker数据卷及其使用(以Nginx静态文件部署为例)

十、制作镜像(自定义)

Docker 自定义镜像

十一、Docker容器网络互通

java应用访问其他中间件容器,如MySQL、Redis等。容器的 IP 是虚拟的,所以不能在项目中固定写。如何解决这个问题呢?可以去查看下面这个文章。

Docker容器之前网络通信

十二、dockerCompose

引用他人:
https://blog.csdn.net/m0_37899908/article/details/131268835;

当然,我很乐意帮助您入门DockerDocker是一个开源的容器化平台,它可以帮助您打包、发布和运行应用程序。以下是一些关键概念和步骤来帮助您入门Docker: 1. 安装Docker:首先,您需要在您的机器上安装DockerDocker提供了适用于不同操作系统(如Windows、Mac和Linux)的安装程序。您可以在Docker官方网站上找到相应的安装指南。 2. Docker镜像:Docker镜像是一个轻量级的独立软件包,其中包含了运行应用程序所需的所有内容(包括代码、运行时环境、库和依赖项等)。您可以通过构建自己的镜像或者从Docker Hub等镜像仓库中获取现有的镜像。 3. Docker容器Docker容器是从Docker镜像创建的运行实例。容器可以独立运行,并且具有自己的文件系统、网络和进程空间。您可以使用Docker命令来创建、启动、停止和删除容器。 4. Dockerfile:Dockerfile是一个文本文件,其中包含了一系列的指令,用于构建Docker镜像。通过编写Dockerfile,您可以定义应用程序的所需环境、依赖项和配置等信息,并将其打包到镜像中。 5. Docker Compose:Docker Compose是一个用于定义和运行多个Docker容器的工具。通过编写一个YAML格式的配置文件,您可以定义多个服务(每个服务对应一个容器),并指定它们之间的关联和依赖关系。 以上是Docker的一些基本概念和步骤,希望对您入门Docker有所帮助。如果您有更具体的问题或者需要进一步了解,请随时提问!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值