• Stars
    star
    785
  • Rank 57,957 (Top 2 %)
  • Language
  • Created about 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐳 Docker入门学习笔记

Docker 入门教程

Docker 是一个开源的应用容器引擎,而一个容器containers其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 的局限性之一,它只能用在 64 位的操作系统上。

目录

Docker 从 1.13 版本之后采用时间线的方式作为版本号,分为社区版 CE 和企业版 EE,社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照 stableedge 两种方式发布,每个季度更新 stable 版本,如 17.0617.09;每个月份更新 edge 版本,如17.0917.10

下面教程运行在 Centos

新版本安装

Docker 官方的安装教程,在这里

安装一些必要的系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

# docker 官方源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

可选:启用 edgetest 存储库。 这些存储库包含在上面的 docker.repo 文件中,但默认情况下处于禁用状态。您可以将它们与稳定存储库一起启用。

$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test

您可以通过使用 --disable 标志运行 yum-config-manager 命令来禁用边缘或测试存储库。 要重新启用它,请使用 --enable 标志。 以下命令禁用 edge 存储库:

$ sudo yum-config-manager --disable docker-ce-edge
$ sudo yum-config-manager --disable docker-ce-test

安装 Docker-ce

# 安装前可以先更新 yum 缓存:
sudo yum makecache fast
# 安装 Docker-ce
sudo yum install docker-ce

如果你想安装特定 docker-ce 版本,先列出 repo 中可用版本,然后选择安装

$ yum list docker-ce --showduplicates | sort -r
# docker-ce.x86_64       18.06.1.ce-3.el7              docker-ce-stable
# docker-ce.x86_64       18.06.1.ce-3.el7              @docker-ce-stable
# docker-ce.x86_64       18.06.0.ce-3.el7              docker-ce-stable
# docker-ce.x86_64       18.03.1.ce-1.el7.centos       docker-ce-stable
# docker-ce.x86_64       18.03.0.ce-1.el7.centos       docker-ce-stable
# docker-ce.x86_64       17.12.1.ce-1.el7.centos       docker-ce-stable
# 选择版本安装
$ sudo yum install docker-ce-<VERSION STRING>

# 选择安装 docker-ce-18.06.1.ce
$ sudo yum install docker-ce-18.06.1.ce

启动 Docker 后台服务

$ sudo systemctl start docker

通过运行 hello-world 镜像,验证是否正确安装了 docker

$ docker run hello-world

旧版本安装

yum install docker        # CentOS 中安装
apt-get install docker-ce # Ubuntu 中安装
pacman -S docker          # Arch 中安装
emerge --ask docker       # Gentoo 中安装

#=====================
docker version      # 通过查看版本,检查安装是否成功
# Client:
#  Version:         1.12.6
#  API version:     1.24
#  Package version: docker-1.12.6-55.gitc4618fb.el7.centos.x86_64
#  Go version:      go1.8.3
#  Git commit:      c4618fb/1.12.6
#  Built:           Thu Sep 21 22:33:52 2017
#  OS/Arch:         linux/amd64
# 
# Server:
#  Version:         1.12.6
#  API version:     1.24
#  Package version: docker-1.12.6-55.gitc4618fb.el7.centos.x86_64
#  Go version:      go1.8.3
#  Git commit:      c4618fb/1.12.6
#  Built:           Thu Sep 21 22:33:52 2017
#  OS/Arch:         linux/amd64

命令介绍

$ docker --help

管理命令:
  container   管理容器
  image       管理镜像
  network     管理网络
命令:
  attach      介入到一个正在运行的容器
  build       根据 Dockerfile 构建一个镜像
  commit      根据容器的更改创建一个新的镜像
  cp          在本地文件系统与容器中复制 文件/文件夹
  create      创建一个新容器
  exec        在容器中执行一条命令
  images      列出镜像
  kill        杀死一个或多个正在运行的容器    
  logs        取得容器的日志
  pause       暂停一个或多个容器的所有进程
  ps          列出所有容器
  pull        拉取一个镜像或仓库到 registry
  push        推送一个镜像或仓库到 registry
  rename      重命名一个容器
  restart     重新启动一个或多个容器
  rm          删除一个或多个容器
  rmi         删除一个或多个镜像
  run         在一个新的容器中执行一条命令
  search      在 Docker Hub 中搜索镜像
  start       启动一个或多个已经停止运行的容器
  stats       显示一个容器的实时资源占用
  stop        停止一个或多个正在运行的容器
  tag         为镜像创建一个新的标签
  top         显示一个容器内的所有进程
  unpause     恢复一个或多个容器内所有被暂停的进程

服务管理

service docker start       # 启动 docker 服务,守护进程
service docker stop        # 停止 docker 服务
service docker status      # 查看 docker 服务状态
chkconfig docker on        # 设置为开机启动

镜像管理

镜像可以看做我们平时装系统的镜像,里面就是一个运行环境。

docker pull centos:latest  # 从docker.io中下载centos镜像到本地
docker images              # 查看已下载的镜像
docker rmi [image_id]      # 删除镜像,指定镜像id

# 删除所有镜像
# none 默认为 docker.io
docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)

# 连接进行进入命令行模式,exit命令退出。
docker run -t -i nginx:latest /bin/bash

通过容器创建镜像

我们可以通过以下两种方式对镜像进行更改。

  1. 从已经创建的容器中更新镜像,并且提交这个镜像
  2. 使用 Dockerfile 指令来创建一个新的镜像

下面通过已存在的容器创建一个新的镜像。

docker commit -m="First Docker" -a="wcjiang" a6b0a6cfdacf wcjiang/nginx:v1.2.1

上面命令参数说明:

  • -m 提交的描述信息
  • -a 指定镜像作者
  • a6b0a6cfdacf 记住这个是容器id,不是镜像id
  • wcjiang/nginx:v1.2.1 创建的目标镜像名

通过Dockerfile创建镜像

假设创建一个 node.js 镜像,首先在 node.js 项目根目录创建文件。

touch Dockerfile .dockerignore

.dockerignore 文件内容,下面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。

.git
node_modules
npm-debug.log

Dockerfile 文件内容

FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
  • FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node
  • COPY . /app:将当前目录下的所有文件(除了 .dockerignore 排除的路径),都拷贝进入 image 文件的 /app 目录。
  • WORKDIR /app:指定接下来的工作路径为/app
  • RUN npm install:在/app目录下,运行 npm install 命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
  • EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。

有了 Dockerfile 文件以后,就可以使用 docker image build 命令创建 image 文件了。

$ docker image build -t koa-demo .
# 或者
$ docker image build -t koa-demo:0.0.1 .

上面命令,-t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是 latest。注意后面有个 .,表示 Dockerfile 文件所在的路径为当前路径

docker run --name koa-demo-name --rm -d -p 9066:3000 koa-demo:latest
# 或者
docker run --name koa-demo-name --rm -d -p 9066:3000 koa-demo:0.0.1

上面命令,将刚创建的 koa-demo 景象跑起来,命令的 --rm 参数,在容器终止运行后自动删除容器文件。

发布自己的镜像

  1. Docker 注册账户,发布的镜像都在这个页面里展示
  2. 将上面做的镜像nginx,起个新的名字nginx-test
docker tag wcjiang/nginx:v1.2.1 wcjiang/nginx-test:lastest
  1. 登录docker
docker login
  1. 上传nginx-test镜像
docker push wcjiang/nginx-test:lastest
# The push refers to a repository [docker.io/wcjiang/nginx-test]
# 2f5c6a3c22e3: Mounted from wcjiang/nginx
# cf516324493c: Mounted from wcjiang/nginx
# lastest: digest: sha256:73ae804b2c60327d1269aa387cf782f664bc91da3180d10dbd49027d7adaa789 size: 736

镜像中安装软件

通常情况下,使用docker官方镜像,如 mysql镜像,默认情况下镜像中啥软件也没有,通过下面命令安装你所需要的软件:

# 第一次需要运行这个命令,确保源的索引是最新的
# 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引
apt-get update
# 做过上面更新同步之后,可以运行下面的命令了
apt-get install vim

如果你安装了CentOS或者Ubuntu系统可以进入系统安装相关软件

# 进入到centos7镜像系统
docker run -i -t centos:7 /bin/bash
yum update
yum install vim

容器管理

容器就像一个类的实例

# 列出本机正在运行的容器
docker container ls
# 列出本机所有容器,包括终止运行的容器
docker container ls --all
docker start [containerID/Names] # 启动容器
docker stop [containerID/Names]  # 停止容器
docker rm [containerID/Names]    # 删除容器
docker logs [containerID/Names]  # 查看日志
docker exec -it [containerID/Names] /bin/bash  # 进入容器

# 从正在运行的 Docker 容器里面,将文件拷贝到本机,注意后面有个【点】拷贝到当前目录
docker container cp [containID]:[/path/to/file] .

docker run centos echo "hello world"  # 在docker容器中运行hello world!
docker run centos yum install -y wget # 在docker容器中,安装wget软件
docker ps                             # 列出包括未运行的容器
docker ps -a                          # 查看所有容器(包括正在运行和已停止的)
docker logs my-nginx                  # 查看 my-nginx 容器日志

docker run -i -t centos /bin/bash     # 启动一个容器
docker inspect centos                 # 检查运行中的镜像
docker commit 8bd centos              # 保存对容器的修改
docker commit -m "n changed" my-nginx my-nginx-image # 使用已经存在的容器创建一个镜像
docker inspect -f {{.State.Pid}} 44fc0f0582d9        # 获取id为 44fc0f0582d9 的PID进程编号
# 下载指定版本容器镜像
docker pull gitlab/gitlab-ce:11.2.3-ce.0

容器服务管理

docker run -itd --name my-nginx2 nginx  # 通过nginx镜像,【创建】容器名为 my-nginx2 的容器
docker start my-nginx --restart=always  # 【启动策略】一个已经存在的容器启动添加策略
    # no - 容器不重启
    # on-failure - 容器推出状态非0时重启
    # always - 始终重启
docker start my-nginx             # 【启动】一个已经存在的容器
docker restart my-nginx           # 【重启】容器
docker stop my-nginx              # 【停止运行】一个容器
docker kill my-nginx              # 【杀死】一个运行中的容器
docker rename my-nginx new-nginx  # 【重命名】容器
docker rm new-nginx               # 【删除】容器

进入容器

  1. 创建一个守护状态的 Docker 容器
docker run -itd my-nginx /bin/bash
  1. 使用docker ps查看到该容器信息
docker ps
# CONTAINER ID  IMAGE  COMMAND      CREATED          STATUS          PORTS    NAMES
# 6bd0496da64f  nginx  "/bin/bash"  20 seconds ago   Up 18 seconds   80/tcp   high_shirley
  1. 使用docker exec命令进入一个已经在运行的容器
docker exec -it 6bd0496da64f /bin/bash

通常有下面几种方式进入Docker的容器,推荐使用 exec,使用 attach 一直进入失败。

文件拷贝

从主机复制到容器 sudo docker cp host_path containerID:container_path
从容器复制到主机 sudo docker cp containerID:container_path host_path

Docker私有仓库搭建

通过官方提供的私有仓库镜像registry来搭建私有仓库。通过 humpback 快速搭建轻量级的Docker容器云管理平台。关于仓库配置说明请参见configuration.md

⚠️ 注意:也可以通过部署管理工具 Harbor 来部署 registry

除了 Harbor 还有 humpbackrancher

registry

docker pull registry:2.6.2

创建容器并运行,创建成功之后,可访问 http://192.168.99.100:7000/v2/,来检查仓库是否正常运行,当返回 {} 时,表示部署成功。

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  registry:2

# 自定义存储位置
docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v $HOME/_docker/registry:/var/lib/registry \
  registry:2

docker run -d -p 5000:5000 --restart=always --name registry \
    -v `pwd`/config.yml:/etc/docker/registry/config.yml \
    registry:2

推送镜像到私有仓库

# 从官方仓库拉取一个镜像
docker pull nginx:1.13
# 为镜像 `nginx:1.13` 创建一个新标签 `192.168.31.69:7000/test-nginx:1.13`
docker tag nginx:latest 192.168.31.69:5000/test-nginx:1.13
# 推送到私有仓库中
docker push 192.168.31.69:5000/test-nginx:1.13
# The push refers to a repository [192.168.99.100:7000/test-nginx]
# Get https://192.168.99.100:7000/v1/_ping: http: server gave HTTP response to HTTPS client

在推送到的时候报错误,默认是使用 https 提交,这个搭建的默认使用的是 http,解决方法两个:

  1. 创建一个 https 映射
  2. 将仓库地址加入到不安全的仓库列表中

我们使用第二种方法,加入到不安全的仓库列表中,修改docker配置文件 vi /etc/docker/daemon.json 添加 insecure-registries 配置信息,如果 daemon.json 文件不存在可以创建,关键配置项,将仓库将入到不安全的仓库列表中。

{
  "insecure-registries":[
    "192.168.31.69:5000"
  ]
}

如果是 macOS 可以通过 docker 客户端,Preferences => Advanced => 添加配置 => Apply & Restart,重启docker就可以了。

重启服务 service docker restart,默认情况下 push 是会报如下错误的:

docker push 192.168.99.100:7000/test-nginx:1.13
# The push refers to a repository [192.168.99.100:7000/test-nginx]
# a1a53f8d99b5: Retrying in 1 second
# ...
# received unexpected HTTP status: 500 Internal Server Error

上面错误是 SELinux 强制访问控制安全系统,阻止导致的错误,通过下面方法禁用 SELinux 之后就可以 push 了。

setenforce 0  
getenforce   
# Permissive  
# 停止本地 registry
docker container stop registry
# 要删除容器,请使用 docker container rm
docker container stop registry && docker container rm -v registry
# 自定义存储位置

Harbor

部署 registry 管理工具 Harbor

Docker REST API

Docker 不仅可以通过本地命令行 docker 命令进行调用,还可以通过开启远程控制 API,使用 HTTP 调用接口来进行访问,远程控制 Docker Daemon 来做很多操作。Docker 的远程 API 服务默认监听的是 TCP 2375 端口,为了保证安全,Docker 安装后默认不会启用远程 API 服务,因为这个服务默认不做权限认证。

CentOS

CentOS 的开启方法比较简单,先修改配置:

vim /usr/lib/systemd/system/docker.service

# 修改 `ExecStart` 配置项,默认如下:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

# 增加一个 `-H tcp://0.0.0.0:2375` 选项
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock

如果是内网生产环境,也可以将 0.0.0.0 改为内网 IP。同样的,2375 端口也可以修改。但是这样可能还有一个问题,无法在命令行使用 docker 命令了,还需要添加 sock 选项:-H unix:///var/run/docker.sock,最后为:

ExecStart=/usr/bin/dockerd -H fd:// -H unix:///var/run/docker.sock -H tcp://10.105.3.115:2375 --containerd=/run/containerd/containerd.sock

修改完配置之后需要重启 Docker 服务:

systemctl daemon-reload
systemctl restart docker
sudo service docker restart

重启完成后,可以使用 netstat 查看端口是否监听来确认是否成功:

[root@VM-3-115-centos ~]# netstat -nutlp | grep 2375
tcp   0   0 10.105.3.115:2375   0.0.0.0:*     LISTEN    32316/dockerd

MacOS

在 Mac 下无法直接修改配置文件来开启远程 API 服务,后来在 docker/for-macissue 中得到了解决方案。

可以运行一个 bobrik/socat 容器,将 unix socket 上的 Docker API 转发到 MacOS 上指定的端口中:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock

测试

启用成功后,可以进行一些测试,例如直接使用浏览器访问 info 和 version 等页面获取信息。

http://127.0.0.1:2375/info
http://127.0.0.1:2375/version

下面可测试 docker 是否启动了

curl -s --unix-socket /var/run/docker.sock http://dummy/containers/json
## 或者使用下面命令
docker info

使用Docker实战

⚠文件挂载注意:docker 禁止用主机上不存在的文件挂载到 container 中已经存在的文件

-d, --detach=false      # 指定容器运行于前台还是后台,默认为false   
-i, --interactive=false # 打开STDIN,用于控制台交互  
-t, --tty=false         # 分配tty设备,该可以支持终端登录,默认为false  
-u, --user=""           # 指定容器的用户  
-a, --attach=[]         # 登录容器(必须是以docker run -d启动的容器)
-w, --workdir=""        # 指定容器的工作目录 
-c, --cpu-shares=0      # 设置容器CPU权重,在CPU共享场景使用  
-e, --env=[]            # 指定环境变量,容器中可以使用该环境变量  
-m, --memory=""         # 指定容器的内存上限  
-P, --publish-all=false # 指定容器暴露的端口  
-p, --publish=[]        # 指定容器暴露的端口 
-h, --hostname=""       # 指定容器的主机名  
-v, --volume=[]         # 给容器挂载存储卷,挂载到容器的某个目录  
--volumes-from=[]       # 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[]            # 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities  
--cap-drop=[]           # 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities  
--cidfile=""            # 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法  
--cpuset=""             # 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU  
--device=[]             # 添加主机设备给容器,相当于设备直通  
--dns=[]                # 指定容器的dns服务器  
--dns-search=[]         # 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件  
--entrypoint=""         # 覆盖image的入口点  
--env-file=[]           # 指定环境变量文件,文件格式为每行一个环境变量  
--expose=[]             # 指定容器暴露的端口,即修改镜像的暴露端口  
--link=[]               # 指定容器间的关联,使用其他容器的IP、env等信息  
--lxc-conf=[]           # 指定容器的配置文件,只有在指定--exec-driver=lxc时使用  
--name=""               # 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字  
--net="bridge"          # 容器网络设置:
                            # bridge 使用docker daemon指定的网桥     
                            # host 	//容器使用主机的网络  
                            # container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源  
                            # none 容器使用自己的网络(类似--net=bridge),但是不进行配置 
--privileged=false      # 指定容器是否为特权容器,特权容器拥有所有的capabilities  
--restart="no"          # 指定容器停止后的重启策略:
                            # no:容器退出时不重启  
                            # on-failure:容器故障退出(返回值非零)时重启 
                            # always:容器退出时总是重启  
--rm=false              # 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)  
--sig-proxy=true        # 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

Nginx

在 docker 中部署 Nginx

MySQL

在 docker 中部署 MySQL

PostgreSQL

在 docker 中部署 PostgreSQL

Redis

在 docker 中部署 Redis

Elasticsearch

在 docker 中部署 Elasticsearch

Gitlab

在 docker 中部署 Gitlab

Rocket.Chat

在 docker 中部署 Gitlab

Rancher

在 docker 中部署 Rancher

Portainer

在 docker 中部署 Portainer

Sourcegraph

在 docker 中部署 Sourcegraph

Mattermost

在 docker 中部署 Mattermost

SeaweedFS

在 docker 中部署 SeaweedFS

NPS

在 docker 中搭建内网穿透服务器,带WEB管理

Penpot

在 docker 中部署 Penpot

Navidrome

在 docker 中部署 Navidrome

Humpback

首先创建放持久化数据文件夹,mkdir -p /opt/app/humpback-web,里面存放持久化数据文件,会存储站点管理和分组信息,启动后请妥善保存。

# 创建放持久化数据文件夹
mkdir -p /opt/app/humpback-web
# 下载humpback-web镜像到本地
docker pull humpbacks/humpback-web:1.0.0
# 启动 humpback-web 容器,将容器命名为 humpback-web
docker run -d --net=host --restart=always \
 -e HUMPBACK_LISTEN_PORT=7001 \
 -v /opt/app/humpback-web/dbFiles:/humpback-web/dbFiles \
 --name humpback-web \
 humpbacks/humpback-web:1.0.0

访问站点,打开浏览器输入:http://192.168.99.100:7001 ,默认账户:admin 密码:123456

Seafile

docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  seafileltd/seafile:latest
docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=pan.showgold.com \
  -e [email protected] \
  -e [email protected] \
  -v $HOME/_docker/seafile-data:/shared \
  -p 80:80 \
  seafileltd/seafile:latest

更多

更多 docker 工具部署,在 docker 目录中

卸载旧的版本

移除旧的版本

$ 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

错误处理

Create more free space in thin pool or use dm.min_free_space option to change behavior

特别慎用,东西都没有了,注意备份哦。moby/moby#3182 (comment)

镜像拉不下来

修改 Docker daemon.json 配置 macOS: /etc/docker/daemon.json,Linux: ~/.docker/daemon.json

{
  "registry-mirrors":[
     "https://docker.mirrors.ustc.edu.cn",
     "https://hub-mirror.c.163.com",
     "https://mirror.baidubce.com",
     "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
     "192.168.188.111:2021"
  ]
}

参考资料

官方英文资源

中文资源

其它资源

Contributors

As always, thanks to our amazing contributors!

Made with action-contributors.

License

Licensed under the MIT License.

More Repositories

1

awesome-mac

 Now we have become very big, Different from the original idea. Collect premium software in various categories.
JavaScript
76,465
star
2

linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
Markdown
31,606
star
3

reference

为开发人员分享快速参考备忘清单(速查表)
Dockerfile
8,374
star
4

hotkeys-js

➷ A robust Javascript library for capturing keyboard input. It has no dependencies.
JavaScript
6,170
star
5

handbook

放置我的笔记、搜集、摘录、实践,保持好奇心。看文需谨慎,后果很严重。
Markdown
4,148
star
6

mysql-tutorial

MySQL入门教程(MySQL tutorial book)
4,022
star
7

github-rank

🕷️Github China/Global User Ranking, Global Warehouse Star Ranking (Github Action is automatically updated daily).
TypeScript
1,837
star
8

awesome-uikit

Collect JS Frameworks, Web components library and Admin Template.
Dockerfile
1,441
star
9

iNotify

📢 JS achieve the browser title flashing, scrolling, voice prompts, Chrome/Safari/FireFox/IE notice. has no dependencies. It not interfere with any JavaScript libraries or frameworks. has a reasonable footprint 5.05kb (gzipped: 1.75kb)
JavaScript
992
star
10

nginx-tutorial

Nginx安装维护入门学习笔记,以及各种实例。
795
star
11

oscnews

Chrome 插件,查看开源中国软件更新资讯,文档导航,GitHub 趋势榜,linux命令索引,浏览历史记录和时钟页面。
JavaScript
737
star
12

vim-web

◈ 搞得像IDE一样的Vim,安装配置自己的Vim。
Vim Script
594
star
13

validator.js

⁉️ Lightweight JavaScript form validation, that had minimal configuration and felt natural to use. No dependencies, support UMD.
TypeScript
539
star
14

golang-tutorial

Go语言快速入门
Go
520
star
15

mocker-api

mocker-api that creates mocks for REST APIs. It will be helpful when you try to test your application without the actual REST API server.
JavaScript
471
star
16

FED

✪ 这是一个很酷炫的前端网站搜集器,导航网 http://jaywcjlove.github.io/FED
JavaScript
453
star
17

svgtofont

Read a set of SVG icons and ouput a TTF/EOT/WOFF/WOFF2/SVG font.
TypeScript
450
star
18

store.js

A simple, lightweight JavaScript API for handling browser localStorage , it is easy to pick up and use, has a reasonable footprint 2.36kb(gzipped: 1.04kb), and has no dependencies.
JavaScript
409
star
19

react-hotkeys

React component to listen to keydown and keyup keyboard events, defining and dispatching keyboard shortcuts.
TypeScript
396
star
20

shell-tutorial

Shell入门教程(Shell tutorial book)
Shell
391
star
21

git-tips

这里是我的笔记,记录一些git常用和一些记不住的命令。
Markdown
372
star
22

translater.js

♣︎ This is a use of HTML comments page translation solution. For a small amount of static pages, this solution is more simple. it has no dependents, Compression only (4KB)
JavaScript
323
star
23

idoc

📖 Simple document generation tool! Dependence Node.js run.
TypeScript
233
star
24

sgo

A dev server for rapid prototyping. Setting a directory to a static server.It provides a 404 neat interface for listing the directory's contents and switching into sub folders.
EJS
205
star
25

regexp-example

正则表达式实例搜集,通过实例来学习正则表达式。
HTML
200
star
26

amac

This is developed for Awesome-Mac.
JavaScript
200
star
27

swiftui-example

SwiftUI 示例,技巧和技术集合,帮助我构建应用程序,解决问题以及了解SwiftUI的实际工作方式。
Swift
196
star
28

cookie.js

🍪 A simple, lightweight JavaScript API for handling browser cookies , it is easy to pick up and use, has a reasonable footprint(~2kb, gzipped: 0.95kb), and has no dependencies. It should not interfere with any JavaScript libraries or frameworks. https://jaywcjlove.github.io/cookie.js/
JavaScript
181
star
29

rdoc

⚛️📄🚀 Fast static site generator for React, Just write Markdown file. @react-doc
JavaScript
155
star
30

wxmp

微信公众号文章 Markdown 编辑器,使用 markdown 语法创建一篇简介美观大方的微信公众号图文。
TypeScript
119
star
31

sb

SVG badges to display
JavaScript
106
star
32

onlinenetwork

js判断是否断网了
JavaScript
97
star
33

tsbb

TSBB is a CLI tool for developing, testing and publishing modern TypeScript projects with zero configuration, and can also be used for module or react component development. @tsbbjs
TypeScript
97
star
34

package.json

文件 package.json 的说明文档。
96
star
35

tools

Many many useful Web Online Tools For Web Developers & Programmers
TypeScript
94
star
36

icongo

Search SVG Icons. Easily include popular icons in your React projects and provide an easy tool to convert SVG into React components. @icongo
TypeScript
85
star
37

magic-input

CSS3 Styles for Checkbox and Radio Button inputs look prettier. with only one element.
HTML
84
star
38

colors-cli

ಠ_ಠ Terminal string styling done right.
JavaScript
74
star
39

swift-tutorial

Swift入门教程、读书笔记
74
star
40

wcj

🙈 Node.js make command-line tool for learning.
JavaScript
57
star
41

c-tutorial

C语言教程
C
53
star
42

swiftui-markdown

Render Markdown text in SwiftUI.
Swift
52
star
43

awesome-chatgpt

50
star
44

loading-cli

Terminal loading effect.
JavaScript
49
star
45

dev-site

开发者网址导航,Chrome 插件 oscnews 的子仓库。https://jaywcjlove.github.io/dev-site
JavaScript
48
star
46

date.js

JavaScript function for converting timestamps or Date objects to formatted strings, manipulate dates.
TypeScript
46
star
47

stylus-px2rem

Stylus convert px to rem in css files with optional fallback to px.
Stylus
42
star
48

markdown-to-html-cli

Command line tool that converts markdown to HTML.
TypeScript
42
star
49

hexoThemeKacper

hexo theme
CSS
36
star
50

rollup-demo

Rollup.js 下一代的ES6模块打包机 demo
JavaScript
36
star
51

jaywcjlove

readme for github.com/jaywcjlove
JavaScript
31
star
52

changelog-generator

A GitHub Action that compares the commit differences between two branches
TypeScript
30
star
53

nginx-editor

Nginx language for Monaco Editor.
TypeScript
28
star
54

rehype-attr

New syntax to add attributes to Markdown.
TypeScript
28
star
55

github-action-contributors

Github action generates dynamic image URL for contributor list to display it!
JavaScript
24
star
56

google

This is the Google Mirror Index.
TypeScript
22
star
57

html-to-markdown-cli

Command line tool that converts HTML to markdown.
TypeScript
22
star
58

parcel-plugin-markdown-string

📦@parcel-bundler plugin for loader markdown string, markdown output HTML.
TypeScript
21
star
59

jaywcjlove.github.io

About Me
TypeScript
21
star
60

console-emojis

Custom Console Logging with Emoji.
TypeScript
21
star
61

github-actions

测试 GitHub Actions
JavaScript
20
star
62

webpack-react-demo

学习和收集的一些WebPack和React插件例子
JavaScript
20
star
63

rust-cn-document-for-docker

Rust cn document for docker
Dockerfile
20
star
64

webpack-plugin-manifest

Generates HTML5 Cache Manifest files
JavaScript
19
star
65

github-action-package

Read and modify the contents of package.json.
TypeScript
19
star
66

AutoPrefixCSS

Break free from CSS prefix hell!摆脱CSS前缀地狱!
CSS
19
star
67

rehype-rewrite

Rewrite element with rehype.
TypeScript
18
star
68

table-of-general-standard-chinese-characters

Table of General Standard Chinese Characters(通用规范汉字表)
JavaScript
16
star
69

local-ip-url

Get current machine IP.
JavaScript
16
star
70

refs-cli

Command line tool to generate Quick Reference website.
CSS
15
star
71

code-image

Create beautiful images of your source code.
TypeScript
13
star
72

markdown-to-html

Converts markdown text to HTML.
TypeScript
13
star
73

generated-badges

Create a badge using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers)
JavaScript
13
star
74

coverage-badges-cli

Create coverage badges from coverage reports (no 3rd parties servers).
TypeScript
12
star
75

dark-mode

🌓 Add dark mode/night mode custom elements to your website.
JavaScript
12
star
76

react-native

一些 React Native 开发上遇到的问题简单记录。
12
star
77

create-tag-action

Auto create tags from commit or package.json
TypeScript
12
star
78

nxylene

练习nodejs大法,使用nodejs+mongodb+express4.x做个小实例。
JavaScript
11
star
79

MDEditor

Simple Markdownd Editor
JavaScript
11
star
80

react-native-doc

这里是本地离线预览 React Native 文档的方法,解决因官网 CDN 资源导致无法打开官方文档网站。
JavaScript
11
star
81

bannerjs

Add a banner to the string. Get one-line/multi-line comment banner based on package.json.
TypeScript
11
star
82

react-native-typescript-example

React Native TypeScript Example
Java
9
star
83

logo

Chrome 插件 oscnews 的子仓库,存储网址导航logo的仓库。
JavaScript
9
star
84

image2uri

Convert image file to data URI.
TypeScript
9
star
85

github-action-modify-file-content

Replace text content and submit content
TypeScript
9
star
86

vue-koa-demo

A koa + Vue.js + webpack project
JavaScript
7
star
87

IE6PNG

解决IE6不支持PNG的方法搜集
JavaScript
7
star
88

react-dynamic-loadable

A higher order component for loading components with dynamic imports.
JavaScript
7
star
89

code-example

Language code example & sample.
JavaScript
7
star
90

rehype-video

Add improved video syntax: links to `.mp4` and `.mov` turn into videos.
TypeScript
7
star
91

docs

Centrally manage various development documents through docker.
JavaScript
7
star
92

generate-password

Generate Password is a generating random and unique passwords.
TypeScript
7
star
93

gitke

A simple git server written in NodeJS.
JavaScript
6
star
94

FrontEndBlogCN

前端博客相关网站搜集
6
star
95

outdatedbrowser

提示升级浏览器
JavaScript
6
star
96

appstore

Appstore应用程序,半成品...
Objective-C
6
star
97

github-action-read-file

Read file contents.
TypeScript
6
star
98

compile-less

All `.less` files are compiled into `.css` files.
TypeScript
6
star
99

typenexus

TypeNexus is a great tool for API encapsulation and management. It offers a clean and lightweight way to bundle TypeORM + Expressjs functionality, helping you to build applications faster while reducing template code redundancy and type conversion work.
TypeScript
5
star
100

animate.styl

一个跨浏览器的 CSS3 动画库。
HTML
4
star