Docker 备忘

CentOS 安装 Docker CE

sudo yum remove docker docker-client docker-client-latest docker-common \
  docker-latest docker-latest-logrotate docker-logrotate \
  docker-selinux docker-engine-selinux docker-engine

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker

容器时区(含 OpenJDK / Spring Boot)

进容器改:

docker exec -it <container> bash
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# Debian/Ubuntu 镜像还可:
# dpkg-reconfigure -f noninteractive tzdata

启动时注入(推荐):

docker run -e TZ=Asia/Shanghai ...

镜像构建:

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

常用 run 片段

Nginx

docker run -d --name nginx \
  -v /conf/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -v /conf/nginx/conf.d:/etc/nginx/conf.d \
  --restart always -p 80:80 -p 443:443 nginx

官方配置参考:https://github.com/nginxinc/docker-nginx/tree/master/stable/alpine

MySQL 5.7

docker run --name mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  -v /data/mysql:/var/lib/mysql \
  -v /conf/mysql:/etc/mysql/conf.d \
  -p 3306:3306 -d mysql:5.7 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

Redis

docker run --name redis -d \
  -v /data/redis:/data \
  redis redis-server --appendonly yes --requirepass '<password>'

客户端临时连(link 方式,旧网络模型):

docker run -it --link redis:redis --rm redis \
  redis-cli -h redis -p 6379 -a '<password>'

Gradle + Spring Boot(示例)

docker run -u root \
  -v /data/wwwroot/app:/data/wwwroot -w /data/wwwroot \
  --restart always --name app-prod -d -p 8888:8888 \
  gradle gradle bootRun -PjvmArgs="-Dspring.profiles.active=prod"

内网 host 映射、固定 IP 等按实际网络改,勿照抄示例地址。