Docker
-
下載相關的鏡像
$ docker pull <image-name>
-
制定需要的鏡像
$ touch Dockerfile $ vi Dockerfile FROM <image-name> WORKDIR /wo/ COPY ./ /wo/ ENTRYPOINT <command> RUN <command>
-
建立自定義的鏡像
$ docker build . -t <demo:tag>
-
新建docker-compose.yml文件
$ vi docker-compose.yml version: "3.0" services: demo: image: demo:tag container_name: demov1 ports: - "8088:8000" - "本地端口:容器內端口" environment: - ... networks: - demo_net links: - other_demo depends_on: - other_demo command: ... restart: always
-
啓動docker-compose.yml
$ docker-compose up -d $ docker-compose down # 刪除對應的容器
-
在yml文件中 command 測試後存在只能運行部分命令
$ docker-compose run demo <command> # docker-compose run demo ./manage.py migrate $ docker-compose exec demo <command> # docker-compose exec demo uwsgi --ini uwsgi.ini
注意:
- 容器一直處於restarting狀態
command: tail -f /dev/null
- mysql 鏡像注意點-制定鏡像時候,需要修改數據庫權限;否則容器間無法訪問
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql'; FLUSH PRIVILEGES;
- 啓動容器文件存在command無法運行多條命令的問題
- command 直接運行多條
command: bash -c "<command> && <other-command>" # 個人在使用期間,遇到無法執行或者只執行某條(原因並未知道,期待討論)
- docker-compose 命令運行多條
$ docker-compose run <service-name> <command> $ docker-compose exec <service-name> <command> # 其中的具體區別可以查看官方文檔哦
- command 直接運行多條
- windows 和 Mac / Linux 之間有差別
- command: bash -c ""中bash不是內部命令
1. 查看鏡像是否是 alpine 2. 嘗試 /bin/bash /bin/sh sh 3. 嘗試更換原鏡像 4. 利用啓動文件 eg. < /entrypoint.sh mysqld >
- 必須存在啓動命令: 添加command
- command: bash -c ""中bash不是內部命令