Docker là gì?
Docker là một công cụ cho phép các nhà phát triển, sys-admin… có thể dễ dàng triển khai ứng dụng của mình lên chạy một môi trường phát triển
Lợi ích chính mà Docker đem lại là cho phép người dùng có thể đóng gọi một ứng dụng với đầy đủ các thành phần liên quan
Các Container của Docker sử dụng ít tài nguyên hơn các giải pháp sử dụng “Máy ảo” như “VMWare, VirtualBox…”
Docker Container là gì?
Trước khi nói về Container chúng ta sẽ chém gió đôi chút về VMs ( Virtual Machines ).
Trước khi Docker ra đời, thì VMs vẫn thống trị trong việc triển khai các ứng dụng vì nhanh-gon-lẹ.
Người dùng cần phải cài trên máy chính (Host) và nó sẽ tạo ra các máy ảo để chúng ta có thể cài đặt hệ điều hành cho hệ thống.
Điểm đáng tiết của nó là việc chạy các máy Ảo nhử vậy sẽ tốn rất rất nhiều tài nguyên trên (Host), làm tăng chi phí phần cứng cho các hệ thống ứng dụng nó.
Vì vậy Container ra đời để giải quyết bài toán trên. Container không tạo ra máy Ảo, nó chia sẽ tài nguyên trực tiếp từ máy chủ (Host)
Docker Image là gì?
Nếu bạn đã trải qua giai đoạn “Cài win dạo” thì chắc hẵn sẽ không lạ lẵm gì về khái niệm “Image“.
Một ngày đẹp trời cô em cùng lớp đem Laptop tới và nhờ cài lại Win. Với túi tiền của sinh viên ít ỏi, thì không thể ra tiệm mua đĩa Windows về cài được, cuối cùng thì cũng tìm ra được cách, đó là tải bản Image (IOS) của Windows về cài đặt.
Vậy có thể hiểu Docker Image là một file, bao gồm nhiều thành phần có thể thực thi tạo ra Docker Container
Cài đặt Docker
Đối với các bạn dùng Mac thực hiên theo hướng dẫn tại đây
Sau khi cài đặt thành công chúng ta sẽ thử kiểm tra lại bằng cách thực hiện lệnh bên dưới
docker -v
Nếu thực thi được như trong hình thì xem như các bạn đã cài đặt Docker thành công
Hãy cùng Hello world
docker run hello-world
Như vậy, theo một cách suy nghĩ phóng khoáng thì chúng ta đã Master được Docker
Các lệnh phổ biến khi dùng Docker
$ docker images
Trả về danh sách các images
$ docker pull {image_name}
Tải về một image từ Docker Hub, đảm bảo rằng tên image đó phải tồn tại trên Docker Hub
VD: docker pull hello-world
docker rmi {image_id/name}
Xóa một image đang tồn tại bằng Image ID hoặc tên Image
VD: docker rmi -f hello-world
$ docker ps
Hiển thị ra danh sách các Container đang chạy
Chúng ta có thể thêm tham số “-a” để hiển thị ra đầy đủ các Container ( bao gồm cả Container không chạy )$ docker ps
$ docker ps -a
$ docker rm {container_id/name}
Xóa một Container đang tồn tại bằng Container ID hoặc tên Container
Nếu gặp vấn đề trong quá trình xóa Container, các bạn có thể thêm tùy còn “-f” đại loại như xóa cưởng bức @@…$ docker rm -f bf9724add126
$ docker rename {old_container_name} {new_container_name}
Đổi tên một container
$ docker start {new_container_name}
Khởi chạy một container, với điều kiện container đã được khởi tạo trước đó
$ docker run --name {container_name} -p {host_port}:{container_port} -v {/host_path}:{/container_path} -it {image_name} /bin/bash
Tạo mới container và khởi chạy với các tùy chọn ban đầu
container_name: Tên container name
host_port: Port truy cập từ Host
container_port: Port được mapping trong docker
host_path: Đường dẫn thư mục bên ngoài máy Host sẽ được Mapping với container_path
container_path: Đường dẫn thư mục được đưa ra ngoài
$ docker commit -m "message" {container_name} {image_name}
Commit các thay đổi từ container vào image
$ docker save {image_name} > {/host_path/new_image.tar}
Lưu xuống một image thành file.tar
Lợi ích của việc này là mình không cần đẩy lên Docker hub, mà có thể copy nó vào usb hoặc ổ cứng di chuyển cho nhanh
$ cat file.tar | docker import - {new_image_name}:latest
Tạo mới một image từ file.tar
Các tuyệt chiêu hay dùng
- Xóa bỏ tất cả làm lại
$ docker rm $(docker ps -a -q)
$ docker rmi $(docker images -q)
2 lệnh trên sẽ cho ra đi tất cả các Container và Image mà bạn đang có
lệnh này rất phù hợp cho các bạn đang nghiên cứu, có nhu cầu “Xã bàn lập lại”, nhưng thận trọng, mọi thứ ra đi thì không có cớ hội tìm lại đâu đó @@-
Trong vài trường hợp nếu gặp các thành phần cứng đầu chúng ta có thể thêm các thuộc tính “Cưỡng bức” –force
$ docker rmi $(docker images -q) --force
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chínhDocker là gì?Docker Container là gì?Docker Image là gì?Cài...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chínhDocker là gì?Docker Container là gì?Docker Image là gì?Cài đặt DockerHãy cùng Hello worldCác lệnh phổ biến khi dùng DockerCác tuyệt chiêu hay dùng1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chínhDocker là gì?Docker Container là gì?Docker Image là gì?Cài đặt DockerHãy cùng Hello worldCác lệnh phổ biến khi dùng DockerCác tuyệt chiêu hay dùngV. Phân tích và khai thác các lỗ hổng Directory...
Directory traversal vulnerabilities (phần 3)
Nội dung chínhDocker là gì?Docker Container là gì?Docker Image là gì?Cài đặt DockerHãy cùng Hello worldCác lệnh phổ biến khi dùng DockerCác tuyệt chiêu hay dùngV. Phân tích và khai thác các lỗ hổng Directory...
Directory traversal vulnerabilities (phần 2)
Nội dung chínhDocker là gì?Docker Container là gì?Docker Image là gì?Cài đặt DockerHãy cùng Hello worldCác lệnh phổ biến khi dùng DockerCác tuyệt chiêu hay dùngIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với...