Skip to content

Docker Note

Chase Liu edited this page Jul 4, 2017 · 9 revisions

Update Docker Registry Mirrors

$ sudo vim /etc/docker/daemon.json

在其中添加以下属性

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

MySQL

Official Image: https://hub.docker.com/_/mysql/

Custom conf

[mysqld]

# By default we only accept connections from localhost
bind-address   = 0.0.0.0

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Enable binlog (if needed)
log-bin          = /var/lib/mysql/binlog
expire-logs-days = 30
max-binlog-size  = 1024M
server-id        = 1

Docker Run Args

args description
--name mysql
-v /my/own/datadir:/var/lib/mysql default data dir
-v /my/own/confdir:/etc/mysql/conf.d default conf dir
-p 3306:3306 default port. 3306 of the host should be accessible
-e MYSQL_ROOT_PASSWORD=my-secret-pw If data dir contains files of an existing database instance, root password will be omitted anyway.
mysql:5.7 mysql-5.7
$ docker run \
  --name mysql \
  -v /home/jk/data:/var/lib/mysql \
  -v /home/jk/mysql-confs:/etc/mysql/conf.d \
  -p 3306:3306 \
  -d mysql:5.7

Use netstat -tulpen to list host port usage to check the running status of MySQL.

MySQL CLI

$ docker run \
  -it --link mysql:mysql \
  --rm mysql sh \
  -c 'exec mysql -h "$MYSQL_PORT_3306_TCP_ADDR" -P "$MYSQL_PORT_3306_TCP_PORT" -u root -p "$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

# recover from dump
docker exec -i MYSQL-CONTAINER_NAME mysql -u root --password TARGET_DB < dump.sql 

# dump
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

Redis

# run redis-server
$ docker run --name redis -p 6379:6379 -d redis

# run redis-cli
$ docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379 

Clone this wiki locally