利用Dockerfile建立映象並生成容器
阿新 • • 發佈:2018-12-26
- 建立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..