Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)

目录

一、从空白系统中克隆Centos7系统

二、使用xshell连接docker_tigerhhzz虚拟机​编辑

三、在CentOS7基础上安装Docker容器

四、在Docker中进行安装Portainer

4.1、在Docker中安装MySQL

4.2、在Docker中安装JDK8,安装Java环境

4.3、Docker安装redis(缓存)

4.4、使用 Docker 快速搭建自己的 GitLab

五、项目部署所需

1、安装C和C++的环境

2、安装Nginx反向代理


最近自己在虚拟机上搭建一个docker,将项目运行在虚拟机中。

需要提前准备的工具,XShell(远程链接工具),VM(虚拟机-配置网络)、CentOS7(Linux操作系统-在虚拟机上安装)

一、从空白系统中克隆Centos7系统


选择已经安装好的centos7系统,鼠标右键--管理---克隆:

 

   

开启docker_tigerhhzz虚拟机

二、使用xshell连接docker_tigerhhzz虚拟机


 

连接成功!!!

查看主机名:

hostname

修改主机名为docker_tigerhhzz

vi /etc/hostname

:wq保存退出

重启系统 reboot

三、在CentOS7基础上安装Docker容器


1.已经安装CentOS7后,打开终端,我这里是切换到了root用户,不然每一个命令都要在前面加上【sudo】

2. 通过前面就知道我是CentOS7,然后官方建议Linux内核在3.10以上【可能】,所以检查当前的内核版本

uname -r

我这里的版本是3.10,正好满足要求。

3.使用root权限对yum包进行更新

yum -y update

注释:以下两个的区分

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

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

4.如果之前已经安装过的话,可以在此卸载以前的版本。

yum remove docker docker-common docker-selinux docker-engine

5.开始安装Docker了,安装需要的软件包,分别为yum-util 提供yum-config-manager功能,另外两个则是devicemapper驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

出现如下图所示,则代表成功安装了需要的软件包

6.设置yum源,我一般使用阿里仓库的,以下有两种推荐

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

(中央仓库)

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

7. 先查看一下有哪些Docker版本。

yum list docker-ce --showduplicates | sort -r

8.选择一个版本进行安装,我这里选择docker-ce-18.03.1.ce,当然可以选择其他版本

yum -y install docker-ce-18.03.1.ce

显示如上图则代表安装成功

9.启动Docker并设置开启自动启动

systemctl start docker #启动Docker

systemctl enable docker #开启开机自启模式

10.查看docker版本

docker version

结束Docker的安装了

四、在Docker中进行安装Portainer


1.拉取portainer镜像,当然你可以事先搜索一下有哪些Portainer镜像

搜索镜像:

docker search portainer

拉取镜像:

docker pull portainer/portainer

2.查看镜像是否被拉取成功

docker images

3.运行portainer

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer portainer/portainer

解释:

  • -d:容器在后台运行;
  • -p 9000:9000 :宿主机9000端口映射容器中的9000端口(前面的是宿主机端口,后面的是容器端口);
  • –restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认不会重启;
  • –restart=always:自动重启该容器;
  • -v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
  • -v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
  • –name prtainer-test : 给容器起名为portainer;

4.查看portainer是否在运行

docker ps

5.发现portainer确实已经正在运行,所以我们现在就可以去使用Portainer了。

访问地址为:http://虚拟机IP:9000,ip是指你当前虚拟机的ip,首次访问要创建管理员账号和密码(用户名:admin,密码:123456),如下图所示

这就结束了Docker安装Portainer了。

4.1、在Docker中安装MySQL

1、在系统中可能存在mysql的安装包,使用docker ps -a查看运行的所有容器。

如果已经存在mysql镜像的容器,可以使用以下命令停止和删除使用该MySQL镜像的容器:

docker ps -a
docker stop mysql-container # MySQL镜像的容器名称

docker rm mysql-container # MySQL镜像的容器名称 mysql-container为MySQL镜像的容器名称。

2、可能删除出现问题,采用强制删除MySQL镜像:使用以下命令强制删除MySQL镜像:

docker rmi -f mysql:latest

这将强制删除名为"mysql:latest"的MySQL镜像。

3、当删除完成之后,重新拉取MySQL镜像:

docker pull mysql:latest

Error response from daemon: missing signature key错误解决:

docker安装的版本低了,需要升级:

完整复制下面的内容

yum erase docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce


 
执行完之后,再执行

yum install docker-ce -y


至此,已经更新完毕,不需要卸载docker其他的东西,有些还要将容器什么的全部卸载,不用

下载完后,需要重启 docker

# 启动docker
systemctl start docker
 
# 开启开机自启模式
systemctl enable docker 



 这时候,拉取镜像还是出现了一些问题,docker 在启动容器的时候,报错

Error response from daemon: unknown or invalid runtime name: docker-runc
解决方式如下,执行以下命令

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'


 然后,重启docker

# 启动docker
systemctl start docker
 
# 开启开机自启模式
systemctl enable docker 


4、重新运行MySQL容器:在删除容器和镜像后,重新运行MySQL容器:

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

5、运行完成之后,检验是否安装成功

docker exec -it mysql-container bash #进入mysql容器中

mysql -r -p #输入密码登录

select version(); #查看版本号

Show databases; #查看全部数据库

6、至此数据库MySQL安装完成。

7、为了方便操作数据库,我们使用Navicat,来远程链接虚拟机MySQL。

通过SSH方式链接,可以查看到全部的数据库,方便开发使用。

8、通过portainer查看MySQL运行情况

portainer登录用户名admin

登录密码123456123456

4.2、在Docker中安装JDK8,安装Java环境

1、拉取Java镜像(OpenJDK 8):

docker pull openjdk:8-jdk

# 或者直接用docker运行 jdk1.8,如果找不到jdk镜像,docker会自动从远程仓库中拉取最新的jdk镜像,下载完成后自动启动运行。

docker run -di --name=jdk1.8 openjdk

2、查看镜像 

docker ps

3、进入jdk容器 

docker exec -it jdk1.8 /bin/bash

4、验证Java是否正确安装:

java -version

Java正确安装,可以看到JDK 8的版本信息。

5、可以通过portainer查看jdk是否在运行

http://192.168.162.100:9000/#!/2/docker/containers

4.3、Docker安装redis(缓存)

1、拉取Redis镜像并运行容器:

拉取Redis镜像:

docker pull redis

运行Redis容器:

docker run -d --name myredis -p 6379:6379 redis

2、这将在后台运行一个名为myredis的Redis容器,并将容器内的6379端口映射到主机的6379端口。

验证Redis是否正确安装:

使用Redis客户端连接到Redis容器:

docker exec -it myredis redis-cli

3、在Docker中设置Redis的密码

请参考阅读博文:在Docker中设置Redis的密码

4、在Redis命令行中执行一些简单的命令,例如:

auth 12345 #授权,输入redis密码

set mykey "Hello Redis"

get mykey

5、能够成功设置和获取键值对,则表示Redis已正确安装并运行。

6、可以通过portainer查看redis是否在运行

4.4、使用 Docker 快速搭建自己的 GitLab

1,「下载镜像」

通过 docker pull 命令下载 gitlab 的镜像,这个过程需要花费一些时间

docker pull gitlab/gitlab-ce:latest

下载完成后查看一下是否下载成功,如果你能看到输出信息中已经有了 gitlab/gitlab-ce 的话,说明镜像下载成功了

docker images

2,启动服务

现在我们只需要启动 gitlab 服务就可以了

docker run --detach \
  --publish 10443:443 --publish 1080:80 --publish 1022:22 \
  --name gitlab \
  --restart always \
  --volume /mydata/gitlab/config:/etc/gitlab \
  --volume /mydata/gitlab/logs:/var/log/gitlab \
  --volume /mydata/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

「配置项」

  1. --shm-size 32g   ;  将 shm 共享内存的大小设置为了 32G,一开始的时候我没有设置,导致总是报 500 或者 502 的错误

  2. --hostname  dockertigerhhzz.com   ; 设置你的 gitlab 服务所使用的域名,随后你进入到 gitlab 的 web 界面后,通过 git 拉取代码或者推送代码,它在 web 界面所展示的主机的地址都是会受这个配置项影响的

  3. --publish 10443:443  ; 将 宿主机的10443 端口和 docker 容器的 443 端口映射,剩余两个端口映射同理

  4. --name gitlab  ; 配置启动后的容器名

  5. --restart always  ; 容器挂掉了是否自动重启,自动自动重启

  6. --volume /mydata/gitlab/config:/etc/gitlab \ 将宿主机的volume /mydata/gitlab/config 目录挂载到 Docker 容器的 /etc/gitlab 目录上,其实就是让它存数据的时候直接存在宿主机的文件系统上嘛。在这里我挂在目录的时候使用了宿主机上,我们创建的那些目录的绝对路径形式。剩余的两个目录挂载也是同理的

好啦,现在我们就运行上面的那一串命令就可以启动 gitlab 服务了,启动需要花一些时间,大概 1 到 2 分钟的样子。

3,「查看容器状态」

通过如下命令查看容器是否正常运行

docker ps

在这里可以看到,我的服务已经运转了 。

4,开启防火墙的指定端口

由于Gitlab运行在1080端口上,所以我们需要开放该端口,注意千万不要直接关闭防火墙,否则Gitlab会无法启动。

# 开启1080端口
firewall-cmd --zone=public --add-port=1080/tcp --permanent
# 重启防火墙才能生效
systemctl restart firewalld
# 查看已经开放的端口
firewall-cmd --list-ports

5,访问Gitlab

  • 访问地址:http://192.168.162.100:1080/
  • 由于Gitlab启动比较慢,需要耐心等待10分钟左右,如果Gitlab没有启动完成访问,会出现如下错误。

  • 可以通过docker命令动态查看容器启动日志来知道gitlab是否已经启动完成。
docker logs gitlab -f

Gitlab的使用Gitlab启动完成后第一次访问,会让你重置root帐号的密码

「默认账户」

  1. 用户名: 默认的用户名是 root

  2. 密码:而 root 用户默认的密码是被放在 ~/mydata/gitlab/config 目录中的 initial_root_password 文件中,你可以通过命令 cat ~/mydata/gitlab/config/initial_root_password 来查看内容,然后把这个密码复制下来就可以登录 gitlab 了

注意我们在找默认密码的时候,是在宿主机的目录中去找,因为你已经把这个目录给挂载上去了,你就直接在宿主机的文件系统中去找那个默认密码的文件就可以了,并且这个默认密码的文件会在 24 小时后被自动删除,你一定要及时修改密码嗷。

「关于备份」

你只需要把我们创建的那三个文件夹备份好就可以了,如果换了一个地方部署 gitlab 应用,你只需要把相应的文件夹进行挂载即可

五、项目部署所需

1、安装C和C++的环境

1、在docker中下载环境并部署

yum install gcc

yum install gcc-c++

2、输入命令检查是否安装成功

gcc --version

g++ --version

3、C和C++的环境安装成功!

2、安装Nginx反向代理

1、拉取nginx镜像

docker pull nginx

2、运行启动

docker run -d -p 80:80 --name mynginx nginx

3、打开浏览器输入http://192.168.162.10:80,可以出现默认nginx的页面,表示安装成功

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

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

相关文章

聚观早报 |京东11.11公布成绩单;2023数字科技生态大会

【聚观365】11月13日消息 京东11.11公布成绩单 2023数字科技生态大会 TikTok深受英国中小企业青睐 周鸿祎称大模型2年内可“进”智能汽车 双11全国快递业务量达 6.39 亿件 京东11.11公布成绩单 京东11.11公布成绩单:截至11月11日晚23:59,2023年京东…

桌面云架构讲解(VDI、IDV、VOI/TCI、RDS)

目录 云桌面架构 VDI 虚拟桌面基础架构 IDV 智能桌面虚拟化 VOI/TCI VOI 虚拟系统架构 TCI 透明计算机架构 RDS 远程桌面服务 不同厂商云桌面架构 桌面传输协议 什么是云桌面 桌面云是虚拟化技术成熟后发展起来的一种应用,桌面云通常也称为云桌面、VDI等 …

OpenCV 笔记(6):像素间的基本关系——邻域、邻接、通路、连通、距离

像素是图像的基本元素,像素与像素之间存在着某些联系,理解像素间的基本关系是数字图像处理的基础。常见的像素间的基本关系包括:邻域、邻接、通路、连通、距离。 Part11. 邻域 邻域表示了像素之间的连接关系。 像素(x,y)的邻域,是…

计算机二级Office真题解析 excel减免税,订单,成绩

第一题 1.将“Excel 减免税.xlsx”文件另存为 excel.xlsx,最后提交该文件(1 分)。 2.将“对应代码.xlsx”文件中的 sheet1 工作表插入到 excel.xlsx 中,工作 表名重命名为“代码”(3 分)。 3.在"序号&…

从关键新闻和最新技术看AI行业发展(2023.10.23-11.5第九期) |【WeThinkIn老实人报】

Rocky Ding 公众号:WeThinkIn 写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术,同时Rocky会对这些关键信息进行解读,力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议,一起交流学习&…

将随机数设成3407,让你的深度学习模型再涨一个点!文再附3种随机数设定方法

随机数重要性 深度学习已经在计算机视觉领域取得了巨大的成功,但我们是否曾想过为什么同样的模型在不同的训练过程中会有不同的表现?为什么使用同样的代码,就是和别人得到的结果不一样?怎么样才能保证自己每次跑同一个实验得到的…

Django中Cookie和Session的使用

目录 一、Cookie的使用 1、什么是Cookie? 2、Cookie的优点 3、Cookie的缺点 4、Django中Cookie的使用 二、Session的使用 1、什么是Session? 2、Session的优点 3、Session的缺点 4、Django中Session的使用 三、Cookie和Session的对比 总结 D…

Vue 小黑记事本组件板

渲染功能: 1.提供数据: 提供在公共的父组件 App.vue 2.通过父传子,将数据传递给TodoMain 3.利用 v-for渲染 添加功能: 1.收集表单数据 v-model 2.监听事件(回车点击都要添加) 3.子传父,讲…

【嵌入式设计】Main Memory:SPM 便签存储器 | 缓存锁定 | 读取 DRAM 内存 | DREM 猝发(Brust)

目录 0x00 便签存储器(Scratchpad memory) 0x01 缓存锁定(Cache lockdown) 0x02 读取 DRAM 内存 0x03 DREM Banking 0x04 DRAM 猝发(DRAM Burst) 0x00 便签存储器(Scratchpad memory&#…

Flutter有状态组件StatefulWidget生命周期

StatefulWidget是Flutter中的一个有状态的组件,它的生命周期相对复杂一些。下面是StatefulWidget的生命周期方法及其调用顺序: 1. createState(): 当StatefulWidget被插入到Widget树中时,会调用createState()方法来创建与之关联的State对象。…

软路由R4S+iStoreOS实现公网远程桌面局域网内电脑

软路由R4SiStoreOS实现公网远程桌面局域网内电脑 文章目录 软路由R4SiStoreOS实现公网远程桌面局域网内电脑简介 一、配置远程桌面公网地址配置隧道 二、家中使用永久固定地址 访问公司电脑具体操作方法是:2.1 登录页面2.2 再次配置隧道2.3 查看访问效果 简介 上篇…

力扣511. 游戏玩法分析 I

答案: select player_id,min(event_date) as first_login from Activity a group by player_id我最开始写的错误答案是这样的: select player_id,event_date as first_login from Activity a group by player_id having event_date min(event_date…

Docker - DockerFile

Docker - DockerFile DockerFile 描述 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像(dockerhub&#xff0…

无监督学习的集成方法:相似性矩阵的聚类

在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。 这种类型的方法已经在监督学习领域得到了广泛的研究和应用,特别是在分类问题上,像RandomForest这样…

【KVM-5】KVM架构

前言 大家好,我是秋意零。今天分析的内容是KVM架构。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者🧑 个人介绍:在校期间参与…

正点原子嵌入式linux驱动开发——Linux IIO驱动

工业场合里面也有大量的模拟量和数字量之间的转换,也就是常说的ADC和DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本…

计算机视觉(CV)技术的优势和挑战

计算机视觉技术在很多领域具有很大的优势,例如: 自动化:计算机视觉技术可以帮助实现自动化生产和检测,省去了人力成本和时间成本。 准确性:计算机视觉技术可以提高生产和检测的准确性,降低了人工操作产生的误差。 速度:计算机视觉技术可以实现高速速度的生产和检测,提高…

flv.js在vue中的使用

Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。它的工作原理是将 FLV 文件流转码复用成 ISO BMFF(MP4 碎片)片段,然后通过 Media Sour…

【vue实战项目】通用管理系统:封装token操作和网络请求

目录 1.概述 2.封装对token的操作 3.封装axios 1.概述 前文我们已经完成了登录页: 【vue实战项目】通用管理系统:登录页-CSDN博客 接下来我们要封装一下对token的操作和网络请求操作。之所以要封装这部分内容是因为token我们登陆后的所有请求都要携…

Python爬虫从基础到入门:认识爬虫

Python爬虫从基础到入门:认识爬虫 1. 认识爬虫2. 开始简单的爬虫操作(使用requests)3. 辨别“数据”是静态加载还是动态生成的1. 认识爬虫 爬虫用自己的话说其实就是利用一定的编程语言,到网络上去抓取一些数据为自己所用。那为什么要用爬虫呢?自己直接到网页上去copy数据它…