Docker系列文 您所在的位置:网站首页 乌班图和centos的关系 Docker系列文

Docker系列文

2024-07-15 09:03| 来源: 网络整理| 查看: 265

Docker系列文—— 在Centos和Ubuntu系统中利用 docker 安装 MySQL 镜像环境且利用别的机器进入docker中创建的MySQL容器详细步骤过程!!! 具体操作方法常见错误

具体操作方法

1.如果是全新的乌班图机器,没有下载MySQL的可以先下载mariadb

puleya@root:~$ sudo apt install mariadb-server # 页面能进入说明成功 puleya@root:~$ sudo mariadb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 50 Server version: 10.3.30-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

Tips:如果不习惯乌班图的普通用户,不习惯敲sudo,可以使用乌班图的root用户

puleya@root:~$ sudo passwd root New password: # 设置密码 Retype new password: passwd: password updated successfully puleya@root:~$ su root # 进入root 再利用docker下载MySQL镜像,这里使用pull直接下载 puleya@root:~$ sudo docker pull mysql:5.7.35 # 因为博主习惯使用5的版本所以下载指定了版本,也可以不指定直接下载官方最新版本 直接利用docker建立并且启动一个MySQL容器 docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag -e 表示宿主机往容器里传递环境变量 environmentMYSQL_ROOT_PASSWORD 是变量名my-secret-pw 变量的值 即想设置的密码 root@root:/home/puleya# docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD='sc123456' -d -p 3308:3306 mysql:5.7.35 2181654cd5e88a1f12f3831bbc8ad4cfdc41dde6993b0b4a87c24cb1b702798f # 建立成功会返回一串数字与字母 这里的 -d是 在后台启动一个容器进程 deamon-p 是端口的映射:iptables的DNAT 3308端口(注意:这里不能选取已经被占用的端口号,若宿主机开启了MySQL同时开启了3306端口则这里不能建立3306:3306只能建立3308等别的端口:3306去开启映射) # 这里我们使用ss查询端口号 root@root:/home/puleya# ss -anplut|grep mysql tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=2130,fd=21)) # 说明我们外面宿主机开启了3306端口,所以这里我们使用3308:3306,也可以关闭宿主机的MySQL服务使用3306:3306 使用docker查看启动的进程 root@root:/home/puleya# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2181654cd5e8 mysql:5.7.35 "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp sc-mysql-1 root@root:/home/puleya# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2181654cd5e8 mysql:5.7.35 "docker-entrypoint.s…" 9 seconds ago Up 8 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp sc-mysql-1 dockers ps -a 查看全部进程docker ps 只查看启动的进程 ss查看容器的mysql启动情况 root@root:/home/puleya# ss -anplut # 以下截取核心的内容 tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=2130,fd=21)) tcp LISTEN 0 4096 0.0.0.0:3308 0.0.0.0:* users:(("docker-proxy",pid=6230,fd=4)) )) # 此处"docker-proxy"成功创建启动 说明我们的容器内部3308端口生效且启动 使用另外一台机器或者自己本机连接进docker建立的MySQL容器 # -h 指定连接服务器的ip地址 -P 指定访问的端口 [root@kafka02 web]# mysql -h 192.168.2.24 -uroot -psc123456 -P 3308 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.35 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> # 这样即成功建立且连接上,Centos的创建容器验证生效等操作也同上 常见错误 docker 创建报错 root@root:/home/puleya# docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD='sc123456' -d -p 3306:3306 mysql:5.7.35 74ff621b94228958000d46aea12e0048330ff5d95f00750d2a29289fa2623061 docker: Error response from daemon: driver failed programming external connectivity on endpoint sc-mysql-1 (f080450ae578e4203f39a446b9fc6f0c1020932f835ad27ab25d2dde627a8d3f): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

一切关于docker创建容器报错问题检查以下几点

端口有没有冲突容器名字创建有没有重复语法格式正不正确命令的英文拼写有没有打错 用另一台机器连接MySQL连接不上的问题 [root@kafka02 web]# mysql -h 192.168.2.32 -P 3308 -uroot rootroot ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.2.32' (111) 检查本机防火墙有没有关闭检查防火墙的规则

解决:

# 乌班图系统关闭防火墙 sudo ufw disable # 查看防火墙状态 ufw status # Centos关闭防火墙 [root@kafka02 web]# service firewalld stop Redirecting to /bin/systemctl stop firewalld.service # Centos查看防火墙状态 [root@kafka02 web]# service firewalld status Redirecting to /bin/systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) # Centos关闭selinux [root@kafka02 web]# setenforce 0 setenforce: SELinux is disabled # Centos查看selinux状态 [root@kafka02 web]# getenforce Disabled

查看防火墙规则

root@root:/home/puleya# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination DOCKER-USER all -- anywhere anywhere DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (1 references) target prot opt source destination ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:mysql Chain DOCKER-ISOLATION-STAGE-1 (1 references) target prot opt source destination DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-ISOLATION-STAGE-2 (1 references) target prot opt source destination DROP all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-USER (1 references) target prot opt source destination RETURN all -- anywhere anywhere

这里有关于docker等的规则说明没有问题 没有的话,直接重新启动docker即可

若有些无法排查无法解决的莫名错误,这样的话试试stop docker服务重新启动一下,能解决大部分问题。 service docker restart


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有