Giả sử bạn làm một dự án về ASP .NET Core bạn sẽ cần .NET Core Runtime để có thể chạy ứng dụng, ngoài ta trong dự án có lưu các thông tin vào database dùng SQL Server, caching dữ liệu dùng Redis, cung cấp chức năng tìm kiếm sử dụng Elasticsearch ..... Khi đó để có thể triển khai và chạy ứng dụng này thì ta sẽ đưa hết tất cả các thành phần này vào cùng trong một thùng chứa (Container) hoàn toàn độc lập với các thùng chứa khác. Khi deploy hệ thống hoặc đưa cho người khác kiểm tra ta chỉ cần bê nguyên cả cái thùng này cho họ và tiến hành chạy. Mọi thứ cần thiết đã có hết ở bên trong.
Đây là ưu điểm lớn nhất của Docker.
Mình sẽ có một bài viết khác giới thiệu sơ qua rõ hơn về Docker. Các bạn có thể tham khảo thêm tài liệu cụ thể trên trang chủ của Docker ở đây.
Bài viết này tập trung vào việc làm thế nào để cài đặt một cách nhanh chóng các công cụ cũng như các phần mềm quan trọng phục vụ cho dự án của bạn sử dụng Docker.
Trước tiên bạn tiến hành tải và cài đặt
Docker Desktop
https://www.docker.com/products/docker-desktop
Để làm quen với các câu lệnh trong Docker bạn có thể tham khảo thêm ở đây
Để cài đặt một công cụ hoặc phần mềm nào đó về cơ bản sẽ gồm các bước sau
Bước 1 : Tìm kiếm công cụ bạn muốn cài trên Docker Hub
Bước 2 : Mở Terminal trên hệ điều hành của bạn (Mình dùng PowerShell)
Bước 3 : Tiến hành cài đặt bằng dòng lệnh
Bước 4 : Kiểm tra việc cài đặt và tiến hành sử dụng
Dưới đây là tổng hợp các phần mềm hoặc công cụ phổ biến đi kèm với các câu lệnh cho việc cài đặt chúng một cách dễ dàng nhất.
Lưu ý đây là cách nhanh chóng nhất để cài đặt được chúng còn về phần cấu hình chi tiết thì mời bạn tham khảo thêm trên trang chủ của Docker Hub cho từng công cụ cũng như phần mềm.
SQL Server
docker run -d --name local-mssql-server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWO[email protected]' -p 14333:1433 mcr.microsoft.com/mssql/serverKiểm tra và đăng nhập sử dụng SQL Server Management Studio hoặc Azure Data Studio hoặc bất kỳ công cụ nào bạn đã sử dụng để truy cập SQL server
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql
Docker Hub
https://hub.docker.com/_/microsoft-mssql-server
Redis
docker run -d --name local-redis -p 6379:6379 redisKiểm tra việc cài đặt thông qua câu lệnh sau
docker exec -it local-redis bash
redis-cli
set mykey 123
get mykey
Docker Hub
https://hub.docker.com/_/redis
Redis Commander
docker run --rm --name redis-commander -d --env REDIS_HOSTS=local:localhost:6379 -p 8081:8081 rediscommander/redis-commanderDocker Hub
https://hub.docker.com/r/rediscommander/redis-commander
RabbitMQ
docker run -d -p 15672:15672 -p 5672:5672 rabbitmq:managementMở browser và kiểm tra việc cài đặt ở địa chỉ sau
http://localhost:15672
Tài khoản đăng nhập mặc định
user : guest
password : guest
Bạn có thể thay đổi thông tin đăng nhập sử dụng câu lệnh dưới đây
docker run -d --name local-rabbitmq -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:management
Docker Hub
https://hub.docker.com/_/rabbitmq
PostgreSQL
docker run -d --name local-postgres -e POSTGRES_PASSWORD=secretpassword -p 5432:5432 postgresKiểm tra việc cài đặt dùng câu lệnh sau
docker exec -it local-postgres postgres -V
Hoặc có thể dùng các phần mềm hỗ trợ quản lý trên giao diện chẳng hạn,
https://www.pgadmin.org/
Docker Hub
https://hub.docker.com/_/postgres
Nginx
docker run -d --name local-nginx -p 8080:80 nginxKiểm tra việc cài đặt ở link bên dưới
http://localhost:8080
Docker Hub
https://hub.docker.com/_/nginx
MongoDB
docker run -d --name local-mongo -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=secretpassword -p 27017:27017 mongoKiểm tra việc hoàn thành cài đặt bằng câu lệnh bên dưới
docker exec -it local-mongo mongo
Hoặc các phần mềm hỗ trợ giao diện tương tác với MongoDB chẳng hạn,
https://www.mongodb.com/products/compass
https://studio3t.com/
Docker Hub
https://hub.docker.com/_/mongo
Mongo Express
Tạo mạng riêng cho Mongo và Mongo Expressdocker network create -d bridge mongo-network
Khởi chạy Mongo
docker run --name local-mongo --network mongo-network -e MONGO_INITDB_ROOT_USERNAME=root -e [email protected] -p 27017:27017 -d mongo
Khởi chạy Mongo Express
docker run --name local-mongo-express --network mongo-network -e ME_CONFIG_BASICAUTH_USERNAME=root -e [email protected] -e ME_CONFIG_MONGODB_PORT=27017 -e ME_CONFIG_MONGODB_ADMINUSERNAME=root -e [email protected] -e ME_CONFIG_MONGODB_SERVER=local-mongo -p 8081:8081 -d mongo-express
Vào đường dẫn sau và đăng nhập với thông tin
http://localhost:8081
User Name : root
Password : [email protected]
Docker Hub
https://hub.docker.com/_/mongo-express
MySQL
docker run -d --name local-mysql -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 mysqlKiểm tra việc cài đặt với câu lệnh sau
docker exec -it mysql1 mysql -uroot -p
Enter password:secretpassword
Hoặc các phần mềm giao diện đồ họa tương tác được với MySql chẳng hạn,
https://www.mysql.com/products/workbench/
Thông tin tài khoản đúng như trong câu lệnh chạy container bên trên
Username : root
Password : secretpassword
Docker Hub
https://hub.docker.com/_/mysql
ELK Stack
ELK Stack là một bộ gồm 3 công cụ đi kèm với nhau cho hỗ trợ việc tìm kiếm và phân tích dữ liệu. Ba công cụ này gồm có ElasticSearch, Kibana và LogstashBa công cụ này thường đi kèm với nhau nên ta sẽ cho chúng dùng chung một network
Tạo mới một network trong Docker dùng câu lệnh sau
docker network create elk-network --driver=bridge
Xóa network dùng dòng lệnh
docker network rm elk-network
ElasticSearch
docker run -d --name elasticsearch --net elk-network -e "discovery.type=single-node" -p 9200:9200 elasticsearch:7.2.0
Kiểm tra việc cài đặt với địa chỉ sau
http://localhost:9200/
Kibana
docker run -d --name local-kibana --net elk-network -p 5601:5601 kibana:7.2.0
Vào địa chỉ bên dưới để kiểm tra việc cài đặt
http://localhost:5601/
Logstash
docker run -d --name local-logstash --net elk-network -p 9600:9600 logstash:7.2.0
Kiểm tra cài đặt theo đường dẫn bên dưới
http://localhost:9600/
Docker Hub
https://hub.docker.com/_/elasticsearch
https://hub.docker.com/_/kibana
https://hub.docker.com/_/logstash
Azure Cosmos Emulator
Docker Hub
https://hub.docker.com/r/microsoft/azure-cosmosdb-emulator/
Mariadb
docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadbDocker Hub
https://hub.docker.com/_/mariadb
Couchbase
docker run -d --name local-couchbase -p 8091:8091 couchbaseVào đường dẫn phía dưới để tiến hành cài đặt và cấu hình cho Couchbase
http://localhost:8091
Docker Hub
https://hub.docker.com/_/couchbase
Seq
docker run -e ACCEPT_EULA=Y --name local-seq -v /Seq/data:/data -p 5340:80 -p 5341:5341 datalust/seq:latestGhi log vào cổng 5341
Vào đường dẫn phía dưới để vào Log Dashboard
http://localhost:5340
Docker Hub
https://hub.docker.com/r/datalust/seq
Cassandra
docker run --name local-cassandra -e CASSANDRA_USER=cassandra -e CASSANDRA_PASSWORD=secretpassword -d -p 9042:9042 -t cassandraKiểm tra việc cài đặt
docker exec -it local-cassandra bash
nodetool status
Docker Hub
https://hub.docker.com/_/cassandra
Solr
docker run --name local-solr -d -p 8983:8983 -t solrTruy cập vào đường dẫn sau để vào trang Admin Console
http://localhost:8983/
Docker Hub
https://hub.docker.com/_/solr
Memcached
docker run --name local-memcache -p 11211:11211 -d memcachedBật telnet trên Windows dùng lệnh sau trên PowerShell
dism /online /Enable-Feature /FeatureName:TelnetClient
Mở cmd
telnet localhost 11211
Kiểm tra phiên bản
version
Thống kê
stats
Lệnh để set giá trị
set a 1 0 11 -> Click Enter
Hello
Lệnh lấy giá trị
get a
Docker Hub
https://hub.docker.com/_/memcached
Couchdb
docker run --name local-couchdb -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password -p 5984:5984 -d couchdbKiểm tra trạng thái cài đặt thông qua đường dẫn sau
http://localhost:5984
Docker Hub
https://hub.docker.com/_/couchdb
Consul
docker run -d --name=local-consul -e CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 consulKiểm tra trạng thái cài đặt thông qua đường dẫn sau
http://localhost:8500
Docker Hub
https://hub.docker.com/_/consul
Eureka
Docker Hub
https://hub.docker.com/r/netflixoss/eureka
Grafana
docker run --name grafana -d -p 3000:3000 grafana/grafanaĐăng nhập sử dụng đường dẫn sau
http://localhost:3000
Username: admin
Password: admin
Docker Hub
https://hub.docker.com/r/grafana/grafana
Prometheus
docker run --name local-prometheus -d -p 9090:9090 prom/prometheusKiểm tra cài đặt ở đường dẫn sau
http://localhost:9090
Docker Hub
https://hub.docker.com/r/prom/prometheus
Netdata
docker run --name local-netdata -d -p 19999:19999 netdata/netdataKiểm tra cài đặt ở đường dẫn sau
http://localhost:19999
Docker Hub
https://hub.docker.com/r/netdata/netdata
Vault
docker run --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' -p 8200:8200 vaultVào giao diện của Vault theo đường dẫn dưới đây
http://localhost:8200
Đăng nhập với Method Token
myroot
Docker Hub
https://hub.docker.com/_/vault
Jaeger
docker run --name jaeger -d -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 jaegertracing/all-in-oneTruy cập Jaeger UI bằng địa chỉ sau
http://localhost:16686
Docker Hub
https://hub.docker.com/r/jaegertracing/all-in-one
Zipkin
docker run -d --name zipkin -p 9411:9411 openzipkin/zipkinTruy cập Zipkin UI với đường dẫn sau
http://localhost:9411
Docker Hub
https://hub.docker.com/r/openzipkin/zipkin
InfluxDB
docker run -d --name=local-influxdb -p 8086:8086 -v influxdb:/var/lib/influxdb influxdbDocker Hub
https://hub.docker.com/_/influxdb
Kapacitor
Docker Hub
https://hub.docker.com/_/kapacitor
GrayLog
Docker Hub
https://hub.docker.com/r/graylog/graylog
Fluentd
Docker Hub
https://hub.docker.com/_/fluentd
Splunk
docker run -d --name local-splunk -e "SPLUNK_START_ARGS=--accept-license" -e "[email protected]" -p 8080:8080 -p 8000:8000 -p 9997:9997 -p 8088:8088 -p 8089:8089 splunk/splunkĐăng nhập vào giao diện web với đường dẫn sau
http://localhost:8000
User : admin
Password : [email protected]
Docker Hub
https://hub.docker.com/r/splunk/splunk
Fabio
Docker Hub
https://hub.docker.com/r/fabiolb/fabio
Portainer
docker volume create portainer_datadocker run -d -p 9000:9000 --name local-portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Vào đường dẫn sau tạo tài khoản admin và bắt đầu quản lý các containers
http://localhost:9000
Docker Hub
https://hub.docker.com/r/portainer/portainer
Rancher
docker run -d --name local-rancher --restart=unless-stopped -p 11180:80 -p 11443:443 rancher/rancherCấu hình ở địa chỉ sau
https://localhost:11443
Docker Hub
https://hub.docker.com/r/rancher/rancher
Traefik
Docker Hub
https://hub.docker.com/_/traefik
Httpd
Docker Hub
https://hub.docker.com/_/httpd
Haproxy
Docker Hub
https://hub.docker.com/_/haproxy
Chronograf
Docker Hub
https://hub.docker.com/_/chronograf
Telegraf
Docker Hub
https://hub.docker.com/_/telegraf
Kong
Docker Hub
https://hub.docker.com/_/kong
Kafka
Docker Hub
https://hub.docker.com/r/confluentinc/cp-kafka
NATS
docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 natsKiểm tra việc cài đặt bằng cách vào đường dẫn dưới đây
http://localhost:8222
Docker Hub
https://hub.docker.com/_/nats
Apache Nifi
docker run --name nifi -p 8080:8080 -d apache/nifiVào đường dẫn sau để kiểm tra kết quả
http://localhost:8080
Docker Hub
https://hub.docker.com/r/apache/nifi
Envoy Proxy
docker run --rm -d -p 10000:10000 envoyproxy/envoyVào đường dẫn sau để kiểm tra kết quả (Sẽ redirect tới trang google.com))
http://localhost:10000
Docker Hub
https://hub.docker.com/r/envoyproxy/envoy
Eclipse Mosquitto
Docker Hub
https://hub.docker.com/_/eclipse-mosquitto
Express Gateway
docker run -d --name express-gateway -p 8080:8080 -p 9876:9876 express-gatewayDocker Hub
https://hub.docker.com/_/express-gateway
Alpine
Docker Hub
https://hub.docker.com/_/alpine
Rethinkdb
Docker Hub
https://hub.docker.com/_/rethinkdb
Neo4j
Docker Hub
https://hub.docker.com/_/neo4j
Arangodb
Docker Hub
https://hub.docker.com/_/arangodb
Orientdb
Docker Hub
https://hub.docker.com/_/orientdb
Aerospike
Docker Hub
https://hub.docker.com/_/aerospike
Jenkins
Docker Hub
https://hub.docker.com/_/jenkins
Lightstreamer
Docker Hub
https://hub.docker.com/_/lightstreamer
Alpine
Docker Hub
https://hub.docker.com/_/alpine
Tiếp tục cập nhật ...