docker mysql容器的安裝使用


 

 docker拉取鏡像的命令為

docker pull image[:TAG]

如果我們想安裝的mysql版本不是最新的版本,則需要填充TAG,如果不帶上TAG,則默認安裝的為最新版本,雖然可以通過docker search查詢相關的鏡像信息,但該命令不會顯示其TAG,我們可以通過docker hub官網來獲取到docker中鏡像的TAG,如查詢mysql的TAG

1、登錄docker hub網站https://hub.docker.com/,並搜索mysql,得到mysql相關的Containers

2、點擊右側查詢出的mysql container(https://hub.docker.com/_/mysql?tab=tags),並選擇TAGS標簽,即可看到mysql相關的TAG

這里我們安裝的是8.0.17的mysql

一、拉取鏡像(如果使用docker run命令,可以忽略該步,docker run在不存在鏡像的情況下,會自動拉取鏡像,並且啟動該鏡像對應的容器,如果已經存在鏡像,則直接啟動鏡像對應容器)

docker pull mysql:8.0.17

二、啟動mysql容器,其中--name為指定容器名稱,-p暴露內部容器端口給宿主機,前一個端口為宿主機端口, -e為設置環境變量,-d為后台運行,mysql:8.0.17為鏡像名稱,這個表示我們要啟動的鏡像,如果不存在,則會下載一個8.0.17的鏡像。如果已經拉取了鏡像,也可以將mysql:8.0.17

替換成docker images查詢出的IMAGE ID

docker run --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 -d mysql:8.0.17

三、查看容器運行狀態

docker ps

四、進入l容器,退出容器可以使用exit。其中也可以使用NAMES列對應mysql_test代替CONTAINER ID,下同

docker exec -it a77ede15e664 bash

五、連接容器中mysql。若宿主機安裝了mysql客戶端,則可以通過mysql -uroot -p -h 127.0.0.1連接,注意,必須要添加上-h,因為宿主機連接mysql容器需要通過tcp,而宿主機連接宿主機本地的mysql則不需要,使用socket就可以連接。如果宿主機未安裝mysql客戶端,則可通過如下命令連接mysql容器中mysql server

docker exec -it a77ede15e664 bash -c "mysql -uroot -p"

六、停止容器。通過docker ps查看已經不存在運行中的容器了

docker stop a77ede15e664

七、查看所有容器。可以看到上一步驟停止mysql容器后,mysql處於Exited狀態

docker ps -a

八、啟動一個停止的容器

docker start a77ede15e664

九、查看某個容器的具體信息

docker inspect a77ede15e664

十、查看當前宿主機已存在鏡像

docker images

十一、刪除容器。刪除前先停止容器,否則將會出現如下錯誤,-f為強制停止,最好不要使用。按照正常操作先停止再刪除

[root@localhost ~]# docker rm a77ede15e664
Error response from daemon: You cannot remove a running container a77ede15e6644527b4e55b8660347f23a331a75bab03511aea1f7c10761ef807. Stop the container before attempting removal or use -f
[root@localhost ~]#

十二、刪除鏡像。刪除鏡像前可以通過docker images查詢當前鏡像的信息,並根據IMAGE ID刪除,刪除鏡像時需要保證該鏡像沒有容器在使用,否則會出現如下錯誤

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     8.0.17              2151acc12881        3 weeks ago         445 MB
[root@localhost ~]# docker rmi 2151acc12881
Error response from daemon: conflict: unable to delete 2151acc12881 (cannot be forced) - image is being used by running container a77ede15e664
[root@localhost ~]# 

十三、拷貝文件。如下示例為在宿主機新建一個test文件,並填充內容,將該文件拷貝到mysql容器/下,進入到容器,並查看拷貝的文件內容(MySQ配置文件在容器中的位置為/etc/mysql/my.cnf)

[root@localhost ~]# echo "it is a test" >> test
[root@localhost ~]# docker cp test a77ede15e664:/
[root@localhost ~]# docker exec -it a77ede15e664 bash
root@a77ede15e664:/# ls
bin  boot  dev    docker-entrypoint-initdb.d  entrypoint.sh  etc    home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test  tmp  usr  var
root@a77ede15e664:/# cat test 
it is a test
root@a77ede15e664:/# 

 十四、查看容器相關日志

docker logs a77ede15e664

 

mysql在docker中安裝也可以參照mysql官方文檔

https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-getting-started.html

 

另外,在啟動mysql時,如果不確定mysql啟動可配置的啟動環境參數是那些,可以先通過docker ps --no-trunc查找到當前容器啟動時使用的COMMAND,然后找到其中對應的sh文件,在里面即可查找到可以設置的環境變量

如mysql使用command

find / -name docker-entrypoint.sh查找出該sh文件后,打開,可以找到我們在上面啟動mysql時所使用的環境變量MYSQL_ROOT_PASSWORD,通過該腳本,也可以看出,如果我們不希望設置密碼,添加環境變量MYSQL_ALLOW_EMPTY_PASSWORD即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM