操作系统基础镜像

名称 大小 包管理 场景
busybox 1.xMB apk, lbu 超级简化版嵌入式
alpine 5.x MB apk, lbu Alpine是一个面向安全的、轻量级的Linux系统,基于musl libc和busybox
ubuntu 70~80 MB apt-get, dpkg 非常出色的Linux发行版
debian 120~+/- MB apt-get, dpkg 非常出色的Linux发行版,很多基于它的发行版
centos 200+ MB yum, rpm CentOS是RedHat的社区版

编程语言基础镜像

名称 tag 说明
java openjdk:11 由于oracle jdk版本,不提供docker官方,可手动下载打docker镜像
python 3.9.7-alpine3.14
go 1.16.8-alpine3.14
nodejs 14-alpine3.12/16-alpine3.12

个人常用工具及应用

名称 tag 说明
maven 3.8.2-jdk-8-slim/3.8.2-openjdk-17
jenkins 2.60.3
GitLab gitlab/gitlab-ce
yearning 2.3.5
mysql 8.0.26
nginx stable-alpine, 1.20-alpine

alpine的工小具

名称 用途 说明
alpine/k8s CI/CD相关的时候 Kubernetes toolbox for EKS (kubectl, helm, iam-authenticator, eksctl, etc)
alpine/git 临时的git command A simple git container running in alpine linux, especially for tiny linux distro.
alpine/helm heam相关 Auto-trigger docker build for kubernetes helm when new release is announced
alpine/jmeter 压测
alpine/dfimage 解析镜像中的内容,便于重新反写Dockerfile文件 reverse Docker images into Dockerfiles
alpine/ansible 运维管理工作

运行一些常用docker的命令

mysql server :

1
docker run --name mysql8 -v /data/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0.26 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

redis:

1
run -d --name redis -p 6379:6379 -v /mnt/redis/data:/data -v /mnt/redis/conf/redis.conf:/etc/redis/redis.conf redis:4 --requirepass "redispass"

portainer:

1
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

elasticsearch:

1
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx768m" -d elasticsearch:7.12.0

运行一个操作系统或某种环境,在后台:

1
docker run -d centos /bin/bash -c "while true;do echo hello ;sleep 3;done"

jenkins:

1
2
docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins

git:

1
docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git clone https://github.com/alpine-docker/git.git

dfimage:

1
2
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 nginx:latest # (It will pull the target docker image automaticlaly. Parameter -sV=1.36 is not always required.)

ansible:

1
2
3
4
5
alias ansible="docker run -ti --rm -v ~/.ssh:/root/.ssh -v ~/.aws:/root/.aws -v $(pwd):/apps -w /apps alpine/ansible ansible"
ansible <follow command>

alias ansible-playbook=" docker run -ti --rm -v ~/.ssh:/root/.ssh -v ~/.aws:/root/.aws -v $(pwd):/apps -w /apps alpine/ansible ansible-playbook"
ansible-playbook -i inventory < follow command>

几个Dockerfile

mysql client

1
2
3
4
FROM alpine:latest
RUN echo https://mirrors.aliyun.com/alpine/latest-stable/main/ > /etc/apk/repositories
RUN apk add --no-cache mysql-client

jdk 17(这里如果使用alpine的话,有报错,因此采用ubuntu镜像):

1
2
3
4
5
FROM ubuntu:20.04
ADD jdk-17_linux-x64_bin.tar.gz /root
ENV JAVA_HOME /root/jdk-17/
ENV PATH $PATH:$JAVA_HOME/bin
ENTRYPOINT ["java", "-version"]

go:

1
2
3
4
5
6
7
8
9
FROM golang:1.17

WORKDIR /go/src/app
COPY . .

RUN go get -d -v ./...
RUN go install -v ./...

CMD ["app"]

Yearning:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM alpine:3.12

LABEL maintainer="HenryYee-2020/11/16"

EXPOSE 8000

COPY Yearning /opt/Yearning
COPY conf.toml /opt/conf.toml

RUN echo "http://mirrors.ustc.edu.cn/alpine/v3.12/main/" > /etc/apk/repositories && \
apk add --no-cache tzdata libc6-compat && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" >> /etc/timezone && \
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf

WORKDIR /opt

CMD /opt/Yearning install && /opt/Yearning run