再开一篇文章总结这几天的容器部署和docker-compose应用。

下面是项目容器部署的docker-compose.yml文件:

version: '2'
services:
    flask:
        container_name: flask1          #容器命名,若不设置会以文件夹名+项目名+编号来命名。
        network_mode: "bridge"        #统一使用bridge的话就可以使容器ip在同一网段,若不写的话会在不同网段容器无法相互访问。
        depends_on:                           #依赖下面mysql,这样可使mysql先启动
            - mysql
        build: /root/docker/flask        #使用该路径下的Dockerfile构建镜像
        #image: flask
        volumes:
            - "/tmp/bluelog/images:/root/bluelog/bluelog/images"   #挂载容器目录,宿主机:容器
        ports:
            - "1234:5678"
        command: /bin/bash
        stdin_open: true                    #这两行是给容器分配一个伪终端,不然容器运行后会自动退出,就像docker run里面的-it命令
        tty: true
    mysql:
        network_mode: "bridge"
        container_name: mysql1
        environment:
            MYSQL_ROOT_PASSWORD: "123456"
        image: "mysql:latest"
        restart: always
        volumes:
            - "/tmp/mysql:/var/lib/mysql"
        ports:
            - "33060:3306"

1、文件目录挂载失败很可能是宿主机的文件夹没有权限或者本身里面有文件却没权限修改。

2、使用docker-compose运行容器后就自动退出,原因是上面注释说的没有分配伪终端。

3、本来想把容器的mysql的目录挂载到度主机另一个有数据的mysql存储目录,以为这样就可以直接使用那些数据,最后发现我在想peach。

4、docker-compose的作用是做容器的编排,可以把同一项目的多个容器一起启动运行。

5、docker inspect +容器id,可以查看关于容器的所有信息。

 


1 Comments latest

  • myself

    这里只是简单的应用,复杂深层次的应用有待研究。