1. 程式人生 > >docker版mysql的使用和配置(1)——docker的基本操作

docker版mysql的使用和配置(1)——docker的基本操作

spa uci 信息 5.5 8.0 ash 隨機 server expec

最近實在是忙成狗,其他的內容等稍微閑一點了一起更新。

這篇主要是講docker版的mysql的使用和配置信息。因為實習公司需要搞一個docker做測試環境用,還需要包括基本的依賴。最重要的是,因為這個docker是作為jenkins的slave使用的,所以有可能不能在啟動的時候加參數。這就導致我得把docker版的mysql的整個使用和配置詳細過一遍,看看是否有代替啟動參數的設置方法。

文中涉及到的mysql的基本信息見以下鏈接:

https://hub.docker.com/r/mysql/mysql-server/

https://github.com/mysql/mysql-docker

文章省略了docker的安裝。到官網安一下就好了。

那麽林可死大特。

1. 常規的基本docker版mysql的使用(docker的基本操作):

下載(community版):

docker pull mysql/mysql-server:tag

這裏的tag是指mysql的版本號,比如5.5~5.7,8.0,latest。

docker images

這個是用來查看當前的鏡像的清單。

docker run --name=mysql1 -d mysql/mysql-server:tag

接下來就是運行鏡像,一個最基本的運行語句大概長這個樣子。

--name制定了運行該鏡像的容器(container)的名稱。如果不聲明的話會隨機生成一個。

接著是鏡像的名字。

-d是指明鏡像的運行是扔在後臺的。

docker ps

可以用這個語句來查看當前的image的運行情況。

整個流程簡單來說,就是:pull鏡像,run鏡像,ps看看鏡像是不是起來了。

docker logs mysql1

logs加上容器的名稱,可以看這個容器在運行鏡像時產生的日誌信息。如果ps看到了鏡像沒有正常運行,就可以logs檢查一下。

docker exec -it mysql1 mysql -uroot -p

exec就是在鏡像中執行後面的操作,比如上面就是執行了mysql -uroot -p。

docker exec -it mysql1 bash 

為了方便在鏡像中執行bash命令,也可以執行這樣的命令來開一個bash。

docker stop mysql1

這樣可以停止container的運行。想刪除container首先要停止container。想刪除image首先要刪除container。總之是一環扣一環的。

2. docker版mysql和普通版mysql的區別

Docker images for MySQL are optimized for code size, which means they only include crucial components that are expected to be relevant for the majority of users who run MySQL instances in Docker containers.

按官網的說法,docker版的mysql只包含了必要的部分。清單如下:

/usr/bin/my_print_defaults

/usr/bin/mysql

/usr/bin/mysql_config

/usr/bin/mysql_install_db

/usr/bin/mysql_tzinfo_to_sql

/usr/bin/mysql_upgrade

/usr/bin/mysqladmin

/usr/bin/mysqlcheck

/usr/bin/mysqldump

/usr/bin/mysqlpump

/usr/sbin/mysqld

3. docker版mysql的使用

前面提到了查看log的方法。docker版mysql的默認配置是:第一次的root密碼是隨機生成的。所以想用root賬戶登陸,首先要查看隨機生成的密碼。

shell> docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs

然後就可以-uroot -p登錄了。

登錄之後的第一件事,就是改root密碼。

mysql> ALTER USER root@localhost IDENTIFIED BY password;

其他的就跟本地運行mysql差不多了。

註意的一點是,我們剛剛run docker的命令中,並沒有把docker中的端口和本機的端口進行映射。所以雖然mysql雖然啟動了,但是不能通過3306或者其他端口進行訪問。

想跟在本機一樣的話,就要在啟動docker容器的時候對docker和本機的端口進行映射。

docker run -p ip:hostPort:containerPort

docker版mysql的使用和配置(1)——docker的基本操作