Cài đặt các phần mềm hoặc công cụ sử dụng Docker

Docker là một giải pháp cung cấp giúp chúng ta có thể chạy các ứng dụng một cách bảo mật và cô lập hoàn toàn trong một thùng chứa (Container). Trong thùng chứa này sẽ gồm ứng dụng của chúng ta và tất cả các thành phần phụ thuộc và thư viện giúp chúng ta có thể khởi chạy ứng dụng.
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_PASSWORD=secret@password' -p 14333:1433 mcr.microsoft.com/mssql/server

Kiể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 redis

Kiể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-commander

Docker Hub
https://hub.docker.com/r/rediscommander/redis-commander

RabbitMQ

docker run -d -p 15672:15672 -p 5672:5672 rabbitmq:management

Mở 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 postgres

Kiể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 nginx

Kiể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 mongo

Kiể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 Express
docker 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 MONGO_INITDB_ROOT_PASSWORD=P@ssw0rd -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 ME_CONFIG_BASICAUTH_PASSWORD=P@ssw0rd -e ME_CONFIG_MONGODB_PORT=27017 -e ME_CONFIG_MONGODB_ADMINUSERNAME=root -e ME_CONFIG_MONGODB_ADMINPASSWORD=P@ssw0rd  -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 : P@ssw0rd

Docker Hub
https://hub.docker.com/_/mongo-express

MySQL

docker run -d --name local-mysql -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 mysql

Kiể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, KibanaLogstash

Ba 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 mariadb

Docker Hub
https://hub.docker.com/_/mariadb

Couchbase

docker run -d --name local-couchbase -p 8091:8091 couchbase

Và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:latest

Ghi 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 cassandra

Kiể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 solr

Truy 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 memcached

Bậ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 couchdb

Kiể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 consul

Kiể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/prometheus

Kiể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/netdata

Kiể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 vault

Và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-one

Truy 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/zipkin

Truy 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 influxdb

Docker 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 "SPLUNK_PASSWORD=P@ssw0rd" -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 : P@ssw0rd

Docker Hub
https://hub.docker.com/r/splunk/splunk

Fabio


Docker Hub
https://hub.docker.com/r/fabiolb/fabio

Portainer

docker volume create portainer_data
docker 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/rancher

Cấ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 nats

Kiể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/nifi

Và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/envoy

Và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-gateway

Docker 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 ...