容器mysql安装访问

[root@corpse network-scripts]# docker pull  hub.c.163.com/library/mysql

[root@corpse network-scripts]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
tomcat                                  v1                  64fd9afbf143        21 hours ago        648MB
test/spingboot1110                      latest              312eec2dd274        7 weeks ago         710MB
gsdx/agent                              tomcat9.0.39        960a15ca721d        8 weeks ago         711MB
tomcat                                  latest              35064a4fcc93        2 months ago        648MB
hello-world                             latest              bf756fb1ae65        12 months ago       13.3kB
sonamsamdupkhangsar/springboot-docker   latest              a0e068c5fa83        2 years ago         698MB
hub.c.163.com/library/mysql             latest              9e64176cd8a2        3 years ago         407MB
 

[root@corpse network-scripts]# docker history hub.c.163.com/library/mysql
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
9e64176cd8a2        3 years ago         /bin/sh -c #(nop)  CMD ["mysqld"]               0B
<missing>           3 years ago         /bin/sh -c #(nop)  EXPOSE 3306/tcp              0B
<missing>           3 years ago         /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
<missing>           3 years ago         /bin/sh -c ln -s usr/local/bin/docker-entryp…   34B
<missing>           3 years ago         /bin/sh -c #(nop) COPY file:5453fdbdb142b28e…   6.03kB
<missing>           3 years ago         /bin/sh -c #(nop)  VOLUME [/var/lib/mysql]      0B
<missing>           3 years ago         /bin/sh -c sed -Ei 's/^(bind-address|log)/#&…   1.23kB
<missing>           3 years ago         /bin/sh -c {   echo mysql-community-server m…   240MB
<missing>           3 years ago         /bin/sh -c echo "deb http://repo.mysql.com/a…   55B
<missing>           3 years ago         /bin/sh -c #(nop)  ENV MYSQL_VERSION=5.7.18-…   0B
<missing>           3 years ago         /bin/sh -c #(nop)  ENV MYSQL_MAJOR=5.7          0B
<missing>           3 years ago         /bin/sh -c set -ex;  key='A4A9406876FCBD3C45…   20.8kB
<missing>           3 years ago         /bin/sh -c apt-get update && apt-get install…   38.7MB
<missing>           3 years ago         /bin/sh -c mkdir /docker-entrypoint-initdb.d    0B
<missing>           3 years ago         /bin/sh -c set -x  && apt-get update && apt-…   4.58MB
<missing>           3 years ago         /bin/sh -c #(nop)  ENV GOSU_VERSION=1.7         0B
<missing>           3 years ago         /bin/sh -c groupadd -r mysql && useradd -r -…   330kB
<missing>           3 years ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>           3 years ago         /bin/sh -c #(nop) ADD file:712c48086043553b8…   123MB

[root@corpse network-scripts]# docker run -itd  --name=mysql5718  -p 3309:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 hub.c.163.com/library/mysql
be5fa4444d5aa0cc5765de0fbfd025a6b470185acbe3030dc6e6e8c87ead4f5a
[root@corpse network-scripts]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                               NAMES
be5fa4444d5a        hub.c.163.com/library/mysql   "docker-entrypoint.s…"   4 seconds ago       Up 2 seconds        0.0.0.0:3309->3306/tcp              mysql5718
 

[root@corpse /]#mysql  -uroot -p123456 -h192.168.149.203  -P3309
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database  cooldb
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cooldb             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use cooldb;
Database changed
mysql> show tables ;
Empty set (0.00 sec)

mysql> create table  cool_z (id int(10),name varchar(10));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into   cool_z (id,name) values(10,'co');
Query OK, 1 row affected (0.00 sec)

mysql> select * from cool_z;
+------+------+
| id   | name |
+------+------+
|   10 | co   |
+------+------+
1 row in set (0.00 sec)
 

### 如何配置Docker容器连接外部MySQL数据库 在配置Docker容器以连接到外部MySQL数据库时,需要确保网络设置正确,并且容器能够访问宿主机或远程的MySQL服务。以下是几种常见的方法和配置细节: #### 方法一:通过命令行直接连接 可以使用`docker exec`命令从容器内部执行命令来连接外部MySQL数据库。例如: ```bash docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307 [^1] ``` 需要注意的是,这里的`127.0.0.1`应替换为宿主机的实际IP地址或域名。如果容器运行在Linux系统上,可以通过`host.docker.internal`访问宿主机。 #### 方法二:通过`docker-compose.yml`文件配置 在`docker-compose.yml`文件中添加适当的参数以支持外部连接。例如: ```yaml version: '3' services: app: image: my_app_image restart: always environment: MYSQL_HOST: "external_mysql_host" MYSQL_PORT: "3306" MYSQL_USER: "DB_USER" MYSQL_PASSWORD: "DB_USER_PWD" command: ["--default-authentication-plugin=mysql_native_password"] [^2] ``` 此配置中,`MYSQL_HOST`应设置为外部MySQL服务器的IP地址或域名,而`MYSQL_PORT`则指定MySQL服务的端口号。 #### 方法三:通过`--link`选项连接 如果外部MySQL数据库运行在同一台宿主机上,可以使用`--link`选项将容器MySQL服务链接起来。例如: ```bash sudo docker run --name=mysql_client2 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein [^3] ``` 这种方法适用于简单的开发环境,但在生产环境中建议使用更灵活的网络配置。 #### 方法四:解决连接失败问题 当遇到类似`pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")`的错误时[^4],需要检查以下几点: - 确保MySQL服务已启动并监听正确的IP地址和端口。 - 验证防火墙规则是否允许来自Docker容器的连接。 - 如果容器运行在Linux系统上,尝试将`localhost`替换为`host.docker.internal`或宿主机的真实IP地址。 #### 示例代码 以下是一个完整的Python脚本示例,展示如何从Docker容器中连接到外部MySQL数据库: ```python import pymysql try: connection = pymysql.connect( host='external_mysql_host', port=3306, user='DB_USER', password='DB_USER_PWD', database='my_database' ) cursor = connection.cursor() cursor.execute("SHOW DATABASES;") results = cursor.fetchall() print(results) except pymysql.err.OperationalError as e: print(f"Connection failed: {e}") finally: if connection: connection.close() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值