#

Hướng dẫn cài đặt & Sử dụng Docker trên Ubuntu 18.04

Docker là ứng dụng chuyên đơn giản quá quy trình quản lý các ứng dụng trong containers. Containers là nơi cho phép các ứng dụng hoạt động cách ly với tài nguyên. Nó hoạt động như một máy ảo nhưng linh hoạt và thân thiện với tài nguyên hơn đồng thời nó còn phụ thuộc vào hệ điều hành của máy chủ.

Bài viết sau đây BKHOST sẽ cùng bạn tìm hiểu cách cài đặt và sử dụng Docker Community Edition (CE) trên hệ điều hành Ubuntu 18.04. Bạn sẽ học được cách tự cài Docker, làm việc với containers, kho lưu trữ của Docker.

Điều kiện cài đặt

Bạn cần có những điều kiện sau trước khi làm theo hướng dẫn bên dưới:

Dịch vụ Hosting Windows tốc độ cao

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký dịch vụ Hosting Windows:

  • Giảm giá lên đến 40%.
  • Giá chỉ từ 23k/tháng.
  • Tặng thêm chứng chỉ bảo mật SSL Let’s Encrypt.

Đăng ký ngay:

hosting windows

  • Thiết lập sẵn một máy chủ Ubuntu 18.04 với người dùng không phải root sudoFirewall.
  • Tạo một tài khoản của Docker Hub nếu bạn muốn thực hiện bước 7 bà 8 trong hướng dẫn.

Hướng dẫn cài đặt

Cai dat Docker tren ubuntu

Dưới đây là 8 bước cách cài đặt và sử dụng Docker trên Ubuntu 18.04

Bước 1 – Cài đặt Docker

Trong kho lưu trữ chính thức của Ubuntu có cung cấp sẵn những gói Docker, tuy nhiên có thể đó không phải là các gói mới nhất. Để đảm bảo bạn đang tải xuống các gói Docker không bị lỗi thời, hãy tải xuống từ kho lưu trữ chính thức của Docker. Các gói mới của Docker sẽ thêm key GPG để đảm bảo gói tải xuống là mới nhất và hợp lệ.

  • Đầu tiên, bạn cần cập nhật các gói hiện tại của bạn bằng lệnh:

$ sudo apt update

  • Thiết lập các gói theo yêu cầu ở điều kiện tiên quyết để apt có thể sử dụng các gói từ HTTPS:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

  • Thêm các key GPG ở kho lưu trữ chính thức của Docker trong hệ thống của bạn:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  • Thêm kho lưu trữ Docker vào các nguồn apt:

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

  • Cập nhật cơ sở dữ liệu các gói Docker được thêm từ repo:

$ sudo apt update

  • Đảm bảo bạn cài đặt Docker từ kho lưu trữ của Docker, không phải Ubuntu:

$ apt-cache policy docker-ce

  • Đây là kết quả đầu ra của Docker: apt-cache policy docker-ce

docker-ce:
  Installed: (none)
  Candidate: 18.03.1~ce~3-0~ubuntu
  Version table:
     18.03.1~ce~3-0~ubuntu 500
        500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

Tại đây dù docker-ce chưa được cài đặt, nhưng nó sẽ được cài đặt từ kho lưu trữ Docker cho Ubuntu 18.04

  • Tại đây, bắt đầu cài đặt Docker:

$ sudo apt install docker-ce

Quá trình kích hoạt khởi động bắt đầu, bạn có thể kiểm tra xem nó có đang chạy hay không:
$ sudo systemctl status docker

  • Nếu nó đang chạy, đầu ra sẽ có kết quả như sau:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-08-09 19:42:32 UTC; 33s ago
     Docs: https://docs.docker.com
 Main PID: 5231 (dockerd)
    Tasks: 7
   CGroup: /system.slice/docker.service
           └─5231 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Docker mà bạn đang cài đặt ngoài cung cấp cho bạn một dịch vụ Docker đơn thuần, nó còn mang đến cho bạn các tiện ích về dòng lệnh hay các ứng dụng khách Docker.

Sau đây, chúng ta hãy bắt đầu khám phá về dòng lệnh Docker.

Bước 2 – Thực thi lệnh Docker mà không cần sudo

Để chạy được lệnh Docker yêu cầu bạn phải được cấp quyền root hoặc là thành viên trong nhóm docker, nhóm người dùng này được tạo tự động trong quá trình cài đặt Docker. Nếu bạn không nằm trong nhóm người dùng trên thì khi chạy lệnh Docker bạn sẽ nhận được phản hồi như sau:

Output
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

  • Nếu bạn không muốn dùng sudo trong những lần chạy lệnh docker, bạn có thể thêm tên người dùng vào nhóm docker:

$ sudo usermod -aG docker ${USER}

  • Để chạy lệnh với tư cách là thành viên nhóm mới, bạn có thể đăng xuất sau đó đăng nhập lại máy chủ hoặc dùng lệnh sau:

$ su - ${USER}

Nhập mật khẩu của bạn sau đó tiếp tục quá trình.

  • Để xác nhận thêm người dùng mới vào nhóm docker, bạn dùng lệnh sau:

$ id -nG

Output
sammy sudo docker

  • Bạn có thể khai báo tên người dùng mới để thêm vào nhóm docker bằng lệnh sau thay vì đăng nhập:

$ sudo usermod -aG docker username

Các lệnh docker trong phần tiếp theo sẽ chạy với tư cách là người trong nhóm docker, nếu bạn không phải thì thêm sudo vào trước các câu lệnh.

Sau đây là các lệnh Docker.

Bước 3 – Sử dụng lệnh Docker

  • Câu lệnh docker sẽ bao gồm các tùy chọn, câu lệnh và đối số, cú pháp của nó như sau:

$ docker [option] [command] [arguments]

  • Dùng lệnh sau để liệt kê các lệnh con có sẵn:

<span style="font-weight: 400;">$ docker </span>

  • Danh sách lệnh con đầy đủ của Docker bao gồm:
LệnhÝ nghĩa
attachĐính kèm luồng đầu vào, đầu ra và lỗi tiêu chuẩn cục bộ cho chương trình đang chạy
buildThiết lập hình ảnh từ Dockerfile
commitXây dựng hình ảnh mới từ thay đổi vùng chứa
cpSao chép tệp / thư mục giữa vùng chứa và hệ thống tệp cục bộ
createTạo mới vùng chứa
diffKiểm tra các thay đổi về tệp/ thư mục ở vùng chứa
eventsNhận các sự kiện thời gian thực từ máy chủ
execChạy lệnh trong vùng chứa đang chạy
exportXuất tệp của vùng chứa ở dạng tar
historyLịch sử hiển thị hình ảnh
imagesDanh sách hình ảnh
importNhập nội dung từ tarball để tạo hình ảnh hệ thống tệp
infoHiển thị thông tin toàn hệ thống
inspectTrả lại thông tin của Docker ở cấp thấp
killTắt một hoặc nhiều vùng chứa đang hoạt động
loadTải hình ảnh từ tar hoặc STDIN
loginĐăng nhập vào Docker
logoutĐăng xuất khỏi Docker
logsTìm nạp nhật ký của một vùng chứa
pauseTạm dừng tất cả các quy trình đang hoạt động trong vùng chứa
portLiệt kê các ánh xạ cổng hoặc một ánh xạ cụ thể cho vùng chứa
psLiệt kê danh sách vùng chứa
pullKéo hình ảnh hoặc kho lưu trữ từ sổ đăng ký
pushĐẩy hình ảnh hoặc kho lưu trữ vào sổ đăng ký
renameĐổi tên vùng chứa
restartKhởi động lại một hoặc nhiều vùng chứa
rmXóa một hoặc nhiều vùng chứa
rmiXóa một hoặc nhiều hình ảnh
saveLưu một hoặc nhiều hình ảnh vào kho lưu trữ tar ( mặc định sẽ truyền trực tuyến đến STDOUT)
searchTìm hình ảnh trong DockerHub
startBắt đầu một hoặc nhiều vùng chứa đã ngừng hoạt động
statsThống kê các luồng sử dụng tài nguyên của vùng chứa
stopDừng một hoặc nhiều vùng chứa đang hoạt động
tagTạo thẻ TARGET_IMAGE gắn thẻ SOURCE_IMAGE
topHiển thị quy trình đang chạy của vùng chứa
unpauseHủy tạm dừng tất cả các quy trình trong một hoặc nhiều vùng chứa
updateCập nhật cấu hình của một hoặc nhiều vùng chứa
versionHiển thị thông tin phiên bản Docker
waitChặn cho đến khi một hoặc nhiều vùng chứa dừng lại, sau đó in ra lệnh thoát của nó
  • Cách xem các tùy chọn có sẵn trong một lệnh con như sau:

$ docker docker-subcommand --help

  • Đây là cách xem thông tin hệ thống của Docker:

$ docker info

Chúng ta hãy cùng khám phá một số lệnh này bằng cách làm việc với docker qua hình ảnh.

Bước 4 – Làm việc với Docker Images

Docker Images là thành phần tạo nên các containers của Docker. Những hình ảnh này được chuyển qua từ Docker Hub, đây là công ty phát hành ra sản phẩm Docker. Việc lưu trữ hình ảnh Docker trên Docker Hub là không giới hạn người dùng, do đó các ứng dụng hay bản phân phối Linux đều có hình ảnh được lưu trữ tại đây.

  • Cách kiểm tra xem bạn có thể truy cập và tải hình ảnh của Docker hay không:

$ docker run hello-world

  • Nếu Docker đang hoạt động, sẽ cho phản hồi như sau:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
. . .

Lúc này Docker không tìm thấy hình ảnh hello-word được lưu cục bộ nên nó đã tải hình ảnh từ Docker Hub sau đó hình ảnh được lưu tại containers của Docker. Lúc này các ứng dụng trong containers được thực thì và hiển thị thông báo như phản hồi trên.

Để tìm một hình ảnh có sẵn trên Docker Hub, bạn có thể dùng lệnh con của docker là search. Trong câu lệnh dưới đây, giải sử chúng ta đang tìm hình ảnh Ubuntu:

<span style="font-weight: 400;">$ docker search ubuntu </span>

Docker Hub sẽ trả về danh sách các hình ảnh có tên chứa ký tự được tìm kiếm. Ví dụ sau đây là phản hồi từ câu lệnh trên:
Output

NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   7917                [OK]
dorowu/ubuntu-desktop-lxde-vnc                            Ubuntu with openssh-server and NoVNC            193                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   156                                     [OK]
ansible/ubuntu14.04-ansible                               Ubuntu 14.04 LTS with ansible                   93                                      [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   87                  [OK]
neurodebian                                               NeuroDebian provides neuroscience research s…   50                  [OK]
ubuntu-debootstrap                                        debootstrap --variant=minbase --components=m…   38                  [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                                      [OK]
nuagebec/ubuntu                                           Simple always updated Ubuntu docker images w…   23                                      [OK]
tutum/ubuntu                                              Simple Ubuntu docker images with SSH access     18
i386/ubuntu                                               Ubuntu is a Debian-based Linux operating sys…   13
ppc64le/ubuntu                                            Ubuntu is a Debian-based Linux operating sys…   12
1and1internet/ubuntu-16-apache-php-7.0                    ubuntu-16-apache-php-7.0                        10                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10   ubuntu-16-nginx-php-phpmyadmin-mariadb-10       6                                       [OK]
eclipse/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   6                                       [OK]
codenvy/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   4                                       [OK]
darksheer/ubuntu                                          Base Ubuntu Image -- Updated hourly             4                                       [OK]
1and1internet/ubuntu-16-apache                            ubuntu-16-apache                                3                                       [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4         ubuntu-16-nginx-php-5.6-wordpress-4             3                                       [OK]
1and1internet/ubuntu-16-sshd                              ubuntu-16-sshd                                  1                                       [OK]
pivotaldata/ubuntu                                        A quick freshening-up of the base Ubuntu doc…   1
1and1internet/ubuntu-16-healthcheck                       ubuntu-16-healthcheck                           0                                       [OK]
pivotaldata/ubuntu-gpdb-dev                               Ubuntu images for GPDB development              0
smartentry/ubuntu                                         ubuntu with smartentry                          0                                       [OK]
ossobv/ubuntu
...

Tại cột Official/ OK là hình ảnh được hỗ trợ phát triển từ Docker Hub. Để tải xuống hình ảnh mà bạn đã chọn, hãy dùng lệnh con là pull:

  • Câu lệnh tải tệp Ubuntu về máy tính như sau:

$ docker pull ubuntu

  • Bạn sẽ nhận được kết quả:

Output
Using default tag: latest
latest: Pulling from library/ubuntu
16ec32c2132b: Pull complete
Digest: sha256:82becede498899ec668628e7cb0ad87b6e1c371cb8a1e597d83a47fac21d6af3
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Để khởi chạy containers bằng hình ảnh vừa tải xuống, bạn dùng lệnh run. Như ở ví dụ về hình ảnh Hello-word bạn có thể thấy, nếu chạy lệnh run khi hình ảnh chưa được tải xuống thì trước tiên ứng dụng khách của Docker phải tải ảnh xuống và sử dụng nó để tạo containers.

  • Lệnh sau dùng để liệt kê các ảnh đã tải xuống:

$ docker images

  • Và đây là kết quả:

Output

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    1318b700e415   13 days ago    72.8MB
hello-world   latest    d1165f221234   5 months ago   13.3kB

Ở các phần sau, hình ảnh mà bạn dùng để tạo containers có thể sẽ được thay đổi và được dùng để tạo hình ảnh mới, sau đó sẽ được đẩy lên Docker Hub hoặc Docker.

Tiếp theo là các chạy containers một cách chi tiết.

Bước 5 – Chạy Docker Container

Ở ví dụ về containers, hello-word bạn đã biết được việc containers chạy và thoát sau khi nhận thông báo kiểm tra. Trên thực thế các containers có rất nhiều lợi ích, nó hoạt động tương tự như máy ảo và thân thiện với tài nguyên hơn.

  • Câu lệnh dưới đây là giả sử dụng hình ảnh Ubuntu để chạy containers. Để có quyền truy cập vào shell tương tác containers bạn dùng thêm -i-t:

$ docker run -it ubuntu

  • Dấu nhắc lệnh của bạn sẽ thay đổi để phản ánh thực tế là bạn hiện đang làm việc bên trong containers và sẽ có dạng sau:

Output
root@d9b100f2f636:/#

Hãy ghi nhớ id containers trong dấu nhắc lệnh, để về sau khi bạn muốn xóa containers bạn sẽ cần id này. Trong ví dụ trên id sẽ là d9b100f2f636.

Bây giờ bạn có thể chạy bất kỳ lệnh nào bên trong containers. Ví dụ: hãy cập nhật cơ sở dữ liệu gói bên trong containers. Bạn không cần đặt trước bất kỳ lệnh nào sudo, bởi vì bạn đang hoạt động bên trong containers với tư cách là người dùng gốc:

Bây giờ bạn có thể thực thi các lệnh bất kỳ trong containers. Bạn không cần thêm lệnh sudo vào các câu lệnh vì lúc này bạn đang hoạt động với tư cách là root.

  • Lệnh cập nhật cơ sở dữ liệu trong containers:

$ apt update

  • Lệnh cài đặt ứng dụng trong Node.js:

$ apt install nodejs

  • Khi thực thi câu lệnh trên, Node.js sẽ được cài đặt vào kho lưu trữ chính thức của Ubuntu. Để xác mình xem Node.js đã cài đặt hoàn tất hay chưa, bạn dùng lệnh:

$ node -v

  • Nếu đã được cài đặt, phản hồi sẽ cho thấy số phiên bản được cài đặt vào thiết bị đầu cuối của bạn:

Output
v10.19.0

Bạn thực hiện bên trong containers nào thì những thay đổi chỉ xảy ra bên trong containers đó.

  • Nhập lệnh exit để thoát khỏi containers

Tiếp đến là cách quản lý các containers của Docker

Bước 6 – Quản lý Docker Containers

  • Sau thời gian dài sử dụng, số lượng containers trong Docker sẽ tăng lên và có cái đang chạy có cái không. Để kiểm tra xem các vùng chức đang hoạt động, bạn dùng lệnh sau:

$ docker ps

  • Danh sách containers đang hoạt động:

Output
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Chúng ta đã đề cập 2 containers trong hướng dẫn là hello-wordubuntu. Tuy nó không còn hoạt động nhưng vẫn tồn tại trong hệ thống.

  • Để liệt kê các containers ở tất cả các trạng thái, bạn dùng lệnh sau:

$ docker ps -a

  • Kết quả:

e4dcb273b696   ubuntu        "bash"     About a minute ago   Exited (0) 30 seconds ago             suspicious_hopper
79b892f318e9   hello-world   "/hello"   3 minutes ago        Exited (0) 3 minutes ago              boring_jang

  • Lệnh này dùng để xem containers mới nhất:

$ docker ps -l

CONTAINER ID IMAGE   COMMAND  CREATED        STATUS                       PORTS  NAMES
e4dcb273b696 ubuntu  "bash"   2 minutes ago  Exited(0) About a minute ago        suspicious_hopper

  • Để khởi động một containers đã dừng trước đó, hãy dùng lệnh startid hoặc tên containers, trong ví dụ này sẽ áp dụng cho Ubuntu bằng id của nó:

$ docker start e4dcb273b696

  • Lúc này containers đã hoạt động trở lại, bạn có thể dùng ps để kiểm tra trạng thái:

CONTAINER ID IMAGE  COMMAND CREATED       STATUS       PORTS NAMES
e4dcb273b696 ubuntu "bash"  2 minutes ago Up 4 seconds       suspicious_hopper

  • Ngược lại, để dừng containers đang hoạt động bạn dùng lệnh stop cùng với id hoặc tên containers. Trong ví dụ này sẽ dùng containers với tên là sharp_volhard

$ docker stop suspicious_hopper

  • Để xóa containers không dùng đến bạn dùng lệnh rm cùng với id hoặc tên của nó. Ví dụ:

$ docker rm boring_jang

Bạn có thể dùng lệnh – để tạo containers mới hoặc dùng –rm để chuyển thành containers mới khi nó ngừng hoạt động. Để xem thông tin chi tiết về các lệnh khác bạn dùng docker run help.

Sau đây là cách chuyển containers thành hình ảnh để tạo containers mới.

Bước 7 – Cam kết các thay đổi trong containers thành Docker Image

Với hình ảnh của Docker, bạn có thể thực hiện các thao tác thêm, xóa, sửa tệp như máy ảo, những thay đổi này chỉ xảy ra trong containers đó, nhưng khi bạn chặn hoặc xóa containers bằng lệnh rm thì các thay đổi sẽ không còn.

Dưới đây là cách để lưu trạng thái containers ở dạng hình ảnh.

Ở các bước trước đó bạn đã cài Node.js vào containers của Ubuntu, lúc này bạn có thể chạy containers trên một hình ảnh, nhưng nó lại khác với hình ảnh mà bạn đã tạo ban đầu. Và bạn muốn dùng hình ảnh containers Node.js lúc đầu để làm cơ sở cho các hình ảnh sau này.

  • Bạn có thể cam kết các thay đổi của phiên bản hình ảnh bằng lệnh:

$ docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

Với lệnh -m sẽ thể hiện cho bạn biết những thay đổi đã được thực hiện và -a dùng để liệt kê những ai đã thay đổi, container_idid containers, reposity là tên người dùng Docker Hub mà bạn đã tạo.

Ví dụ:

$docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Khi bạn chạy câu lệnh trên, sẽ có một ảnh mới được lưu trên máy tính cục bộ của bạn. Ở bước 8 bạn sẽ học được cách đẩy ảnh vào kho lưu trữ của Docker Hub để người khác có thể truy cập được.

  • Liệt kê các hình ảnh mới của Docker:

$ docker images

  • Phản hồi như sau:

Output
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs      latest              7c1f35226ca6        7 seconds ago       179MB
ubuntu                   latest              113a43faa138        4 weeks ago         81.2MB
hello-world              latest              e38bc07ac18e        2 months ago        1.85kB

Từ kết quả ta có thể thấy, hình ảnh ubuntu-nodejs là mới nhất, nó được triển khai từ hình ảnh ubuntu của Docker Hub. Nhìn vào kích thước bạn có thể thấy sự khác biệt so với hình ảnh Ubuntu lúc đầu là đã được cài thêm Nodejs. Do đó, nếu bạn muốn sử dụng containers có cài Nodejs thì bạn có thể dùng hình ảnh này.

Tiếp theo là cách để có thể chia sẻ containers cho người dùng khác

Bước 8 – Đẩy Docker Images vào kho lưu trữ Docker

Để có thể tạo hình ảnh mới từ một hình ảnh cơ sở ban đầu, bạn có thể chia sẻ nó cho bạn bè, người dùng Docker Hub, … Để làm điều này bạn cần đẩy hình ảnh lên Docker Hub hoặc cơ quan đăng ký Docker bất kỳ khác. Việc này yêu cầu bạn phải có tài khoản.

Ở đây chúng tôi sẽ hướng dẫn bạn đẩy hình ảnh vào Docker Hub.

  • Đầu tiên, cần đăng nhập vào Docker Hub:

$ docker login -u docker-registry-username

  • Bạn cần nhập chính xác mật khẩu Docker Hub của mình.

Lưu ý: Nếu tên người dùng Docker của bạn khác với tên người dùng mà bạn tạo hình ảnh. Thì bạn cần gắn hình ảnh của mình bằng tên người dùng Docker.

Bạn sẽ nhập nó ở bước cuối cùng của ví dụ:

$ docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

  • Tiếp theo, dùng lệnh sau để đẩy hình ảnh:

$ docker push docker-registry-username/docker-image-name

  • Lệnh sau dùng để đảnh hình ảnh ubuntu-nodejs vào sammy:

$ docker push sammy/ubuntu-nodejs

  • Sẽ mất vài phút để tải ảnh lên, sau khi hoàn tất kết quả sẽ như sau:

Output
The push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed
...

  • Sau khi hình ảnh được đẩy thành công, nó sẽ được hiển thị trong tài khoản của bạn như hình minh họa:

Cai dat thanh cong docker

  • Nếu trong quá trình đẩy hình ảnh bạn gặp lỗi này, nguyên nhân có thể do bạn không đăng nhập:

Output
The push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

  • Hãy dùng lệnh docker login sau đó thực hiện lại quá trình đẩy.
  • Sau khi hoàn tất thì kiểm tra xem hình ảnh đã được đẩy lên Docker Hub của bạn hay chưa.
  • Lúc này hãy thử kéo hình ảnh sang thiết bị mới và bắt đầu tạo một containers mới từ nó bằng lệnh docker pull sammy/ubuntu-nodejs

Tổng kết về cách cài đặt và sử dụng Docker

Hướng dẫn trên đã giúp bạn cài đặt Docker, cách làm việc với hình ảnh và containers của nó, đồng thời cũng biết cách sửa đổi containers bằng cách đẩy ảnh lên Docker Hub. Hy vọng bài viết mang đến có các bạn một trải nghiệm hữu ích.

Nếu bạn bất cứ câu hỏi nào liên quan đến cách cài đặt và sử dụng Docker, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền .VN tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký tên miền .VN:

  • Giảm ngay 140k.
  • Miễn phí 100% dịch vụ khởi tạo tên miền .VN

Còn rất nhiều tên miền .VN đẹp đang chờ bạn. Nhanh tay sở hữu ngay hôm nay trước khi đối thủ của bạn nhắm tới.

domain .vn

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger