云服务器Linux 运行Docker容器并外部访问Mysql/MongoDB/_linux配置docker外部访问-程序员宅基地

技术标签: Docker  linux  服务器  docker  

1、Linux安装Docker

操作系统说明

我这里使用Xshell来远程连接主机。我的系统是CentOS7的版本,算是一个比较老的版本。没有用CentOS 8 的主要原因是服务器配置太低,达不到安装CentOS 8的要求。

如果你使用的是Ubuntu系统或者其他版本的LInux系统,不用担心,安装方法几乎是一样的。因为这种安装方法是相对简单快速。

开始安装Docker

安装我们直接使用shell脚本来进行安装,安装脚本的地址如下。

get.docker.com

可以直接使用curl命令下载这个shell脚本

curl -fsSL get.docker.com -o get-docker.sh

这个下载命令并没有成功提示,所以下载完成后,可以使用ls命令查看一下。如果已经存在了,就可以使用sh命令,直接执行这个脚本了。

sh get-docker.sh

回车后就开始安装Docker了。这里需要注意,如果你不是root用户,是需要使用sudo命令或者给用户sudo权限。

安装过程大概要3-4分钟左右,也是主要看网速和服务器性能。

检测是否安装成功

安装完成后,依然通过docker version命令检查是否安装成功。

如果只显示下面的这些信息,也就是只启动了客户端Client

Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这时候要使用systemctl start命令,开启Docker服务端。

sudo systemctl start docker

开启后,再使用sudo docker version来看一下,如果有类似下面的信息,说明已经安装成功了。

Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:56:35 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.8
  GitCommit:        7eba5930496d9bbe375fdf71603e610ad737d2b2
 runc:
  Version:          1.0.0
  GitCommit:        v1.0.0-0-g84113ee
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

总结:在Linux下安装Docker比Windows安装要简单,主要是官方贴心的准备好了对应的shell脚本文件,我们执行就好。但需要注意的是必须要有sudo权限。

本来还应该演示一下Mac系统下的安装,无奈家中贫寒,实在没有Mac电脑。所以如果你是Mac电脑,就自己搜索一下百度,一定也可以安装成功的。

docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

执行docker ps命令,出现

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is
the docker daemon running?

错误 此时已确定Docker本身已经安装正常。 问题原因是因为docker服务没有启动,所以在相应的/var/run/
路径下找不到docker的进程。 执行

service docker start
命令,启动docker服务,返回docker start/running, process
2662 此时进程启动成功,再执行docker ps,问题解决

2、Docker文件

version: '3.1'

services:
  my_mysql:
    image: mysql:8.0
    container_name: my_mysql
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1
    restart: always
    volumes:
      - /root/jzt/docker/mysql/data:/var/lib/mysql/ #映射mysql的数据目录到宿主机,保存数据
      # - /root/jzt/docker/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf #把mysql的配置文件映射到容器的相应目录
      - /root/jzt/docker/mysql/logs:/logs
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      # 初始化用户(不能是root 会报错, 后续需要给新用户赋予权限)
      MYSQL_USER: nacos
      # 用户密码
      MYSQL_PASSWORD: nacos
  my_mongo:
    image: mongo:latest
    container_name: my_mongo
    restart: always
    volumes:
      - /root/jzt/docker/mongo:/data/db
    ports:
      - 27017:27017
  redis:
    image: redis:6.0.6
    container_name: myRedis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - /root/jzt/docker/redis/data:/data:rw
      - /root/jzt/docker/redis/redis.conf:/etc/redis/redis.conf:rw
    command: redis-server /etc/redis/redis.conf

命令:拉取镜像,并后台运行容器。

docker compose up -d

查看容器:docker ps

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                          PORTS                                           NAMES
6355cd0c2296   redis:6.0.6    "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes                    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp       myRedis
7d226e942fc5   mysql:8.0      "docker-entrypoint.s…"   5 minutes ago   Restarting (1) 14 seconds ago                                                   my_mysql
35ee5e4cb252   mongo:latest   "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes                    0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   my_mongo

3、开放端口

在这里插入图片描述
在这里插入图片描述
云服务器吧是以轻量服务器开放80端口为例,协议选择TCP,策略为允许,备注可填可不填给自己看的。开放8888端口就输入8888,开放3306端口就输入3306,开放443端口就输入443等等。

4、坑

碰到的坑就是:mysql不能正常启动,一直restarting。最主要的就是data挂载目录: 不要存放之前的windows上已经有的mysql data。要空的。就不会出现问题了:
Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案

[root@VM-0-9-centos Docker]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
896b5ebb3943   mysql:8.0      "docker-entrypoint.s…"   43 seconds ago   Up 42 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   my_mysql
d8251c979bf5   mongo:latest   "docker-entrypoint.s…"   43 seconds ago   Up 42 seconds   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp          my_mongo
48f678779f1a   redis:6.0.6    "docker-entrypoint.s…"   43 seconds ago   Up 42 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              myRedis

参考资料

  1. docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
  2. 技术胖- Linux安装Docker
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zimojiang/article/details/125032696

智能推荐

两轮机器人小车的里程计设计(一)——航迹推演_轮式里程计行迹推算-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏34次。做机器人底层程序的时候,经常用到航迹推演(Odometry),无论是定位导航还是普通的方向控制。航迹推演中除了对机器人位姿进行估计,另一个很重要的关系是移动机器人前进速度、转向角速度与左轮速度、右轮速度之间的转换。 在机器人局部路径规划算法DWA解析一文中,是在假设已知机器人前进线速度和角速度的情况下,对机器人航迹推演的位姿进行推导了,然而缺少如何通过左右轮速度得到、,因此本文将补上这个空缺。 ..._轮式里程计行迹推算

R语言空间数据分析学习笔记3——坐标系设置_r语言设置rasterlayer的坐标系为gcs_krasovsky_1940-程序员宅基地

文章浏览阅读7.2k次。地理空间数据一般都带有坐标系,最常用的是WGS 84,如果我们已经读入了一个地理数据,比如保存在data中,那么可以查看它的空间坐标系:library(pacman)p_load(sf)data = st_read("G:/Rdata/China/fujian1.shp")# Reading layer `fujian1' from data source `G:\Rdata\China\fujian1.shp' using driver `ESRI Shapefile'# Simple feat_r语言设置rasterlayer的坐标系为gcs_krasovsky_1940

Cglib动态代理-程序员宅基地

文章浏览阅读306次,点赞5次,收藏4次。Cglib 的动态代理,就是子类继承父类。即:通过生成一个被代理对象的子类,然后重写父类的方法,所以目标类和方法不能声明为 final 类型,可以强制转化为被代理类(也就是自己写的类),即父类引用指向子类对象;

【附源码】JAVA计算机毕业设计网络课程考试(源码+mysql+文档)-程序员宅基地

文章浏览阅读856次,点赞9次,收藏7次。对于学生而言,网络课程考试系统提供了一个灵活的学习平台,学生可以根据自己的时间安排选择考试时间,同时也能够在更加宽松的环境中展示自己的学习成果。特别是在全球性的疫情影响下,线上教育的需求量急剧增加,这不仅推动了远程教学模式的创新,也对网络课程考试系统提出了更高的要求。基于Java的网络课程考试系统可以充分利用Java的优势,实现一个稳定、可扩展的在线考试环境。综上所述,基于Java的网络课程考试系统不仅能够满足现代教育的需求,还能够推动教育信息化进程,对提升教育质量和效率具有深远的影响。

拖控件自动生产html,GitHub - yandou/Bootstrap-Form-Builder: 表单生成器,拖拽自定义表单,生成表单html以及表单控件json。在原有代码上简化了表单控件数量...-程序员宅基地

文章浏览阅读273次。#Bootstrap Form BuilderWarning: Currently using Bootstrap v. 2.3.1 ???? (Not Bootstrap 3 ready.)##What's this?A Drag-and-drop form builder for twitter bootstrap.##Where can I see it in action?It's hoste..._在线构建器:拖动表单元素生成相应的html代码。

【Cocos新手入门】 cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法_cocos 下拉列表-程序员宅基地

文章浏览阅读1.6k次。本篇文章主要讲解使用cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法。作者:任聪聪日期:2023年2月7日cocos 引擎版本:2.4.3在我们实现select框的时候,我们可以通过按钮+显示隐藏某个元素来达成这个目标,如下是整体的select框自定义及传参获取的方法教程。_cocos 下拉列表

随便推点

在MyBatis-Plus中实现字段加密与解密_mybatis-plus-encrypt-程序员宅基地

文章浏览阅读855次,点赞5次,收藏11次。在MyBatis-Plus中实现字段加密与解密_mybatis-plus-encrypt

web概述04(table的使用)_web如何用table键-程序员宅基地

文章浏览阅读412次。table的使用_web如何用table键

STM32F103C8T6-RS485通讯完整版_stm32中rs485-程序员宅基地

文章浏览阅读2.5k次,点赞15次,收藏45次。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可。单片机串口通讯有着许多通讯方式,例如R485/RS232/RS422/TTL/网口等等,在现实生活中RS485通讯是使用频率最高的一种通讯方式,因为485通讯是采用一对多的通讯方法,何为一对多,即一个主机若干个从机,一个负责发数据,其他负者数据的接收;其中帧头是判断整体设备通讯接收数据的正确性,地址是用来区分接收设备的判断,帧尾一般是数据包的校验和,这样帧尾是随着数据的变化而变化,通讯失准确性更加精准。_stm32中rs485

linux 安装第三方报错_linux软件包未被升级-程序员宅基地

文章浏览阅读501次。需求tarena@tarena:~$ sudo apt-get install memcached[sudo] tarena 的密码:问题正在读取软件包列表… 完成正在分析软件包的依赖关系树正在读取状态信息… 完成memcached 已经是最新版 (1.5.6-0ubuntu1.1)。升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 360 个软件包未被升级。..._linux软件包未被升级

android 6.0获取手机imei,android获取手机信息大全,android获取大全,IMEI号,IESI号,...-程序员宅基地

文章浏览阅读321次。android获取手机信息大全,android获取大全,IMEI号,IESI号,IMEI号,IESI号,手机型号:[java] view plaincopyprint?private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVIC..._android 6.0获取imei号

修改mysql数据库导入sql文件大小限制_mysql8 导入大小设置-程序员宅基地

文章浏览阅读5.9k次。1、打开PHP.ini。找到 upload_max_filesize memory_limit post_max_size 这三个参数!(在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限的最大使用内存memory_limit也仅为128M,Post的最大也为2M)2、按您的服务器的实际性能配置进行如下改动:(注意:以下是按我的服务器性能和硬_mysql8 导入大小设置

推荐文章

热门文章

相关标签