Docker环境安装

Docker环境安装

      • Docker简介
        • Docker工作原理
        • Docker的应用场景
        • Docker 的优点
      • CentOS Docker 安装与配置
        • Docker 安装
        • Docker 配置
      • Docker容器概念
        • Docker容器操作
          • 拉取镜像
          • 删除镜像
          • 容器相关命令
          • 创建并启动容器
          • 停止和恢复容器
          • 删除容器

Docker简介

  • Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源;
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化;
  • 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低;
  • Docker 从 17.03 版本之后分为 CE(Community Edition-社区版)和 EE(Enterprise Edition-企业版)

Docker工作原理

在这里插入图片描述

docker引擎是一个C/S结构的应用

Server是一个常驻进程

REST API实现了client和server间的交互协议

CLI实现容器和镜像的管理,用户通过命令行对其操作

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,大大减少编写代码和在生产环境中运行代码之间的延迟。

CentOS Docker 安装与配置

Docker 安装

使用官方安装脚本自动安装,借助阿里云镜像进行加速

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或使用国内 daocloud 一键安装命令

curl -sSL https://get.daocloud.io/docker | sh

安装成功后,可以通过docker --version查看docker版本

Docker 配置

配置docker国内源

cd /etc/docker 进入该目录下,使用ls 命令查看该目录下是否有daemon.json文件,如果没有,使用vim daemon.json编辑文件,插入内容

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",  
    "https://reg-mirror.qiniu.com"
 ]
}

保存成功后,执行systemctl daemon-reload进行重载,然后执行systemctl start docker重新启动docker

Docker服务

systemctl status docker   #查看docker状态
systemctl enable docker   #设置默认开机启动
systemctl start docker    #启动docker
systemctl restart docker  #重新启动docker
systemctl stop docker     #停止docker

Docker容器概念

镜像(Images):容器的模板,包括容器运行时所需要的数据

容器(Container):运行的进程,依赖镜像运行,镜像的具体化

容器类似于WMware虚拟机,WMware虚拟机可以根据CentOS镜像创建多个CentOS系统,一个镜像可以创造出多个容器。而容器内可以创建对应的环境,如容器1:Tomcat+Java;容器2:PHP+Mysql。容器之间互不影响

Docker容器操作

拉取镜像

想要运行容器必须提前下载好对应的镜像,比如想运行一个mariadb10.7版本的容器,需要先在本地有这个镜像才能运行。

镜像需要在镜像仓库上去下载,就像代码是托管在代码仓库上的,默认情况下需要从公有仓库,也就是dockerhub上下载镜像,dockerhub上有海量的镜像提供选择,构建环境的时候可以直接下载其中的镜像来使用

从镜像仓库拉取镜像:docker pull 镜像:Tag,Tag相当于镜像工具的版本,可省略,省略则默认为拉取最新版本

docker pull mariadb:10.7
docker pull mysql:8.0
docker pull nginx

/var/lib/docker/目录下,有个iamge目录,该目录下存放的,则是从镜像仓库上下载下来的镜像

可以通过docker imagesdocker image ls命令查看本地有哪些镜像

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    6efc10a0510f   3 days ago    142MB
mariadb      10.7      4a632f970181   4 weeks ago   401MB
mysql        8.0       412b8cc72e4a   8 days ago    531MB
删除镜像

删除镜像,需提前删除对应的容器:docker rmi 镜像id或者镜像名

docker rmi mariadb:10.7
docker rmi 6efc10a0510f

如果拉取镜像的时候指定了版本,指定镜像名删除镜像的时候,也需要带上版本号

容器相关命令
docker run <options> 镜像:tag commands   # 新建一个容器并启动

docker stop 容器ID或名称                  # 停止运行中的容器
docker start 容器ID或名称                 # 启动停止的容器
docker restart 容器ID或名称               # 重启容器

docker logs -f 容器ID/名称				# 查看容器日志
docekr inspect 容器ID/名称				# 查看容器详细信息
创建并启动容器

docker run <options> 镜像:tag commands

options表示选项,用于运行容器时一些额外的配置,commands表示运行在容器内部的命令,比如容器内部要运行一个python脚本,commands可以替换为 python commands。

常用的选项有:

-d 指定容器运行后台 
-i 用于控制台交互 
-t 支持终端登录,通常和-i参数一起使用 
-p 映射容器端口,用法:-p 宿主机端口:容器端口 
-v 挂载容器存储卷,用法:-v 宿主机路径:容器路径
-e 设置容器的环境变量用于容器内的应用程序进行相关配置,用法 -e 环境变量名=变量值
--name=“container_name” 指定容器的名称
--rm 退出容器时删除容器 与--restart冲突
--restart=“always” 容器停止后,docker再次启动,自动重启容器 与 --rm冲突

例如:

docker run -it -p 8888:3306 -e MARIADB_ROOT_PASSEORD=test mariadb:10.7

mariadb服务默认监听3306端口,但是容器内部的网络和宿主机不在一个网段,所以我们把该端口映射到了宿主机的3306端口,现在我们通过访问宿主机的8888端口就可以访问mariadb了

-e MARIADB_ROOT_PASSEORD=test这行指配置mariadb的root账号的密码为test

此时我们的进程是运行在前台的,如果关闭窗口就可能造成容器进程退出,所以如果想让容器一直不退出,可以在运行的时候加上-d参数,让容器进程作为守护进程。

docker run -it -d -p 9999:3306 -e MYSQL_ROOT_PASSEORD=123456 --name="db_mysql" 
mysql:8.0

如果要删除容器,但是又要备份容器的数据,可以通过-v参数指定挂载容器存储卷,设置容器目录/var/lib/mysql映射到本地目录/data/mariadb/data

mkdir -p /data/mariadb/data

docker run -it -d -p 8889:3306 -e MARIADB_ROOT_PASSEORD=123456  --name="db_mariadb"  -v /data/mariadb/data:/var/lib/mysql mariadb:10.7

还可以通过docker cp命令将docker容器内的配置文件信息复制到宿主机上,将nginx_test容器内Nginx的/etc/nginx目录下的配置文件信息,复制到宿主机的/data/nginx/config目录下

mkdir -p /data/nginx/config

docker run -it -d -p 8080:80 --name="nginx_test" nginx

docker cp nginx_test:/etc/nginx  /data/nginx/config

此时可以通过 docker ps 命令查看运行中的容器

如果没有指定容器名称,会随机分配,通常情况下,创建容器的时候都指定容器的名称,这样停止容器的时候,方便操作

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
75812ef6b412   mysql:8.0   "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes    33060/tcp, 0.0.0.0:9999->3306/tcp, :::9999->3306/tcp   db_mysql
a21665817d61   mariadb     "docker-entrypoint.s…"   14 minutes ago   Up 14 minutes   0.0.0.0:8888->3306/tcp, :::8888->3306/tcp              busy_dirac

参数内容:CONTAINER ID指容器id;IMAGE指使用的镜像名称;COMMAND指启动容器时运行的命令;STATUS指容器状态;PORTS指容器端口映射信息;NAMES指容器名称;

停止和恢复容器

我们可以通过startstop命令 来启动或停止一个容器,参数为容器ID或者容器名

docker stop 75812ef6b412    #停止一个容器 75812ef6b412
docker stop db_mysql		#停止mysql服务的容器 
docker start 75812ef6b412   #恢复停止中的容器 75812ef6b412

若容器在运行过程中发生异常而退出,docker ps命令是看不到终止的进程的,可以通过-a参数列出所有的进程,包括已经停止的(状态为Exited)

CONTAINER ID   IMAGE      	 COMMAND                   CREATED          STATUS                      PORTS                                       NAMES
75812ef6b412   mysql:8.0   	 "docker-entrypoint.s…"   13 minutes ago   Exited (0) 2 seconds ago                                                db_mysql
a21665817d61   mariadb:10.7	 "docker-entrypoint.s…"   24 minutes ago   Up 24 minutes               0.0.0.0:8888->3306/tcp, :::8888->3306/tcp   busy_dirac
删除容器

删除容器使用 docker rm 命令,可以通过容器名或者容器id进行删除

docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。

docker rm -f db_mysql
docker rm -f 75812ef6b412    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不卷不成魔,新时代的IT人员更需要卷,不卷不成活

简介 从2022年开始至今&#xff0c;IT界发生了很多巨大的变革带来了许多巨大的变化。 这些变革、这些变化导致了有人欢喜有人悲、有人迷茫有人焦虑。1年半来&#xff0c;迷茫、焦虑、精神内耗了也都差不多了&#xff0c;大家都已经认识到了现实&#xff0c;作为凡人的我们所能…

【防止恶意用户注册】-- 手机在网状态 API 的防欺诈应用解析

简介 手机在网状态 API 支持传入手机号码&#xff0c;查询手机号在网状态&#xff0c;返回在网、在网不可用、不在网&#xff08;销号/未启用/停机&#xff09;等多种状态&#xff0c;查询手机号在网状态之后&#xff0c;可以根据具体的业务需求来进行不同的处理。 本文主要介…

由libunifex来看Executor的任务构建

前言 之前的一篇文章讲述了future的优缺点&#xff0c;以及future的组合性&#xff0c;其中也讲述了构建任务DAG一些问题&#xff0c;同时给出了比较好的方案则是Executor。 Executor还未进入标准&#xff08;C23&#xff09;&#xff0c;Executor拥有惰性构建及良好的抽象模型…

c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键

c/c&#xff1a;windows平台下依赖的动态库&#xff0c;c底层是汇编语言&#xff0c;程序断点调试&#xff0c;反汇编&#xff0c;vs快捷键 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知…

20230412-使用STM32实现内部flash模拟U盘

最近用STM32F103CBT6搞了个U盘功能 ​ 工程师干了几年后&#xff0c;基本会有小外包的生活&#xff0c;算是赚外快吧&#xff0c;搞小钱改善伙食&#xff0c;嘻嘻。。。。 ​ 最近有个客户找到我&#xff0c;说是否通过ST的单片机搞个U盘功能&#xff0c;有些文件通过U盘拖拽…

005:Mapbox GL添加全屏显示功能

第005个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中添加全屏显示功能 。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共60行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://…

1~3年的测试工程师薪资陷入了瓶颈期,如何突破自己实现涨薪?

对于技术人员而言&#xff0c;职业规划一般分为两个方向&#xff1a;做技术、做管理。进入软件测试行业的新人都会从最基础的执行开始&#xff0c;然后是基本的功能测试。 随后大家会根据个人职业发展来进一步细化&#xff0c;有的走管理路线&#xff0c;成为主管、经理、项目…

Python 小型项目大全 76~81

七十六、井字棋 原文&#xff1a;http://inventwithpython.com/bigbookpython/project76.html 井字棋是一种在3 3网格上玩的经典纸笔游戏。玩家轮流放置 X 或 O 标记&#xff0c;试图连续获得三个。大多数井字棋都以平局告终&#xff0c;但如果你的对手不小心&#xff0c;你也…

AI 时代,提示词便是生产力

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

瑞芯微RK3568核心板强在何处?

RK3568核心板产品简介 RK3568核心板是武汉万象奥科基于瑞芯微Rockchip的RK3568设计的一款高性能核心板。该处理器集成了最新的高性能CPU、GPU&#xff0c;并拥有丰富的接口&#xff0c;非常适用于工业自动化控制、人机界面、中小型医疗分析器、电力等多种行业应用。 HD-RK3568-…

项目8:用户注册和登录的前后端联调

项目8&#xff1a;用户注册和登录的前后端联调 1.前端项目使用 2.前端项目注册模块 3.后端完成项目注册 4.前端项目登录模块 5.后端完成项目登录 6.用户认证&#xff08;校验用户是否登录&#xff09; 项目8&#xff1a;用户注册和登录的前后端联调 1.前端项目使用 直接…

【iOS】iOS语音通话回音消除(AEC)技术实现

一、前言 在语音通话、互动直播、语音转文字类应用或者游戏中&#xff0c;需要采集用户的麦克风音频数据&#xff0c;然后将音频数据发送给其它终端或者语音识别服务。如果直接使用采集的麦克风数据&#xff0c;就会存在回音问题。所谓回音就是在语音通话过程中&#xff0c;如…

九龙证券|这一刻,资本市场进入全新时代!

2023年4月10日&#xff0c;第一批10家主板注册制企业上市鸣锣敲钟&#xff0c;奏响了触及本钱商场灵魂深处革新的序曲。 动能切换中的我国对于高效资源配置的渴望&#xff0c;与革新进行时的本钱商场对于全面注册制的探究&#xff0c;一起凝集成一股连绵有力之暖流&#xff0c;…

2023年最强手机远程控制横测:ToDesk、向日葵、Airdroid三款APP免Root版本

前言 随着远程办公和远程协作的日益普及&#xff0c;跨设备、系统互通的远程控制软件已经成为职场人士不可或缺的工具之一。在国内&#xff0c;向日葵和ToDesk是最著名的远程控制软件&#xff1b;而在国外&#xff0c;则有微软远程桌面、AirDroid、TeamViewer、AnyDesk、Parse…

【华为机试真题详解JAVA实现】—Sudoku

目录 一、题目描述 二、解题代码 一、题目描述 问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个3X3粗线宫内的数字均含1-9,并且不重复。 例如: 输入 输出

Faster-RCNN代码解读2:快速上手使用

Faster-RCNN代码解读2&#xff1a;快速上手使用 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&#xff08;…

汽车电子相关术语介绍

一、相关术语介绍 1、汽车OTA 全称“Over-The-Air technology ”&#xff0c;即空中下载技术&#xff0c;通过移动通信的接口实现对软件进行远程管理&#xff0c;传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。OTA技术最早2000年出现在日本&#xff0c;目前通过OTA方式…

FusionCharts Suite XT v3.20.0 Crack

FusionCharts Suite XT v3.20.0 改进了仪表的径向条形图和调整大小功能。2023 年 4 月 11 日 - 9:37新版本特征 添加了一个新方法“_changeXAxisCoordinates”&#xff0c;它允许用户将 x 轴更改为在图例或数据交互时自动居中对齐。更新了 Angular 集成以支持 Angular 版本 14 …

【微信小程序-原生开发】添加自定义图标(以使用阿里图标库为例)

方式一 &#xff1a; 下载svg导入 优点&#xff1a;操作方便&#xff0c;支持多彩图标缺点&#xff1a;会增加源代码大小 下载 svg 格式的图标图片&#xff0c;放入源码中使用 小程序项目中的路径为 assets\icon\美食.svg 使用时-代码范例 <image class"imgIcon"…

前端开发工具-Visual Studio Code-插件下载-迁移到新电脑

背景 前端使用的开发工具一般是Visual Studio Code&#xff0c;很多辅助功能&#xff0c;比如字体高亮、单词拼写检查、预览图片等需要安装插件。但是插件在原来的电脑&#xff0c;不想下载或者自己是新人&#xff0c;想迁移同事的插件&#xff0c;或者新电脑没有外网。 以下…