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](#4.4、使用 Docker 快速搭建自己的 GitLab)

五、项目部署所需

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

2、安装Nginx反向代理


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

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

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


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

开启docker_tigerhhzz虚拟机

二、使用xshell连接docker_tigerhhzz虚拟机


连接成功!!!

查看主机名:

bash 复制代码
hostname

修改主机名为docker_tigerhhzz

bash 复制代码
vi /etc/hostname

:wq保存退出

重启系统 reboot

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


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

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

bash 复制代码
uname -r

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

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

bash 复制代码
yum -y update

注释:以下两个的区分

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

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

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

bash 复制代码
yum remove docker docker-common docker-selinux docker-engine

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

bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2

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

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

bash 复制代码
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版本。

bash 复制代码
yum list docker-ce --showduplicates | sort -r

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

bash 复制代码
yum -y install docker-ce-18.03.1.ce

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

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

bash 复制代码
systemctl start docker #启动Docker

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

10.查看docker版本

bash 复制代码
docker version

结束Docker的安装了

四、在Docker中进行安装Portainer


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

搜索镜像:

bash 复制代码
docker search portainer

拉取镜像:

bash 复制代码
docker pull portainer/portainer

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

bash 复制代码
docker images

3.运行portainer

bash 复制代码
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是否在运行

bash 复制代码
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镜像的容器:

bash 复制代码
docker ps -a
bash 复制代码
docker stop mysql-container # MySQL镜像的容器名称

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

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

bash 复制代码
docker rmi -f mysql:latest

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

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

bash 复制代码
docker pull mysql:latest

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

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

完整复制下面的内容

bash 复制代码
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

执行完之后,再执行

bash 复制代码
yum install docker-ce -y

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

下载完后,需要重启 docker

bash 复制代码
# 启动docker
systemctl start docker
 
# 开启开机自启模式
systemctl enable docker 

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

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

bash 复制代码
grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'

然后,重启docker

bash 复制代码
# 启动docker
systemctl start docker
 
# 开启开机自启模式
systemctl enable docker 

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

bash 复制代码
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

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

bash 复制代码
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):

bash 复制代码
docker pull openjdk:8-jdk

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

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

2、查看镜像

bash 复制代码
docker ps

3、进入jdk容器

bash 复制代码
docker exec -it jdk1.8 /bin/bash

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

bash 复制代码
java -version

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

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

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

4.3、Docker安装redis(缓存)

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

拉取Redis镜像:

bash 复制代码
docker pull redis

运行Redis容器:

bash 复制代码
docker run -d --name myredis -p 6379:6379 redis

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

验证Redis是否正确安装:

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

bash 复制代码
docker exec -it myredis redis-cli

3、在Docker中设置Redis的密码

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

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

bash 复制代码
auth 12345 #授权,输入redis密码

set mykey "Hello Redis"

get mykey

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

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

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

1,「下载镜像」

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

bash 复制代码
docker pull gitlab/gitlab-ce:latest

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

bash 复制代码
docker images

2,启动服务

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

bash 复制代码
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,「查看容器状态」

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

bash 复制代码
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是否已经启动完成。
bash 复制代码
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中下载环境并部署

bash 复制代码
yum install gcc

yum install gcc-c++

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

bash 复制代码
gcc --version

g++ --version

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

2、安装Nginx反向代理

1、拉取nginx镜像

bash 复制代码
docker pull nginx

2、运行启动

bash 复制代码
docker run -d -p 80:80 --name mynginx nginx

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

相关推荐
hyf3266338 小时前
高收益玩法:站群泛程序结合本地服务引流变现全流程
运维·服务器·前端·搜索引擎·蜘蛛池
懒人88 小时前
8月18日更新 | 2026 最新可用 Docker 国内镜像源加速列表(Linux 环境下拉取镜像的方式进行演示)
docker
三言老师8 小时前
K8s 集群 LocalPV 静态 PV 资源手动创建实操
linux·运维·服务器·kubernetes
一直在努力学习的菜鸟8 小时前
Rocky Linux 8.10 编译安装 PostgreSQL 17.11
linux·运维
三言老师9 小时前
K8s集群运行时自动化运维全覆盖落地实操(上)
docker·容器·kubernetes
Doraemomo9 小时前
Linux编程-进程的执行和退出
linux·运维·服务器
艾伦_耶格宇9 小时前
【ELK】-5 kibana和filebeat
linux·运维·ubuntu·elk
复园电子9 小时前
USB服务器架构设计分析:多设备管理、权限控制与安全传输机制
运维·服务器·安全
梅孔立9 小时前
Docker 部署 Python3\.11 Flask爬虫项目 终极稳定教程(解决线程报错/挂载失效/pip报错)
爬虫·docker·flask
DevHub9 小时前
电视盒子刷 Armbian 教程:30 元旧盒子变 NAS 跑 Docker,200+ 机型可刷
linux·嵌入式硬件·docker·容器·开源·电视盒子