- 創建Dockerfile(以mysql 5.7爲例)
可以從Docker Hub上下載官方Dockerfile,以及docker-entrypoint.sh
具體內容太長,還是在Docker Hub上看的吧 - 創建鏡像
進入到Dockerfile目錄,執行下面的命令:
docker build -t mysql .
注意後面的的點,表示在當前目錄。
創建完之後,就可以通過docker images
,看到剛創建的鏡像了。
這裏可以看到生成了兩個鏡像,一個是mysql的,一個是基礎鏡像:debian, - 生成容器
docker run --name mymysql -d mysql:latest \
> -p 3306:3306 -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data \
> -e MYSQL_ROOT_PASSWORD=123456
再通過docker ps
,就可以看到剛剛生成的容器:
參數說明:
-p 3306:3306:將容器的3306端口映射到主機的3306端口。
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf:將主機當前目錄下的 conf/my.cnf掛載到容器
-v $PWD/logs:/logs:將主機當前目錄下的logs目錄掛載到容器的/logs
-v $PWD/data:/mysql_data:將主機當前目錄下的data目錄掛載到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用戶的密碼 - 進入容器
執行命令docker exec -it mymysql /bin/bash
進入容器。
顯示的主機名即爲容器ID:
docker exec參數說明:
-d :分離模式: 在後臺運行
-i :即使沒有附加也保持STDIN 打開 (小白不懂啥意思,貌似就是可交互的意思)
-t :分配一個僞終端(tty) - 期間遇到的問題
生成容器的過程中總是報RPC錯誤
docker: Error response from daemon: rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: not a directory".
我網上查了一下,說是32位系統不兼容的問題,但是我裝的是64位系統。我看是目錄問題,就把docker run的-p參數去掉執行,還是報錯,不過變成了docker: Error response from daemon: Container command 'docker-entrypoint.sh' not found or does not exist..
,找不到docker-entrypoint.sh文件,網上查也沒有找到答案。折騰了好久,才發現我的docker-entrypoint.sh沒有可執行權限,於是,就chmod -x docker-entrypoint.sh,可是不知道爲啥docker-entrypoint.sh還是不可執行,就直接執行了 chmod 777 docker-entrypoint.sh,終於可以了。
利用Dockerfile創建鏡像並生成容器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.