Aqui eu criei o container docker que usa a mariadb
imagem e criei três volumes, como abaixo.
docker-compose.yml
version: '2.0'
services:
mariadb:
image: mariadb:latest
restart: always
container_name: mariadb
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=testdb
ports:
- 3307:3306
volumes:
- ./database:/var/lib/mysql
- ./_conf/mariadb.cnf:/etc/mysql/my.cnf:ro
- ./logs:/var/log/mysql
Os dois primeiros volumes funcionam com êxito, mas não consigo encontrar os arquivos mariadb-logs na logs
pasta. Parece logs
pasta mostrando em branco no host, bem como no recipiente (/ var / log / mysql). Acho pasta host substituir no sistema de arquivos docker.
Se eu remover esse volume ( ./logs:/var/log/mysql
) da janela de encaixe, os arquivos de log serão exibidos no contêiner.
Meu plano é montar a /var/log/mysql/
pasta na máquina local.
Obrigado !
docker
docker-compose
Ponteiro nulo
fonte
fonte
chmod 777 /var/log/mysql
seu host, aposto que seu daemon está sendo executado, pois omysql
usuário não tem direitos para escrever neste diretório no seu host. Depois disso, você terá que encontrar o ID do usuário do mysql dentro do contêinerchown
para evitar que todos leiam e escrevam seus logs de banco de dados.Debian
os e apparmor já desativados.Respostas:
Se você usa o CentOS 7 (como eu tenho). Você pode ter o SELinux ativado por padrão.check https://www.rootusers.com/how-to-enable-or-disable-selinux-in-centos-rhel-7/ ou montado assim:
fonte
Se você estiver executando uma distribuição baseada em RedHat, por exemplo, Fedora ou CentOS, poderá ter o SELinux ativado por padrão. Você pode permitir automaticamente que seus contêineres acessem arquivos nos hosts montando com a
:Z
opção, da seguinte maneira:fonte
Se
/var/log/mysql:/var/log/mysql
for definido como um volume, o conteúdo que residir no contêiner/var/log/mysql/
será armazenado na/var/log/mysql/
pasta no host.Pode ser possível que não seja possível montar o
/var/lib/mysql
SElinux ou a armadura do aplicativo está impedindo isso.https://hub.docker.com/_/mysql/
fonte
./database
volume está funcionando bem e, mesmo que eu crie um arquivo na./logs
pasta no host, ele será exibido no contêiner, mas o volume não funcionará na ordem inversa.