Linux CentOS7 安装Docker

CentOS7安装Docker:

Docker简介

Docker是一个开源的容器化平台,可帮助开发者轻松地创建、部署和运行应用程序。Docker使开发人员能够在一个独立的容器中打包应用程序及其依赖项,这样他们就可以轻松地将应用程序移植到任何其他环境中。Docker中每个容器都可以看成是一个独立的Linux极简操作系统,容器之间相互独立,互不干扰。

使用Docker的主要优势

1、便于部署:由于Docker容器可以在任何支持Docker的平台上运行,因此应用程序可以轻松地在不同的环境中部署和运行。

2、隔离性:Docker容器提供了隔离的运行环境,使得应用程序可以在独立的环境中运行,从而避免了依赖冲突和其他问题。

3、可移植性:Docker容器可以轻松地从一个平台移植到另一个平台,从而使应用程序在不同的平台上运行变得更加容易。

4、安全性:Docker容器提供了安全性隔离,使得应用程序和它的依赖项可以在受保护的环境中运行,从而减少了潜在的安全风险。
 

一、安装前必读

在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。

注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo

例如:sudo yum -y update

1.查看当前的内核版本

命令:uname -r

2.使用 root 权限更新 yum 包(生产环境中此步操作需慎重,看自己情况,学习的话随便搞)

执行:yum -y update 命令后 得重启下云服务器,很有可能启动不起来。

报错iptables提示unable to initialize table ‘filter’    解决办法:可以尝试重启服务器,正常启动了

这两个命令可以根据自己的情况来执行(不是必须执行的,如果出现不兼容的情况就必须update)

命令:yum -y update            #升级所有包同时也升级软件和系统内核

命令:yum -y upgrade          #只升级所有包,不升级软件和系统内核

3.卸载旧版本(如果之前安装过的话)

命令:yum remove docker docker-common docker-selinux docker-engine

二、安装Docker的详细步骤

1.安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖

命令:yum install -y yum-utils device-mapper-persistent-data lvm2

 2.设置 yum 源

设置一个yum源,下面两个都可用,自己选择一个即可

#中央仓库

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

#阿里仓库

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

3.查看docker版本 

命令:yum list docker-ce --showduplicates | sort -r

 因为我是CentOS系统,所以选择了后面带centos的版本

4、选择一个Docker版本安装yum install docker-ce-版本号

命令:yum -y install docker-ce-18.03.1.ce

安装成功后启动Docker并设置开机自动启动

命令:systemctl start docker

命令:systemctl enable docker

Docker容器与容器之间互联

默认情况下容器与容器之间不能之间访问,需要通过–link进行设置连接。这样的操作比较麻烦,更推荐的方式是自定义网络,容器都使用该自定义网络,就可以实现通过容器名来互相访问了。

容器网络设置请参考:Docker 网络_hyper-v docker 桥接-CSDN博客

1、先创建两个容器

# mysql容器
sudo docker run --name test_mysql -itd -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.48 /bin/bash

# python容器
sudo docker run --name test_python -itd -p 5000:5000 python:3.6.5 /bin/bash

2、创建web服务器,通过docker link命令链接两个容器

# --link表示连接容器
# name:alias(链接的容器名:别名,name和alias可以相同),也可仅仅跟要链接的容器名

# 简单创建链接
sudo docker run -it --link test_mysql:mysql python:3.6.5 /bin/bash

# 完整创建链接
sudo docker run --name test_python -itd -p 5000:5000 --link test_mysql python:3.6.5

 3、通过docker exec -it命令查看容器是否连通。命令形式:docker exec -it 容器名 ping 容器名
示例如下:

sudo docker exec -it test_python ping test_mysql

安装Docker Compose

什么是Docker Compose

Compose是Docker官方推出 的一个工具软件,可以管理多个Docker容器组成的一个应用

Compose是用来定义和运行一个或多个容器应用的工具。使用compaose可以简化容器镜像的建立及容器的运行。
Compose使用python语言开发,非常适合在单机环境里部署一个或多个容器,并自动把多个容器互相关联起来。

在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。

能干嘛:

docker建议我们每一个容器只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每一个服务单独地分割,但是这样,我们面临了一个问题

如果我们需要同事部署好多个服务,难道每个服务单独写Docckerfile,然后再构建镜像,构建容器,这样累死了,所以docker官方给我们提供了docker-compose多服务部署工具

例如:要实现一个Web微服务项目,除了Web服务容器本身,往往还需要加上后端的数据库mysql服务器,redis服务器,注册中心eureka,甚至还包括负载均衡Nginx容器等。。。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的音容容器为一个项目(project)

可以很容易的用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用需要的所有依赖,完成构建。docker-compose解决了容器与容器之间如何挂你编排的问题。

Docker Compose的核心概念

1、服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

2、项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-                 compose.yml 文件中定义。

Docker与Docker-Compose对比

DockerDocker-Compose
概念是一个供开发和运维人员开发、测试、部署和运行应用程序的容器平台(docker是一个容器平台)是一个用于创建和管理多容器应用程序的工具
创建容器数量每次1个多个
是否容易编辑每个容器需要单独去修改直接修改一个yaml文件即可
是否是服务一个由多个容器组成的服务,依赖于docker之上

下载并安装 Compose 独立版

这个命令地址是Docker官方文档:安装 Compose 独立版 |Docker 文档 中拿到的安装 Compose 独立版 |Docker 文档

命令:curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

给目录赋权限

chmod +x /usr/local/bin/docker-compose

查看compose的版本号

docker-compose --version

卸载compose

rm /usr/local/bin/docker-compose

用法例子 :参考文档 

创建yaml文件

#用vim命令创建一个yaml文件

vim test_system.yaml

编写yaml文件内容
# 搭建测试系统环境

# yaml文件版本号
version: '3.7'

# yaml文件包含的容器
services:
  
  # python容器
  test-python:
    tty: true
    image: new-python:3.6.5
    container_name: test-python
    # 设置端口
    ports:
      - 5000:5000
    # 设置开机启动
    restart: always
    volumes:
      - /home/nikolas/webapp/my_python:/home/my_python
    logging:
      driver: "json-file"
      options:
        max-size: "5g"
  
  # java容器
  test-java:
    tty: true
    image: new-jdk:1.0.0
    container_name: test-java
    # 设置端口
    ports:
      - 8088:8088
    # 设置开机启动
    restart: always
    volumes:
      - /home/nikolas/webapp/my_java:/home/my_java
    logging:
      driver: "json-file"
      options:
        max-size: "5g"

  # mysql容器
  test-mysql:
    tty: true
    image: mysql:5.7.34
    container_name: test-mysql
    # 设置端口
    ports:
      - 3306:3306
    # 设置开机启动
    restart: always
    volumes:
      - /home/nikolas/db_data/mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456

  # redis容器
  test-redis:
    tty: true
    image: redis:6.2
    container_name: test-redis
    # 设置端口
    ports:
      - 6379:6379
    # 设置开机启动
    restart: always
    command: --requirepass 123456

  # nginx容器
  test-nginx:
    tty: true
    image: nginx:1.20.0
    container_name: test-nginx
    # 设置端口
    ports:
      - 81:81
      - 446:446
    # 设置开机启动
    restart: always
    volumes:
      - /var/log/nginx:/var/log/nginx

# yaml文件所用的网络
networks:
  default:
    external:
      name: my_net
使用docker-compose命令部署测试系统

一键创建yaml文件包含的所有容器

# docker-compose -f yaml文件所在路径
sudo docker-compose -f /home/nikolas/yaml/test_system.yaml up -d

一键删除yaml文件包含的所有容器

 # docker-compose -f yaml文件所在路径
sudo docker-compose -f /home/nikolas/yaml/test_system.yaml down

Docker可视化管理工具——Docker UI

简介

Docker UI 是一款最简单的,单机环境中的管理 Docker 的图形工具,适合初学者和小型 Docker 管理。

优点:
1、支持容器管理
2、稳定性高
3、可动态显示容器间的关系图

缺点:
1、管理页面无账户体系,缺乏安全性
2、对于容器的管理缺乏权限控制,任何人都可以对容器进行一些敏感操作
3、不支持多主机和 Swarm 集群

下载原生Docker UI镜像     

命令:docker pull uifd/ui-for-docker

启动Docker UI 容器   

docker ui端口地址默认是:9000

name后面的docker-web是容器的名称,我们可以随便改查自己喜欢的名称

命令:docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker

#如果其他容器已经占用了9000端口,就改成 8089:9000试试   如下:

命令:docker run -it -d --name docker-web -p 8089:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker

启动成功后,我们就可以通过  IP:端口 来访问Docker UI 界面了

我的虚拟机的静态IP地址是192.168.132.10  Docker UI端口是默认的:9000。

所以地址是192.168.132.10:9000

如果你的端口设置的是8089:你的Docker UI地址是 192.168.132.10:8089

STATUS:UP代表容器正在运行,Exited代表容器关闭

Docker可视化管理工具——Portainer

简介

Portainer 是一个轻量级的管理 UI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。它由可在任何 Docker 引擎上运行的单个容器组成,旨在使部署更简单 。
提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。

优点
既可以管理单机环境,也可以管理 Swarm 集群
提供了用户的登录界面
可以为用户分配某个容器

缺点
暂时没发现

搜索portainer镜像

命令:docker search portainer

拉取portainer镜像

命令:docker pull portainer/portainer

启动portainer容器

Portainer使用默认的9000端口进行访问,如果此端口被其他应用程序占用,Portainer将无法启动。

因为我前面安装了Docker UI 使用的端口就是9000,所以,我这里就将9000端口改为8080 这样就可以通过192.168.132.10:8080来访问portainer的UI界面了

myprtainer:我是自己定义的名称,表示容器名称

命令:docker run -d -p 8080:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name myprtainer portainer/portainer 

 这就是Portainer的管理界面:进入的时候需要设置用户名和密码

如果Portainer使用的端口已被其他应用程序占用,可以通过更改Portainer的端口号来解决冲突。

以下是通过Docker命令更改Portainer端口的示例:

命令:docker run -d -p 8080:9000 --name=myportainer portainer/portainer

name=myportainer:表示我要将name为myportainer的容器的端口号改为8080

启用Portainer的远程访问

默认情况下,Portainer只允许在本地主机上访问。如果您想从其他计算机上访问Portainer,需要启用Portainer的远程访问。可以通过设置环境变量来实现。以下是启用远程访问的示例:

docker run -d -p 8080:9000 -e "AGENT_CLUSTER_ADDR=agent:9001" --name=myportainer --restart=always portainer/portainer

在上述示例中,通过设置AGENT_CLUSTER_ADDR环境变量,将Portainer的访问限制解除,允许从其他计算机上访问。

常用的Docker命令:

命令:docker version    显示docker版本信息

命令:docker info          显示docker系统系统信息,镜像以及容器数量等信息

命令:docker images     查看本地所有镜像

启动容器:

命令:docker start 903c48353e37   启动容器ID为:903c48353e37这个容器

重启容器

 命令:docker restart 903c48353e37   重启容器ID为:903c48353e37这个容器

停止容器

命令:docker stop 903c48353e37   停止容器ID为:903c48353e37这个容器

删除容器:删除容器前需要先停止容器

命令:docker rm -f 903c48353e37   删除容器ID为:903c48353e37这个容器

杀掉容器

命令:docker kill 903c48353e37   杀掉容器ID为:903c48353e37这个容器

 其他常用命令

命令:docker container ls  可以查看当前正在运行的容器

命令:docker container ls -a   可以列举出所有的容器,包括正在运行的和没有运行的容器 

命令:docker ps  查看所有正在运行的容器

命令:docker ps -a  查看所有的容器,包括已经停止的容器

命令:docker image ls       用于列出所有镜像

命令:docker rmi -f abc    强制删除 镜像id为 abc 的镜像

命令:docker rmi --no-prune  abc  不移除镜像id为 abc 的镜像的过程镜像,默认移除

命令:docker ps -a   显示所有容器,包括未运行的

命令:docker ps -l     显示最后一个运行的容器(无论该容器目前处于什么状态)

命令:docker ps -n 5  数量5:表示显示最后 5 个运行容器(无论该容器目前处于什么状态)

命令:docker ps -s  显示总的文件大小

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

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

相关文章

【Python】tensorflow学习的个人纪录(1)

def learn(self, s, r, s_):s, s_ s[np.newaxis, :], s_[np.newaxis, :]v_ self.sess.run(self.v, {self.s: s_})td_error, _ self.sess.run([self.td_error, self.train_op],{self.s: s, self.v_: v_, self.r: r})return td_error代码步入: v_ self.ses…

java后端自学错误总结

java后端自学错误总结 MessageSource国际化接口总结 MessageSource国际化接口 今天第一次使用MessageSource接口,比较意外遇到了一些坑 messageSource是spring中的转换消息接口,提供了国际化信息的能力。MessageSource用于解析 消息,并支持消息的参数化…

Ubuntu22.04无需命令行将软件更新源切换到国内

1、右上角打开设置 2、在设置中拉到最下面点击About,然后点击Software Updates 3、点击下拉框 4、选择other 5、找到China,选择一个网址,然后点击Choose Server 6、输入密码并回车 7、点击Close 8、点击Reload 9、等待完成即可 10、等结束之后…

frida - 3.hook类

Hook Java类 获取和修改类的字段、 hook 内部类、枚举所有加载的类。 hook内部类 要hook这个类、需要在类和内部类名之间加上$字符 采用这个分割 var innerClass = Java.use("com.luoge.com.Money.Money$innerClass")hook内部类 可以使用InnerClass.$init 来进行查…

二. BEV感知算法基础模块讲解

目录 前言0. 简述1. 基础模块补充讲解1.1 2D图像处理1.2 3D特征之点处理方案1.3 3D特征之体素处理方案 2. 从2D到3D转换模块2.1 LSS(Lift,Splat and Shoot)2.2 Pseudo LiDAR 3. 从3D到2D转换模块3.1 Explicit Mapping3.2 Implicit Mapping 4. BEV感知中的Transformer4.1 空间注…

Linux中的文件IO

文章目录 C语言文件操作系统文件I/O接口介绍 open函数返回值文件描述符fd0 & 1 & 2文件描述符的分配规则 重定向使用 dup2 系统调用 FILE理解文件系统理解硬链接软链接acm 动态库和静态库静态库与动态库生成静态库生成动态库: C语言文件操作 先来段代码回顾…

WebGL笔记:图形缩放的原理和实现

缩放 1 )原理 缩放可以理解为对向量长度的改变,或者对向量坐标分量的同步缩放 如下图,比如让向量OA 收缩到点B的位置,也就是从OA变成OB,缩放了一半 2 )公式 已知 点A的位置是(ax,ay,az)点A基于原点內缩了…

2023软件测试大赛总结

2023软件测试大赛总结 文章目录 2023软件测试大赛总结软件下载方式比赛方式个人总结断言使用java基础 预选赛省赛国赛 软件下载方式 进入官网下载插件(直接下载一个完整的Eclipse就可以,这样比较方便) 需要保证jdk版本和要求的一致,不然可能…

DNA模糊匹配(动态规划)

我做动态规划还是少的 只会做那些显而易见的动态规划题&#xff08;这题是看了给出来的解题思路做的&#xff09; 以后可能就会做与这类似的了 代码如下&#xff1a; #include<stdio.h> #include<string.h> int get_min(int a, int b, int c); int min_l[301][…

STM32串口接收不定长数据(接收中断+超时判断)

玩转 STM32 单片机&#xff0c;肯定离不开串口。串口使用一个称为串行通信协议的协议来管理数据传输&#xff0c;该协议在数据传输期间控制数据流&#xff0c;包括数据位数、波特率、校验位和停止位等。由于串口简单易用&#xff0c;在各种产品交互中都有广泛应用。 但在使用串…

4_企业架构双点服务器HA

企业架构双点服务器HA 学习目标和内容 1、能够描述高可用HA的作用 2、能够理解VIP的切换 3、能够描述keepalived作用 4、能够理解主master和备backup服务器关系 5、能够实现主备服务器高可用配置 6、能够实现模拟业务宕机服务切换 一、背景描述及其方案设计 1、业务背景描述 时…

activemq启动成功但web管理页面却无法访问

前提&#xff1a; 在linux启动activemq成功&#xff01;本地能ping通linux 处理方案&#xff1a; 确定防火墙是否关闭&#xff0c; 有两种处理方案&#xff1a;第一种-关闭防火墙&#xff1b;第二种-暴漏8161和61616两个端口 netstat -lnpt查看8161和61616端口 注意&#xf…

【算法每日一练]-图论(保姆级教程篇12 tarjan篇)#POJ3352道路建设 #POJ2553图的底部 #POJ1236校园网络 #缩点

目录 POJ3352&#xff1a;道路建设 思路&#xff1a; POJ2553&#xff1a;图的底部 思路&#xff1a; POJ1236校园网络 思路&#xff1a; 缩点&#xff1a; 思路&#xff1a; POJ3352&#xff1a;道路建设 由于道路要维修&#xff0c;维修时候来回都不能走&#xff0c;现要…

Python实战:批量加密Excel文件指南

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python实战&#xff1a;批量加密Excel文件指南&#xff0c;全文3800字&#xff0c;阅读大约10分钟。 在日常工作中&#xff0c;保护敏感数据是至关重要的。本文将引导你通过…

跟着Nature Communications学习Hisat-Trinity-PASA等分析流程

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 详细教程请访问&#xff1a; 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA … 本期教程文章 题目&#xff1a;Genomic insights into local adaptation and future climate-induced vu…

untiy webgl常见问题与操作

文章目录 1 untiy和网页相互通信2 打开新页面&#xff08;同标签页和新标签页&#xff09;3 获取网页的URL4 解析Url内的参数5 后处理与色彩空间问题 1 untiy和网页相互通信 看这个文章 2 打开新页面&#xff08;同标签页和新标签页&#xff09; 先看本文untiy和网页相互通信…

代码随想录算法训练营 ---第五十三天

第一题&#xff1a; 简介&#xff1a; 本题和昨天的最大重复子串问题很相似&#xff0c;只不过本题不一定是连续的。 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]&#xff1a;长度为i-1 的字符串text1与长度为j-1的…

Git 分支详解

目录 1. Git 分支管理 2. 如何自己创建分支&#xff1f; 3. 创建分支修改内容&#xff0c;之后合并到主分支 4. 删除分支 5. 出现 merge 冲突如何解决 6. 分支策略 前言 之前只是知道有 master 分支这个东西&#xff0c;但是具体是啥意思还是不知道&#xff0c;今天详…

【面试HOT200】二叉树——广度优先搜索篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…

MFC 绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线.

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…