点击上方"AI搞事情"关注我们
什么是docker
Docker 是一个由 Go 语言进行开发实现的开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器,容器是完全使用沙箱机制,相互之间不会有任何接口。
镜像(Image)
:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container)
:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
仓库(Repository)
:集中存放镜像文件的地方,实现镜像的集中存储和分发的服务。Docker Hub便是一个由Docker官方提供的云服务平台,用于存储、分享和管理Docker镜像。
Docker可以实现应用的快速交付和运行应用,下面列举一些可以快速搭建一些基础应用和服务的部署方式。
NGINX
简介:一个高性能的HTTP和反向代理web服务器,可以用来做负载均衡及反向代理使用。
部署:
go
docker pull nginx
docker run --name myNginx -d -p 8089:80 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/logs:/var/log/nginx nginx
- nginx.conf
go
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 500m;
client_header_timeout 1m;
client_body_timeout 1m;
proxy_connect_timeout 60s;
proxy_read_timeout 1m;
proxy_send_timeout 1m;
proxy_cache_path /var/imgcachetest levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;
server {
listen 8080;
location / {
root /web/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
}
REDIS
go
docker search redis
docker pull redis
docker run -d -p 6379:6379 --name myredis -v redisdata:/data redis --requirepass "redis123" --appendonly yes
-d redis
表示后台启动redis。
--name myredis
指定该容器名称,查看和进行操作都比较方便。
-p 6379:6379
端口映射:前表示主机部分,后表示容器部分。
--requirepass "redis123"
redis登入密码。
--appendonly yes
开启redis 持久化。(重启redis数据也不会丢失或丢失小部分)
MYSQL
简介:MySQL 是一个常用的开放源码的小型关联式数据库管理系统。
部署:
go
docker pull mysql:latest
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
-v: 将数据目录映射到宿主机的目录
-p: 端口映射
-e: 环境变量
-d: 后台运行
报错:sha256_password or caching_sha2_password auth methods
修改root加密方式:增加 -e identified=mysql_native_password
MongoDB
简介:是免费开源的跨平台 NoSQL 数据库。
部署:
go
docker pull mongo
docker run -d -p 27017:27017 --name my-mongo-container -v /docker/mongodb/data:/data/db --restart=always --privileged=true mongo --auth
达梦
简介:国产化数据库。
部署:
官方文档:
https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html
go
docker load -i dm8_20230808_rev197096_x86_rh6_64_single.tar
// 启动容器
docker run -d -p 30236:5236 --restart=always --name dm8_test --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=dm8_test -v /data/dm8_test:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64
通过以下命令可以查看 Docker 镜像中数据库初始化的参数。
go
docker inspect dm8_test
Portainer
简介:Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。。
部署:
go
# 拉取Portainer的官方Docker镜像
docker pull portainer/portainer
# 运行Portainer容器,并将管理UI绑定到主机的9000端口
docker run -d -p 9100:9000 -v /home/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
通过IP:9100进行访问
minio
简介:一款高性能高可用的分布式对象存储系统,可以用来替换FastDFS。
部署:
go
docker pull minio/minio
// 启动容器
docker run --privileged=true -d -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin" -v /opt/minio/data:/data -v /opt/minio/config:/root/.minio -v /opt/minio/logs:/var/log/minio minio/minio server /data --console-address ":9001"
-p 9000:9000
:这个参数将容器内的9000端口映射到宿主机的9000端口。MinIO服务默认使用9000端口提供API服务。
-p 9001:9001
:这个参数将容器内的9090端口映射到宿主机的9090端口。这是MinIO的控制台(Console)端口,用于访问MinIO的图形用户界面。
-d
:这个参数告诉Docker以"detached"模式运行容器,即在后台运行。
-e "MINIO_ROOT_USER=minio"
:设置环境变量MINIO_ROOT_USER,这是访问MinIO服务的用户名称,这里设置为minio。
-e "MINIO_ROOT_PASSWORD=minio123"
:设置环境变量MINIO_ROOT_PASSWORD,这是访问MinIO服务的用户密码,这里设置为minio123。
-v /usr/local/minio-data:/data
:这个参数将宿主机的目录/usr/local/minio-data挂载到容器的/data目录。MinIO会将所有数据存储在这个目录。
-v /usr/local/minio-config:/root/.minio
:这个参数将宿主机的目录/usr/local/minio-config挂载到容器的/root/.minio目录。这个目录用于存储MinIO的配置文件和数据。
minio/minio
:这是要运行的Docker镜像的名称,这里使用的是官方发布的MinIO镜像。
server /data
:这是传递给MinIO程序的命令行参数,告诉MinIO以服务器模式运行,并且使用/data目录作为其数据存储位置。
--console-address ":9001"
:这个参数指定MinIO控制台服务的监听地址和端口。在这个例子中,它设置为监听所有接口上的9090端口。
--address ":9000"
:这个参数指定MinIO API服务的监听地址和端口。在这个例子中,它设置为监听所有接口上的9000端口。
容器启动之后,就可以通过访问http://IP:9001
来访问MinIO的Web界面,输入刚才设置的账号和密码(minioadmin/minioadmin
)进行登录。
mindoc
简介:Go 实现的在线简单好用的文档管理系统,支持增加 Markdown 和 HTML 两种编辑器。
部署:
go
docker pull registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
docker run -p 8181:8181 --name mindoc -e DB_ADAPTER=mysql -e MYSQL_PORT_3306_TCP_ADDR=127.0.0.1 -e MYSQL_PORT_3306_TCP_PORT=3306 -e MYSQL_INSTANCE_NAME=数据库名 -e MYSQL_USERNAME=账号 -e MYSQL_PASSWORD=密码 -e httpport=8181 -it registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
这样就创建了MinDoc实例,访问8181端口就能访问主页啦
it-tools
简介:IT-Tools是一款开源的便捷解决我们日常遇到的小问题的工具集合,支持Docker私有化部署,具备大量的好用的小功能,如各种加密解密、token解析、url解析等等。
部署:
go
// 汉化版:
docker pull qingfeng2336/it-tools
// 原版:
docker pull corentinth/it-tools:latest
docker run -d --name it-tools --restart unless-stopped -p 1818:80 qingfeng2336/it-tools:latest
通过IP:1818就可以访问了
metabase
简介:Metabase是一个开源的商业智能工具,您可以通过它理解数据、分析数据,进行数据查询并获取格式化结果(图形化视图)。
部署:
go
docker pull metabase/metabase
docker run -d -p 3000:3000 -e MB_SITE_NAME="AIgost" -v /home/local/metabase:/metebase/ -v /metabase-data:/metabase-data --name metabase metabase/metabase
IP:3000访问首页,然后就可以配置可视化图表了
除了这些开源的工具类应用,Docker Hub 上也有很多有趣的项目,可以帮助开发者学习和尝试新的技术,后面可以找一些来尝试玩一玩。
长按二维码关注我们
有趣的灵魂在等你