当前位置:   article > 正文

云服务器Linux 运行Docker容器并外部访问Mysql/MongoDB/_linux配置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
  • 1

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

sh get-docker.sh
  • 1

回车后就开始安装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?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

sudo systemctl start docker
  • 1

开启后,再使用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

总结:在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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

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

docker compose up -d
  • 1

查看容器: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
  • 1
  • 2
  • 3
  • 4

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
  • 2
  • 3
  • 4
  • 5

参考资料

  1. docker Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
  2. 技术胖- Linux安装Docker
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/87518
推荐阅读
相关标签
  

闽ICP备14008679号