細述docker容器建立MariaDB映象

2022-08-27 18:39:07 字數 4898 閱讀 5906

基於commit命令方式建立

docker的安裝

[root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable docker [root@test01 ~]# systemctl start docker

[root@test01 ~]# docker pull centos:7.4.1708 [root@test01 ~]# docker images repository tag image id created size docker.io/centos 7.4.1708 3afd47092a0e 3 months ago 196.6 mb

建立互動型容器

[root@test01 ~]# docker run -it --name="mysql_server" centos /bin/bash

安裝mariadb服務

[root@e8126d0481d2 /]# yum -y install mariadb-server net-tools

初始化mariadb

[root@e8126d0481d2 /]# mysql_install_db --user=mysql

後台啟動mariadb服務

[root@e8126d0481d2 /]# mysqld_safe & [1] 114 [root@e8126d0481d2 /]# 180210 13:45:27 mysqld_safe logging to '/var/log/mariadb/mariadb.log'. 180210 13:45:27 mysqld_safe starting mysqld daemon with databases from /var/lib/mysql

[root@e8126d0481d2 /]# netstat -tunpl active internet connections (only servers) proto recv-q send-q local address foreign address state pid/program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* listen -

建立mariadb登入密碼,並可以指定ip登入

[root@e8126d0481d2 /]# mysqladmin -u root password '123456' [root@e8126d0481d2 /]# mysql -u root -p enter password: mariadb [(none)]> show databases; mariadb [(none)]> use mysql; mariadb [mysql]> select host from user where user='root'; mariadb [mysql]> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; mariadb [mysql]> update user set password=password('123456') where user='root' and host='e8126d0481d2'; mariadb [mysql]> flush privileges; mariadb [mysql]> exit

容器登入驗證

[root@e8126d0481d2 /]# mysql -u root -h 172.17.0.2 -p enter password: mariadb [(none)]> exit

建立容器啟動指令碼

[root@e8126d0481d2 ~]# cat run.sh #!/bin/sh

mysqld_safe

建立映象

[root@test01 ~]# docker ps -a container id image command created status ports names e8126d0481d2 centos "/bin/bash" 11 minutes ago exited (0) 8 seconds ago mysql_server [root@test01 ~]# docker commit mysql_server mariadb:1.0

建立容器

[root@test01 ~]# docker run -d -p 13306:3306 mariadb:1.0 /root/run.sh [root@test01 ~]# docker ps container id image command created status ports names eed3e88a1261 mariadb:1.0 "mysqld_safe" 4 seconds ago up 3 seconds 0.0.0.0:13306->3306/tcp romantic_hamilton

主機登入驗證

[root@test01 ~]# yum -y install mariadb [root@test01 ~]# mysql -u root --port=13306 -p mariadb [(none)]>

基於dockerfile方式建立

設定建立目錄和檔案 [root@test01 ~]# mkdir mariadb_dockerfile && cd mariadb_dockerfile [root@test01 mariadb_dockerfile]# touch db_init.sh [root@test01 mariadb_dockerfile]# touch run.sh

編輯dockerfile等檔案 dockerfile [root@test01 mariadb_dockerfile]# cat dockerfile

#使用的基礎映象 from centos:7.4.1708

#新增作者資訊 maintainer liuxin [email protected]

#安裝mariadb資料庫 run yum -y install mariadb-server

#設定環境變數,便於管理 env mariadb_user root env mariadb_pass 123456 #讓容器支援中文 env lc_all en_us.utf-8

#初始化資料庫 add db_init.sh /root/db_init.sh run chmod 775 /root/db_init.sh run /root/db_init.sh

#匯出埠 expose 3306

#新增啟動檔案 add run.sh /root/run.sh run chmod 775 /root/run.sh

#設定預設啟動命令 cmd ["/root/run.sh"] db_init.sh

[root@test01 mariadb_dockerfile]# cat db_init.sh #!/bin/bash

mysql_install_db --user=mysql sleep 3 mysqld_safe & sleep 3 #mysqladmin -u "$mariadb_user" password "$mariadb_pass" mysql -e "use mysql; grant all privileges on *.* to '$mariadb_user'@'%' identified by '$mariadb_pass' with grant option;" h=$(hostname) mysql -e "use mysql; update user set password=password('$mariadb_pass') where user='$mariadb_user' and host='$h';" mysql -e "flush privileges;" run.sh

[root@test01 mariadb_dockerfile]# cat run.sh #!/bin/bash mysqld_safe

建立映象

[root@test01 mariadb_dockerfile]# docker build -t liuxin/centos-mariadb:v1 ./

建立容器

[root@test01 mariadb_dockerfile]# docker run -d -p 13306:3306 liuxin/centos-mariadb:v1 /root/run.sh [root@test01 mariadb_dockerfile]# docker ps container id image command created status ports names 7743527ac603 liuxin/centos-mariadb:v1 "/root/run.sh" 5 seconds ago up 3 seconds 0.0.0.0:13306->3306/tcp nostalgic_mirzakhani

登入驗證

Docker建立容器

容器是映象的乙個執行例項,是基於映象執行的輕量級環境,是乙個或者一組應用。怎樣建立容器?將容器所基於的映象名稱傳入即可,docker會從本地倉庫中尋找該映象,如果本地倉庫沒有,則會自動從遠端倉庫中拉取。docker pull nginx 拉取nginx最新版本的映象 檢視映象 建立nginx容器 d...

Docker建立MySQL容器

本文目的是建立乙個mysql的image,並且在新建立出來的容器裡自動啟動mysql服務接受外部連線 步驟 1.首先建立乙個目錄並在目錄下建立乙個dockerfile,檔案內容如下 from centos centos6 maintainer fanbin kong kongxx hotmail.c...

Docker建立MySQL容器

本文目的是建立乙個mysql的image,並且在新建立出來的容器裡自動啟動mysql服務接受外部連線 步驟 1.首先建立乙個目錄並在目錄下建立乙個dockerfile,檔案內容如下 from centos centos6 maintainer fanbin kong kongxx hotmail.c...