mysql 适合做成 docker 启动mysql容器容器吗

如何开发一个 PHP + MySQL 的 Docker 化应用(三) - 推酷
如何开发一个 PHP + MySQL 的 Docker 化应用(三)
目标:基于典型的 LAMP 技术栈,用 Docker 镜像的方式搭建一个 Linux + Apache + MySQL + PHP 的应用 。
本项目代码维护在
创建 PHP 应用容器
& 因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。
首先,选择官方的 PHP 镜像作为项目的基础镜像。
dockerfile FROM daocloud.io/php:5.6-apache
接着,用官方 PHP 镜像内置命令 docker-php-ext-install 安装 PHP 的 MySQL 扩展依赖。
dockerfile RUN docker-php-ext-install pdo_mysql
依赖包通过 docker-php-ext-install 安装,如果依赖包需要配置参数则通过 docker-php-ext-configure 命令。
安装 pdo_mysql PHP 扩展。
然后,将代码复制到目标目录。
dockerfile COPY . /var/www/html/
因为基础镜像内已经声明了暴露端口和启动命令,此处可以省略。
至此,包含 PHP 应用的 Docker 容器已经准备好了。PHP 代码中访问数据库所需的参数,是通过读取环境变量的方式声明的。
$serverName = env(&MYSQL_PORT_3306_TCP_ADDR&, &localhost&);
$databaseName = env(&MYSQL_INSTANCE_NAME&, &homestead&);
$username = env(&MYSQL_USERNAME&, &homestead&);
$password = env(&MYSQL_PASSWORD&, &secret&);
* 获取环境变量
* @param $key
* @param null $default
* @return null|string
function env($key, $default = null)
$value = getenv($key);
if ($value === false) {
这样做是因为在 Docker 化应用开发的最佳实践中,通常将有状态的数据类服务放在另一个容器内运行,并通过容器特有的 link 机制将应用容器与数据容器动态的连接在一起。
绑定 MySQL 数据容器(本地)
首先,需要创建一个 MySQL 容器。
bash docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:5.5
之后,通过 Docker 容器间的 link 机制,便可将 MySQL 的默认端口(3306)暴露给应用容器。
bash docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql
绑定 MySQL 数据服务(云端)
比起本地创建,在云端创建和绑定 MySQL 数据服务会更简单。
在 GitHub 上 Fork
或者添加自己的代码仓库。
注册成为 DaoCloud 用户。
在 DaoCloud 「控制台」中选择「代码构建」。
创建新项目,选择代码源,开始构建镜像。
在「服务集成」创建 MySQL 服务实例。
将构建的应用镜像关联 MySQL 服务实例并部署在云端。
DaoCloud 使用图文介绍
了解如何用 DaoCloud 进行代码构建:参考
了解如何用 DaoCloud 进行持续集成:参考
了解如何用为应用准备一个数据库服务:参考
了解如何部署一个刚刚构建好的应用镜像:参考
php-apache-mysql-sample 应用截图
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致当前位置:
docker 安装 mysql
docker 安装 mysql
访问次数: 10
1.系统环境
安装过更新
# yum upgrade
2.安装docker见上一篇文章
# docker images
REPOSITORY
VIRTUAL SIZE
0ea0d582fd90
2 weeks ago
aa822e26d727
2 weeks ago
822a01ae9a15
2 weeks ago
b1bd49907d55
3 weeks ago
b157b77b1a65
3 weeks ago
b157b77b1a65
3 weeks ago
c5881f11ded9
9 weeks ago
463ff6be4238
9 weeks ago
3db9c44f4520
4 months ago
[root@CentOS ~]# docker ps -l
centos:centos7
cat /etc/issue
About a minute ago
Exited (0)
About a minute ago
clever_kirch8
[root@CentOS ~]# docker run -i -t centos /bin/bash
# docker ps -l
CONTAINER ID
1b60a96a84e8
centos:centos7
7 seconds ago
Up 6 seconds
装好软件之后
# docker commit 1b60a96a84e8 xiongli/mysql
3.mysql下载
最新版: mysql-5.6.20.tar.gz
网站:/downloads/mysql/
下载命令:
# wget /Downloads/MySQL-5.6/mysql-5.6.20.tar.gz
# wget http://www.cmake.org/files/v3.0/cmake-3.0.1.tar.gz
4.docker 安装 CentOS 镜像
# docker pull centos
安装 mysql
[root@CentOS ~]# docker run -i -t centos /bin/bashbash-4.2#
因为只有一个窗口,运行起来输命令不方便,现在安装ssh,并且用其他主机通过ssh连接进来,安装,没有 docker commit 不可以关闭主docker 窗口,否则,安装全部要重新开始。
# yum install openssh
下面两个用不了,可以用命令启动
# systemctl start sshd.service
# systemctl enable sshd.service
在这个命令下面安装,步骤如下:
# cd /root/
# wget /Downloads/MySQL-5.6/mysql-5.6.20.tar.gz
# wget http://www.cmake.org/files/v3.0/cmake-3.0.1.tar.gz
# yum upgrade
# yum install gcc gcc-c++ make autoconf bison ncurses-devel wget tar
# tar zxvf cmake-3.0.1.tar.gz
# cd cmake-3.0.1
# ./configure --prefix=/usr/local/cmake
# make && make install
# groupadd mysql
# useradd -s /sbin/nologin -g mysql mysql
# mkdir -p /mysql /mysql/3306 /mysql/3307
# chown -R mysql:mysql /mysql
# tar zxvf mysql-5.6.20.tar.gz
# cd mysql-5.6.20
/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/mysql -DMYSQL_TCP_PORT=3306
# make && make install
# cp support-files/mysqld_multi.server /etc/init.d/mysqld
# vi /etc/profile
# /usr/local/mysql/bin/mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=${MYSQL_HOME}/bin:$PATH
# source /etc/profile
配置 my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
#password =
= /mysql/3306/mysql.sock
= /mysql/3306/mysqld.pid
= /mysql/3306
back_log = 50
expire_logs_days = 15
character-set-server = utf8
log_bin_trust_function_creators = 1
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
skip-name-resolve
external-locking = FALSE
skip-external-locking
max_connections = 10240
max_connect_errors = 3072
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 4M
ft_min_word_len = 4
default-storage-engine = INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
binlog_format=mixed
concurrent_insert = 2
max_binlog_cache_size = 8M
slow_query_log
long_query_time = 2
server-id = 1
key_buffer_size = 128M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 1
= /mysql/3307/mysql.sock
= /mysql/3307/mysqld.pid
= /mysql/3307
back_log = 50
character-set-server = utf8
expire_logs_days = 15
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
skip-name-resolve
external-locking = FALSE
skip-external-locking
max_connections = 10240
max_connect_errors = 3072
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 4M
ft_min_word_len = 4
default-storage-engine = INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
binlog_format=mixed
concurrent_insert = 2
max_binlog_cache_size = 8M
slow_query_log
long_query_time = 2
server-id = 1
key_buffer_size = 128M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 1G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
[mysqldump]
max_allowed_packet = 16M
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3306
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3307
# mysql start
# /etc/init.d/mysqld start 1-2
# /etc/init.d/mysqld report 1
# /etc/init.d/mysqld report 2
提交到 docker images
# docker commit 1b60a96a84e8 xiongli/mysql
注意:要退出安装的 docker
# docker run -i -t centos /bin/bash
然后通过 这个命令可以查看 镜像的id
# docker ps -a
CONTAINER ID
1b60a96a84e8
centos:centos7
3 hours ago
Exited (1) 9 minutes ago
agitated_hoover0
查看 commit 的镜像
# docker images
REPOSITORY
VIRTUAL SIZE
xiongli/mysql
39 minutes ago
使用提交的镜像
# docker run -i -t xiongli/mysql /bin/bash
5.docker 安装 ubuntu
# docker pull ubuntu
安装顺序和上面的过程一样,这里不再详细展开
6.docker pull安装mysql
# docker search mysql
找到所需要的 mysql 版本和镜像名,执行下面命令进行安装
# docker pull sawarame/mysql5.6.19
安装完成之后,启动 sawarame/mysql5.6.19
# docker images
访问次数: 4
楼主啊,你那个sshd服务是拿什么命令启动的啊?????service 没有,安装也不行;systemctl也没有;/etc/rc.d/init.d/下面什么都没有
访问次数: 10
哦 是这样的
你做一个脚本
当然 这个 xiongli/mysql 是可以下载的
# docker pull xiongli/mysql
这个机器 是 做监控的,好些cacti 是采集不到数据,所以没有传到docker上面
$ cat /opt/bootstrap.sh
#!/bin/bash
# author: xiongli
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "welcome to xiongli/cacti_nagios"
echo "the system is Ubuntu 14.04.1 LTS"
echo "ssh info: "
echo "the ssh connect username is admin."
echo "the password of admin is admin."
echo "the admin has sudo su privileges, so it is super admin."
echo "mysql info: "
echo "the mysql user is 'root' and 'cacti'"
echo "their password is 'xiongli', but user cacti has all privileges on cacti.* to cacti@'localhost' an cacti@'127.0.0.1'."
echo "cacti web info: "
echo "the username of cacti web is 'admin'."
echo "the password of admin is 'xiongli'."
echo "the host template of general linux is 'General Linux'."
echo "nagios web info: "
echo "the username of cacti web is 'admin'."
echo "the password of admin is 'xiongli'."
echo "the start ssh command is 'docker run -d -p 1022:22 --name cacti xiongli/cacti_nagios /opt/bootstrap.sh'."
echo "the start ssh + apache + cacti + nagios command is 'docker run -d -p 1022:22 -p -p 80:80 --name cacti xiongli/cacti_nagios /opt/bootstrap.sh'."
echo "and so on."
# start ssh
/etc/init.d/ssh start
# lnmp start
/etc/init.d/mysql start
/etc/init.d/apache2 start
# snmpd start
/etc/init.d/snmpd start
# nagios start
/etc/init.d/nagios start
sleep 99999
sleep 99999
sleep 99999
启动的话很简单啦
docker cacti + nagios start:
# docker run -d -p 1025:22 -p 80:80 -p
--name cacti_nagios_1 xiongli/cacti_nagios /opt/bootstrap.sh
访问次数: 10
对了 你如果是用的 Centos 7版本的话,安装软件会提示少个s y s t e mctl类似的软件,还有s y s t e md之类的,但是怎么也装不上去,所以玩centos7 的可要注意下,尽量用
Ubuntu 来入门,因为他还是选择 service 来管理服务项。要不就把centos7降级成centos6。
访问次数: 25
max volume
full screen
Update Required
To play the media you will need to either update your browser to a recent version or update your .}

我要回帖

更多关于 docker 启动mysql容器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信