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不是内部命令