{"id":35048,"date":"2024-10-28T16:01:37","date_gmt":"2024-10-28T09:01:37","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/28\/how-to-use-docker-compose\/"},"modified":"2024-10-28T16:01:37","modified_gmt":"2024-10-28T09:01:37","slug":"how-to-use-docker-compose","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/28\/how-to-use-docker-compose\/","title":{"rendered":"C\u00e1ch s\u1eed d\u1ee5ng Docker Compose"},"content":{"rendered":"<h2 id=\"what-is-docker-compose\">Docker Compose l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#what-is-docker-compose\"><\/a><\/h2>\n<p>N\u1ebfu \u1ee9ng d\u1ee5ng Docker c\u1ee7a b\u1ea1n bao g\u1ed3m nhi\u1ec1u h\u01a1n m\u1ed9t container (v\u00ed d\u1ee5: m\u00e1y ch\u1ee7 web v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u ch\u1ea1y trong c\u00e1c container ri\u00eang bi\u1ec7t), vi\u1ec7c x\u00e2y d\u1ef1ng, ch\u1ea1y v\u00e0 k\u1ebft n\u1ed1i c\u00e1c container t\u1eeb c\u00e1c Dockerfile ri\u00eang bi\u1ec7t r\u1ea5t c\u1ed3ng k\u1ec1nh v\u00e0 t\u1ed1n th\u1eddi gian. Docker Compose gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 n\u00e0y b\u1eb1ng c\u00e1ch cho ph\u00e9p b\u1ea1n s\u1eed d\u1ee5ng t\u1ec7p YAML \u0111\u1ec3&nbsp;<a href=\"https:\/\/docs.docker.com\/compose\/overview\/\" target=\"_blank\" rel=\"noreferrer noopener\">x\u00e1c \u0111\u1ecbnh c\u00e1c \u1ee9ng d\u1ee5ng \u0111a container<\/a>&nbsp;. B\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh c\u1ea5u h\u00ecnh nhi\u1ec1u container t\u00f9y \u00fd, c\u00e1ch ch\u00fang n\u00ean \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng v\u00e0 k\u1ebft n\u1ed1i, c\u0169ng nh\u01b0 n\u01a1i l\u01b0u tr\u1eef d\u1eef li\u1ec7u. Khi t\u1ec7p YAML ho\u00e0n t\u1ea5t, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y m\u1ed9t l\u1ec7nh duy nh\u1ea5t \u0111\u1ec3 x\u00e2y d\u1ef1ng, ch\u1ea1y v\u00e0 \u0111\u1ecbnh c\u1ea5u h\u00ecnh t\u1ea5t c\u1ea3 c\u00e1c container.<\/p>\n<p>H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd gi\u1ea3i th\u00edch c\u00e1ch&nbsp;<code>docker-compose.yml<\/code>s\u1eafp x\u1ebfp t\u1ec7p v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng t\u1ec7p \u0111\u1ec3 t\u1ea1o m\u1ed9t s\u1ed1 c\u1ea5u h\u00ecnh \u1ee9ng d\u1ee5ng c\u01a1 b\u1ea3n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Nh\u00ecn chung, c\u00e1c container trong \u1ee9ng d\u1ee5ng \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng b\u1eb1ng Docker Compose s\u1ebd ch\u1ea1y tr\u00ean c\u00f9ng m\u1ed9t m\u00e1y ch\u1ee7. Vi\u1ec7c qu\u1ea3n l\u00fd c\u00e1c container ch\u1ea1y tr\u00ean c\u00e1c m\u00e1y ch\u1ee7 kh\u00e1c nhau th\u01b0\u1eddng y\u00eau c\u1ea7u m\u1ed9t c\u00f4ng c\u1ee5 b\u1ed5 sung, ch\u1eb3ng h\u1ea1n nh\u01b0&nbsp;<a href=\"https:\/\/docs.docker.com\/engine\/swarm\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Swarm<\/a>&nbsp;ho\u1eb7c&nbsp;<a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kubernetes<\/a>&nbsp;.<\/p>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#before-you-begin\"><\/a><\/h2>\n<h3 id=\"install-docker-ce\">C\u00e0i \u0111\u1eb7t Docker CE<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#install-docker-ce\"><\/a><\/h3>\n<p>B\u1ea1n s\u1ebd c\u1ea7n m\u1ed9t Linode \u0111\u00e3 c\u00e0i \u0111\u1eb7t Docker CE \u0111\u1ec3 l\u00e0m theo c\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y.<\/p>\n<p>\u0110\u1ec3 c\u00e0i \u0111\u1eb7t Docker CE (Phi\u00ean b\u1ea3n c\u1ed9ng \u0111\u1ed3ng), h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn trong m\u1ed9t trong c\u00e1c h\u01b0\u1edbng d\u1eabn d\u01b0\u1edbi \u0111\u00e2y:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.linode.com\/docs\/guides\/installing-and-using-docker-on-ubuntu-and-debian\/\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker tr\u00ean Ubuntu v\u00e0 Debian<\/a><\/li>\n<li><a href=\"https:\/\/www.linode.com\/docs\/guides\/installing-and-using-docker-on-centos-and-fedora\/\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker tr\u00ean CentOS v\u00e0 Fedora<\/a><\/li>\n<\/ul>\n<p>\u0110\u1ec3 xem h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t cho c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i Linux ho\u1eb7c h\u1ec7 \u0111i\u1ec1u h\u00e0nh kh\u00e1c nh\u01b0 Mac ho\u1eb7c Windows, h\u00e3y tham kh\u1ea3o t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a Docker t\u1ea1i \u0111\u00e2y:&nbsp;<a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noreferrer noopener\">C\u00e0i \u0111\u1eb7t Docker Engine<\/a><\/p>\n<h3 id=\"install-docker-compose\">C\u00e0i \u0111\u1eb7t Docker Compose<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#install-docker-compose\"><\/a><\/h3>\n<p>Docker Compose c\u00f3 s\u1eb5n trong c\u00e1c bi\u1ebfn th\u1ec3 plugin v\u00e0 \u0111\u1ed9c l\u1eadp. Tuy nhi\u00ean, t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a Docker \u01b0u ti\u00ean plugin. H\u01a1n n\u1eefa, plugin c\u00f3 c\u00e0i \u0111\u1eb7t \u0111\u01a1n gi\u1ea3n v\u00e0 ho\u1ea1t \u0111\u1ed9ng t\u1ed1t v\u1edbi c\u00e1c l\u1ec7nh Docker Compose tr\u01b0\u1edbc \u0111\u00e2y.<\/p>\n<p>C\u00e1c b\u01b0\u1edbc n\u00e0y cho th\u1ea5y c\u00e1ch c\u00e0i \u0111\u1eb7t plugin Docker Compose. N\u1ebfu b\u1ea1n quan t\u00e2m \u0111\u1ebfn vi\u1ec7c c\u00e0i \u0111\u1eb7t \u1ee9ng d\u1ee5ng Docker Compose \u0111\u1ed9c \u200b\u200bl\u1eadp, h\u00e3y l\u00e0m theo&nbsp;<a href=\"https:\/\/docs.docker.com\/compose\/install\/other\/#on-linux\" target=\"_blank\" rel=\"noreferrer noopener\">h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t ch\u00ednh th\u1ee9c<\/a>&nbsp;c\u1ee7a Docker .<\/p>\n<p>Ghi ch\u00fa<\/p>\n<p>Nhi\u1ec1u h\u01b0\u1edbng d\u1eabn v\u1eabn gi\u1eef nguy\u00ean \u0111\u1ecbnh d\u1ea1ng l\u1ec7nh \u0111\u1ed9c l\u1eadp Docker Compose, tr\u00f4ng nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose <strong>&#91;<\/strong>command<strong>]<\/strong><\/code><\/pre>\n<p>H\u00e3y \u0111\u1ea3m b\u1ea3o thay th\u1ebf l\u1ec7nh n\u00e0y b\u1eb1ng \u0111\u1ecbnh d\u1ea1ng l\u1ec7nh c\u1ee7a plugin khi s\u1eed d\u1ee5ng ph\u01b0\u01a1ng ph\u00e1p c\u00e0i \u0111\u1eb7t n\u00e0y. \u0110i\u1ec1u n\u00e0y th\u01b0\u1eddng ch\u1ec9 c\u00f3 ngh\u0129a l\u00e0 thay th\u1ebf d\u1ea5u g\u1ea1ch n\u1ed1i b\u1eb1ng m\u1ed9t kho\u1ea3ng tr\u1eafng, nh\u01b0 trong:<\/p>\n<pre class=\"wp-block-code\"><code>docker compose <strong>&#91;<\/strong>command<strong>]<\/strong><\/code><\/pre>\n<p>1.B\u1eadt kho l\u01b0u tr\u1eef Docker cho tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a h\u1ec7 th\u1ed1ng. Kho l\u01b0u tr\u1eef th\u01b0\u1eddng \u0111\u00e3 \u0111\u01b0\u1ee3c b\u1eadt sau khi b\u1ea1n c\u00e0i \u0111\u1eb7t c\u00f4ng c\u1ee5 Docker. H\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn li\u00ean quan c\u1ee7a ch\u00fang t\u00f4i v\u1ec1 c\u00e1ch c\u00e0i \u0111\u1eb7t Docker \u0111\u1ec3 b\u1eadt kho l\u01b0u tr\u1eef tr\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n.<\/p>\n<p>2.C\u1eadp nh\u1eadt tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a b\u1ea1n v\u00e0 c\u00e0i \u0111\u1eb7t plugin Docker Compose.<\/p>\n<p>Tr\u00ean h\u1ec7 th\u1ed1ng&nbsp;<strong>Debian<\/strong>&nbsp;v\u00e0&nbsp;<strong>Ubuntu<\/strong>&nbsp;, h\u00e3y s\u1eed d\u1ee5ng c\u00e1c l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install docker-compose-plugin<\/code><\/pre>\n<p>Tr\u00ean&nbsp;<strong>CentOS<\/strong>&nbsp;,&nbsp;<strong>Fedora<\/strong>&nbsp;v\u00e0 c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i d\u1ef1a tr\u00ean RPM kh\u00e1c, h\u00e3y s\u1eed d\u1ee5ng c\u00e1c l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>sudo yum update\nsudo yum install docker-compose-plugin<\/code><\/pre>\n<h2 id=\"basic-usage\">C\u00e1ch s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#basic-usage\"><\/a><\/h2>\n<p>Ph\u1ea7n n\u00e0y s\u1ebd xem x\u00e9t m\u1ed9t v\u00ed d\u1ee5 v\u1ec1 t\u1ec7p Docker Compose \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb&nbsp;<a href=\"https:\/\/docs.docker.com\/compose\/wordpress\/#build-the-project\" target=\"_blank\" rel=\"noreferrer noopener\">t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a Docker<\/a>&nbsp;.<\/p>\n<p>1.M\u1edf&nbsp;<code>docker-compose.yml<\/code>trong tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n v\u00e0 th\u00eam n\u1ed9i dung sau:<\/p>\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n   db:\n     image: mysql:5.7\n     volumes:\n       - db_data:\/var\/lib\/mysql\n     restart: always\n     environment:\n       MYSQL_ROOT_PASSWORD: somewordpress\n       MYSQL_DATABASE: wordpress\n       MYSQL_USER: wordpress\n       MYSQL_PASSWORD: wordpress\n\n   wordpress:\n     depends_on:\n       - db\n     image: wordpress:latest\n     ports:\n       - \"8000:80\"\n     restart: always\n     environment:\n       WORDPRESS_DB_HOST: db:3306\n       WORDPRESS_DB_USER: wordpress\n       WORDPRESS_DB_PASSWORD: wordpress\nvolumes:\n    db_data:<\/code><\/pre>\n<p>2.L\u01b0u t\u1ec7p v\u00e0 ch\u1ea1y Docker Compose t\u1eeb c\u00f9ng th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose up -d\n<\/code><\/pre>\n<p>\u0110i\u1ec1u n\u00e0y s\u1ebd x\u00e2y d\u1ef1ng v\u00e0 ch\u1ea1y c\u00e1c container&nbsp;<code>db<\/code>v\u00e0&nbsp;<code>wordpress<\/code>. Gi\u1ed1ng nh\u01b0 khi ch\u1ea1y m\u1ed9t container duy nh\u1ea5t v\u1edbi&nbsp;<code>docker run<\/code>,&nbsp;<code>-d<\/code>c\u1edd s\u1ebd kh\u1edfi \u0111\u1ed9ng c\u00e1c container \u1edf ch\u1ebf \u0111\u1ed9 t\u00e1ch bi\u1ec7t.<\/p>\n<p>B\u00e2y gi\u1edd b\u1ea1n c\u00f3 m\u1ed9t container WordPress v\u00e0 container MySQL \u0111ang ch\u1ea1y tr\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00ecnh. \u0110i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn&nbsp;<code>192.0.8.1:8000\/wordpress<\/code>trong tr\u00ecnh duy\u1ec7t web \u0111\u1ec3 xem \u1ee9ng d\u1ee5ng WordPress m\u1edbi c\u00e0i \u0111\u1eb7t c\u1ee7a b\u1ea1n. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng&nbsp;<code>docker ps<\/code>\u0111\u1ec3 kh\u00e1m ph\u00e1 th\u00eam c\u1ea5u h\u00ecnh k\u1ebft qu\u1ea3:<\/p>\n<pre class=\"wp-block-code\"><code>docker ps\n<\/code><\/pre>\n<p>4.D\u1eebng l\u1ea1i v\u00e0 lo\u1ea1i b\u1ecf c\u00e1c th\u00f9ng ch\u1ee9a:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose down\n<\/code><\/pre>\n<h2 id=\"compose-file-syntax\">So\u1ea1n th\u1ea3o c\u00fa ph\u00e1p t\u1eadp tin<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#compose-file-syntax\"><\/a><\/h2>\n<p>M\u1ed9t&nbsp;<code>docker-compose.yml<\/code>t\u1eadp tin \u0111\u01b0\u1ee3c s\u1eafp x\u1ebfp th\u00e0nh b\u1ed1n ph\u1ea7n:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Ch\u1ec9 th\u1ecb<\/th>\n<th>S\u1eed d\u1ee5ng<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>phi\u00ean b\u1ea3n<\/td>\n<td>Ch\u1ec9 \u0111\u1ecbnh phi\u00ean b\u1ea3n c\u00fa ph\u00e1p t\u1ec7p Compose. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd s\u1eed d\u1ee5ng Phi\u00ean b\u1ea3n 3 trong su\u1ed1t qu\u00e1 tr\u00ecnh.<\/td>\n<\/tr>\n<tr>\n<td>d\u1ecbch v\u1ee5<\/td>\n<td>Trong Docker, d\u1ecbch v\u1ee5 l\u00e0 t\u00ean g\u1ecdi c\u1ee7a&nbsp;<a href=\"https:\/\/docs.docker.com\/get-started\/part3\/#introduction\" target=\"_blank\" rel=\"noreferrer noopener\">\u201cContainer in production\u201d<\/a>&nbsp;. Ph\u1ea7n n\u00e0y \u0111\u1ecbnh ngh\u0129a c\u00e1c container s\u1ebd \u0111\u01b0\u1ee3c kh\u1edfi \u0111\u1ed9ng nh\u01b0 m\u1ed9t ph\u1ea7n c\u1ee7a phi\u00ean b\u1ea3n Docker Compose.<\/td>\n<\/tr>\n<tr>\n<td>m\u1ea1ng l\u01b0\u1edbi<\/td>\n<td>Ph\u1ea7n n\u00e0y \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 c\u1ea5u h\u00ecnh m\u1ea1ng cho \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n. B\u1ea1n c\u00f3 th\u1ec3 thay \u0111\u1ed5i c\u00e0i \u0111\u1eb7t c\u1ee7a m\u1ea1ng m\u1eb7c \u0111\u1ecbnh, k\u1ebft n\u1ed1i v\u1edbi m\u1ea1ng b\u00ean ngo\u00e0i ho\u1eb7c x\u00e1c \u0111\u1ecbnh m\u1ea1ng d\u00e0nh ri\u00eang cho \u1ee9ng d\u1ee5ng.<\/td>\n<\/tr>\n<tr>\n<td>kh\u1ed1i l\u01b0\u1ee3ng<\/td>\n<td>G\u1eafn \u0111\u01b0\u1eddng d\u1eabn \u0111\u01b0\u1ee3c li\u00ean k\u1ebft tr\u00ean m\u00e1y ch\u1ee7 m\u00e0 container c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Ph\u1ea7n l\u1edbn h\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd t\u1eadp trung v\u00e0o vi\u1ec7c thi\u1ebft l\u1eadp container b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>services<\/code>ph\u1ea7n n\u00e0y. Sau \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 ch\u1ec9 th\u1ecb ph\u1ed5 bi\u1ebfn \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 thi\u1ebft l\u1eadp v\u00e0 c\u1ea5u h\u00ecnh container:<\/p>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Ch\u1ec9 th\u1ecb<\/th>\n<th>S\u1eed d\u1ee5ng<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>image<\/code><\/td>\n<td>\u0110\u1eb7t h\u00ecnh \u1ea3nh s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e2y d\u1ef1ng container. S\u1eed d\u1ee5ng ch\u1ec9 th\u1ecb n\u00e0y gi\u1ea3 \u0111\u1ecbnh r\u1eb1ng h\u00ecnh \u1ea3nh \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh \u0111\u00e3 t\u1ed3n t\u1ea1i tr\u00ean m\u00e1y ch\u1ee7 ho\u1eb7c tr\u00ean&nbsp;<a href=\"https:\/\/hub.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Hub<\/a>&nbsp;.<\/td>\n<\/tr>\n<tr>\n<td><code>build<\/code><\/td>\n<td>C\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh n\u00e0y thay cho&nbsp;<code>image<\/code>. Ch\u1ec9 \u0111\u1ecbnh v\u1ecb tr\u00ed c\u1ee7a Dockerfile s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e2y d\u1ef1ng container n\u00e0y.<\/td>\n<\/tr>\n<tr>\n<td><code>db<\/code><\/td>\n<td>Trong tr\u01b0\u1eddng h\u1ee3p t\u1ec7p Dockercompose v\u00ed d\u1ee5,&nbsp;<code>db<\/code>l\u00e0 m\u1ed9t bi\u1ebfn cho v\u00f9ng ch\u1ee9a m\u00e0 b\u1ea1n s\u1eafp x\u00e1c \u0111\u1ecbnh.<\/td>\n<\/tr>\n<tr>\n<td><code>restart<\/code><\/td>\n<td>Y\u00eau c\u1ea7u container kh\u1edfi \u0111\u1ed9ng l\u1ea1i n\u1ebfu h\u1ec7 th\u1ed1ng kh\u1edfi \u0111\u1ed9ng l\u1ea1i.<\/td>\n<\/tr>\n<tr>\n<td><code>volumes<\/code><\/td>\n<td>G\u1eafn m\u1ed9t \u0111\u01b0\u1eddng d\u1eabn \u0111\u01b0\u1ee3c li\u00ean k\u1ebft tr\u00ean m\u00e1y ch\u1ee7 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c container s\u1eed d\u1ee5ng<\/td>\n<\/tr>\n<tr>\n<td><code>environment<\/code><\/td>\n<td>X\u00e1c \u0111\u1ecbnh c\u00e1c bi\u1ebfn m\u00f4i tr\u01b0\u1eddng s\u1ebd \u0111\u01b0\u1ee3c truy\u1ec1n v\u00e0o l\u1ec7nh ch\u1ea1y Docker.<\/td>\n<\/tr>\n<tr>\n<td><code>depends_on<\/code><\/td>\n<td>\u0110\u1eb7t m\u1ed9t d\u1ecbch v\u1ee5 l\u00e0m ph\u1ee5 thu\u1ed9c cho v\u00f9ng ch\u1ee9a \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh theo kh\u1ed1i hi\u1ec7n t\u1ea1i<\/td>\n<\/tr>\n<tr>\n<td><code>port<\/code><\/td>\n<td>\u00c1nh x\u1ea1 m\u1ed9t c\u1ed5ng t\u1eeb container t\u1edbi m\u00e1y ch\u1ee7 theo c\u00e1ch sau:<code>host:container<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>links<\/code><\/td>\n<td>Li\u00ean k\u1ebft d\u1ecbch v\u1ee5 n\u00e0y v\u1edbi b\u1ea5t k\u1ef3 d\u1ecbch v\u1ee5 n\u00e0o kh\u00e1c trong t\u1ec7p Docker Compose b\u1eb1ng c\u00e1ch ch\u1ec9 \u0111\u1ecbnh t\u00ean c\u1ee7a ch\u00fang t\u1ea1i \u0111\u00e2y.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>C\u00f3 nhi\u1ec1u ch\u1ec9 th\u1ecb c\u1ea5u h\u00ecnh kh\u00e1c. Xem&nbsp;<a href=\"https:\/\/docs.docker.com\/compose\/compose-file\" target=\"_blank\" rel=\"noreferrer noopener\">tham chi\u1ebfu Compose File<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft chi ti\u1ebft.<\/p>\n<p class=\"has-background\" style=\"background-color:#f32a2a33\">Quan tr\u1ecdng: V\u00ed d\u1ee5&nbsp;<code>docker-compose.yml<\/code>tr\u00ean s\u1eed d\u1ee5ng&nbsp;<code>environment<\/code>ch\u1ec9 th\u1ecb \u0111\u1ec3 l\u01b0u tr\u1eef m\u1eadt kh\u1ea9u ng\u01b0\u1eddi d\u00f9ng MySQL tr\u1ef1c ti\u1ebfp trong t\u1ec7p YAML \u0111\u1ec3 nh\u1eadp v\u00e0o v\u00f9ng ch\u1ee9a d\u01b0\u1edbi d\u1ea1ng bi\u1ebfn m\u00f4i tr\u01b0\u1eddng. \u0110i\u1ec1u n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c khuy\u1ebfn kh\u00edch \u0111\u1ed1i v\u1edbi th\u00f4ng tin nh\u1ea1y c\u1ea3m trong m\u00f4i tr\u01b0\u1eddng s\u1ea3n xu\u1ea5t. Thay v\u00e0o \u0111\u00f3, th\u00f4ng tin nh\u1ea1y c\u1ea3m c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong m\u1ed9t&nbsp;<code>.env<\/code>t\u1ec7p ri\u00eang (kh\u00f4ng \u0111\u01b0\u1ee3c ki\u1ec3m tra trong ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n ho\u1eb7c c\u00f4ng khai) v\u00e0 truy c\u1eadp t\u1eeb b\u00ean trong&nbsp;<code>docker-compose.yml<\/code>b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>env_file<\/code>ch\u1ec9 th\u1ecb.<\/p>\n<h2 id=\"build-an-application-from-scratch\">X\u00e2y d\u1ef1ng m\u1ed9t \u1ee9ng d\u1ee5ng t\u1eeb \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#build-an-application-from-scratch\"><\/a><\/h2>\n<p>T\u1ea1o m\u1ed9t&nbsp;<code>docker-compose.yml<\/code>t\u1ec7p theo t\u1eebng ph\u1ea7n \u0111\u1ec3 minh h\u1ecda c\u00e1c b\u01b0\u1edbc x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng \u0111a v\u00f9ng ch\u1ee9a.<\/p>\n<h3 id=\"define-a-simple-service\">\u0110\u1ecbnh ngh\u0129a m\u1ed9t d\u1ecbch v\u1ee5 \u0111\u01a1n gi\u1ea3n:<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#define-a-simple-service\"><\/a><\/h3>\n<p>1.T\u1ea1o m\u1ed9t m\u1ee5c m\u1edbi&nbsp;<code>docker-compose.yml<\/code>trong tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n v\u00e0 th\u00eam n\u1ed9i dung sau:<\/p>\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  distro:\n    image: alpine\n    restart: always\n    container_name: Alpine_Distro\n    entrypoint: tail -f \/dev\/null<\/code><\/pre>\n<p>M\u1ed7i m\u1ee5c trong&nbsp;<code>services<\/code>ph\u1ea7n s\u1ebd t\u1ea1o m\u1ed9t v\u00f9ng ch\u1ee9a ri\u00eang khi&nbsp;<code>docker-compose<\/code>ch\u1ea1y. T\u1ea1i th\u1eddi \u0111i\u1ec3m n\u00e0y, ph\u1ea7n ch\u1ee9a m\u1ed9t v\u00f9ng ch\u1ee9a duy nh\u1ea5t d\u1ef1a tr\u00ean b\u1ea3n ph\u00e2n ph\u1ed1i Alpine ch\u00ednh th\u1ee9c:<\/p>\n<ul>\n<li>Ch\u1ec9 th\u1ecb n\u00e0y&nbsp;<code>restart<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ch\u1ec9 ra r\u1eb1ng container ph\u1ea3i lu\u00f4n kh\u1edfi \u0111\u1ed9ng l\u1ea1i (v\u00ed d\u1ee5 nh\u01b0 sau khi g\u1eb7p s\u1ef1 c\u1ed1 ho\u1eb7c kh\u1edfi \u0111\u1ed9ng l\u1ea1i h\u1ec7 th\u1ed1ng).<\/li>\n<li>Ch\u1ec9 th\u1ecb n\u00e0y&nbsp;<code>container_name<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ghi \u0111\u00e8 t\u00ean v\u00f9ng ch\u1ee9a \u0111\u01b0\u1ee3c t\u1ea1o ng\u1eabu nhi\u00ean v\u00e0 thay th\u1ebf b\u1eb1ng t\u00ean d\u1ec5 nh\u1edb v\u00e0 d\u1ec5 l\u00e0m vi\u1ec7c h\u01a1n.<\/li>\n<li>C\u00e1c container Docker tho\u00e1t theo m\u1eb7c \u0111\u1ecbnh n\u1ebfu kh\u00f4ng c\u00f3 ti\u1ebfn tr\u00ecnh n\u00e0o \u0111ang ch\u1ea1y tr\u00ean ch\u00fang.&nbsp;<code>tail -f<\/code>l\u00e0 m\u1ed9t ti\u1ebfn tr\u00ecnh \u0111ang di\u1ec5n ra, v\u00ec v\u1eady n\u00f3 s\u1ebd ch\u1ea1y v\u00f4 th\u1eddi h\u1ea1n v\u00e0 ng\u0103n container d\u1eebng l\u1ea1i. M\u1eb7c \u0111\u1ecbnh&nbsp;<code>entrypoint<\/code>b\u1ecb ghi \u0111\u00e8 \u0111\u1ec3 container ti\u1ebfp t\u1ee5c ch\u1ea1y.<\/li>\n<\/ul>\n<p>2.\u0110\u01b0a th\u00f9ng ch\u1ee9a c\u1ee7a b\u1ea1n l\u00ean:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose up -d\n<\/code><\/pre>\n<p>3.Ki\u1ec3m tra tr\u1ea1ng th\u00e1i container c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>docker ps\n<\/code><\/pre>\n<p>\u0110\u1ea7u ra s\u1ebd gi\u1ed1ng nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS               NAMES\n967013c36a27        alpine              \"tail -f \/dev\/null\"   3 seconds ago       Up <\/code><\/pre>\n<p>4.\u0110em th\u00f9ng ch\u1ee9a xu\u1ed1ng:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose down\n<\/code><\/pre>\n<h3 id=\"add-additional-services\">Th\u00eam d\u1ecbch v\u1ee5 b\u1ed5 sung<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#add-additional-services\"><\/a><\/h3>\n<p>T\u1eeb \u0111\u00e2y, b\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u x\u00e2y d\u1ef1ng h\u1ec7 sinh th\u00e1i container. B\u1ea1n c\u00f3 th\u1ec3 x\u00e1c \u0111\u1ecbnh c\u00e1ch ch\u00fang ho\u1ea1t \u0111\u1ed9ng c\u00f9ng nhau v\u00e0 giao ti\u1ebfp.<\/p>\n<p>1.M\u1edf l\u1ea1i&nbsp;<code>docker-compos.yml<\/code>v\u00e0 th\u00eam&nbsp;<code>database<\/code>d\u1ecbch v\u1ee5 b\u00ean d\u01b0\u1edbi:<\/p>\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  distro:\n    image: alpine\n    container_name: Alpine_Distro\n    restart: always\n    entrypoint: tail -f \/dev\/null\n\n  database:\n    image: postgres:latest\n    container_name: postgres_db\n    volumes:\n      - ..\/dumps:\/tmp\/\n    ports:\n      - \"5432:5432\"<\/code><\/pre>\n<p>Hi\u1ec7n nay c\u00f3 hai d\u1ecbch v\u1ee5 \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh:<\/p>\n<ul>\n<li>Ph\u00e2n ph\u1ed1i<\/li>\n<li>C\u01a1 s\u1edf d\u1eef li\u1ec7u<\/li>\n<\/ul>\n<p>D\u1ecbch v\u1ee5 Distro gi\u1ed1ng nh\u01b0 tr\u01b0\u1edbc. M\u00e1y ch\u1ee7 c\u01a1 s\u1edf d\u1eef li\u1ec7u ch\u1ee9a c\u00e1c h\u01b0\u1edbng d\u1eabn cho m\u1ed9t container postgres v\u00e0 c\u00e1c ch\u1ec9 th\u1ecb:&nbsp;<code>volumes: - ..\/dumps:\/tmp<\/code>v\u00e0&nbsp;<code>ports:-\"5432:5432\"<\/code>, ch\u1ec9 th\u1ecb \u0111\u1ea7u ti\u00ean \u00e1nh x\u1ea1&nbsp;<code>\/dumps<\/code>th\u01b0 m\u1ee5c containerd v\u00e0o th\u01b0 m\u1ee5c c\u1ee5c b\u1ed9 c\u1ee7a ch\u00fang t\u00f4i&nbsp;<code>\/tmp<\/code>. Ch\u1ec9 th\u1ecb th\u1ee9 hai \u00e1nh x\u1ea1 c\u00e1c c\u1ed5ng container v\u00e0o c\u00e1c c\u1ed5ng c\u1ee7a m\u00e1y ch\u1ee7 c\u1ee5c b\u1ed9.<\/p>\n<p>2.Ki\u1ec3m tra c\u00e1c container \u0111ang ch\u1ea1y:<\/p>\n<pre class=\"wp-block-code\"><code>docker ps\n<\/code><\/pre>\n<p>L\u1ec7nh n\u00e0y hi\u1ec3n th\u1ecb tr\u1ea1ng th\u00e1i c\u1ee7a c\u00e1c container, \u00e1nh x\u1ea1 c\u1ed5ng, t\u00ean v\u00e0 l\u1ec7nh cu\u1ed1i c\u00f9ng \u0111ang ch\u1ea1y tr\u00ean ch\u00fang. \u0110i\u1ec1u quan tr\u1ecdng c\u1ea7n l\u01b0u \u00fd l\u00e0 container postgres \u0111\u1ecdc &#8220;docker-entrypoint&#8230;&#8221; b\u00ean d\u01b0\u1edbi c\u00e1c l\u1ec7nh. T\u1eadp l\u1ec7nh Postgres&nbsp;<a href=\"https:\/\/github.com\/docker-library\/postgres\/blob\/master\/docker-entrypoint.sh\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Entrypoint<\/a>&nbsp;l\u00e0 th\u1ee9 cu\u1ed1i c\u00f9ng kh\u1edfi ch\u1ea1y khi container kh\u1edfi \u0111\u1ed9ng.<\/p>\n<pre class=\"wp-block-code\"><code>CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES\necc37246f6ef        postgres:latest     \"docker-entrypoint...\"   About a minute ago   Up About a minute   0.0.0.0:5432-&gt;5432\/tcp   postgres_db\n35dab3e712d6        alpine              \"tail -f \/dev\/null\"      About a minute ago <\/code><\/pre>\n<p>3.\u0110em c\u1ea3 hai th\u00f9ng ch\u1ee9a xu\u1ed1ng:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose down\n<\/code><\/pre>\n<h3 id=\"add-an-nginx-service\">Th\u00eam d\u1ecbch v\u1ee5 nginx<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#add-an-nginx-service\"><\/a><\/h3>\n<p>1.Th\u00eam m\u1ed9t container nginx \u0111\u1ec3 \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n c\u00f3 th\u1ec3 ph\u1ee5c v\u1ee5 c\u00e1c trang web:<\/p>\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  distro:\n    image: alpine\n    container_name: Alpine_Distro\n    restart: always\n    entrypoint: tail -f \/dev\/null\n\n  database:\n    image: postgres:latest\n    container_name: postgres_db\n    volumes:\n      - ..\/dumps:\/tmp\/\n    ports:\n      - \"5432:5432\"\n  web:\n    image: nginx:latest\n    container_name: nginx\n    volumes:\n      - .\/mysite.template:\/etc\/nginx\/conf.d\/mysite.template\n    ports:\n      - \"8080:80\"\n    environment:\n      - NGINX_HOST=example.com\n      - NGINX_port=80\n    links:\n      - database:db\n      - distro<\/code><\/pre>\n<p>T\u1ec7p n\u00e0y&nbsp;<code>docker-compose<\/code>ch\u1ee9a m\u1ed9t s\u1ed1 ch\u1ec9 th\u1ecb m\u1edbi:&nbsp;<em>environment<\/em>&nbsp;v\u00e0&nbsp;<em>links<\/em>&nbsp;. Ch\u1ec9 th\u1ecb \u0111\u1ea7u ti\u00ean thi\u1ebft l\u1eadp c\u00e1c t\u00f9y ch\u1ecdn m\u1ee9c th\u1eddi gian ch\u1ea1y trong v\u00f9ng ch\u1ee9a.&nbsp;<code>links<\/code>t\u1ea1o m\u1ed9t m\u1ea1ng l\u01b0\u1edbi ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c v\u00f9ng ch\u1ee9a. V\u00f9ng ch\u1ee9a nginx ph\u1ee5 thu\u1ed9c v\u00e0o hai v\u00f9ng ch\u1ee9a kia \u0111\u1ec3 th\u1ef1c thi. Ngo\u00e0i ra, c\u00e1c v\u00f9ng ch\u1ee9a t\u01b0\u01a1ng \u1ee9ng s\u1ebd c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c t\u1ea1i t\u00ean m\u00e1y ch\u1ee7 \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh b\u1edfi b\u00ed danh. Trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, l\u1ec7nh ping&nbsp;<code>db<\/code>t\u1eeb&nbsp;<code>web<\/code>v\u00f9ng ch\u1ee9a s\u1ebd truy c\u1eadp \u0111\u01b0\u1ee3c&nbsp;<code>database<\/code>d\u1ecbch v\u1ee5. M\u1eb7c d\u00f9 b\u1ea1n kh\u00f4ng c\u1ea7n&nbsp;<code>links<\/code>ch\u1ec9 th\u1ecb \u0111\u1ec3 c\u00e1c v\u00f9ng ch\u1ee9a giao ti\u1ebfp v\u1edbi nhau, nh\u01b0ng&nbsp;<code>links<\/code>c\u00f3 th\u1ec3 \u0111\u00f3ng vai tr\u00f2 l\u00e0 bi\u1ec7n ph\u00e1p ph\u00f2ng ng\u1eeba khi kh\u1edfi \u0111\u1ed9ng \u1ee9ng d\u1ee5ng docker-compose.<\/p>\n<p>2.Kh\u1edfi \u0111\u1ed9ng Docker Compose v\u00e0 ki\u1ec3m tra tr\u1ea1ng th\u00e1i c\u1ee7a container:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose up -d\n docker ps\n<\/code><\/pre>\n<p>\u0110\u1ea7u ra s\u1ebd t\u01b0\u01a1ng t\u1ef1 nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES\n55d573674e49        nginx:latest        \"nginx -g 'daemon ...\"   3 minutes ago       Up 3 minutes        0.0.0.0:8080-&gt;80\/tcp     nginx\nad9e48b2b82a        alpine              \"tail -f \/dev\/null\"      3 minutes ago       Up 3 minutes                                 Alpine_Distro\n736cf2f2239e        postgres:latest     \"docker-entrypoint...\"   3 minutes ago       <\/code><\/pre>\n<p>3.Ki\u1ec3m tra nginx b\u1eb1ng c\u00e1ch \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn \u0111\u1ecba ch\u1ec9 IP c\u00f4ng khai c\u1ee7a Linode, c\u1ed5ng&nbsp;<code>8080<\/code>trong tr\u00ecnh duy\u1ec7t (v\u00ed d\u1ee5&nbsp;<code>192.0.2.0:8080<\/code>). B\u1ea1n s\u1ebd th\u1ea5y trang \u0111\u00edch nginx m\u1eb7c \u0111\u1ecbnh \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb.<\/p>\n<h3 id=\"persistent-data-storage\">L\u01b0u tr\u1eef d\u1eef li\u1ec7u li\u00ean t\u1ee5c<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#persistent-data-storage\"><\/a><\/h3>\n<p>Kh\u00f4ng n\u00ean l\u01b0u tr\u1eef d\u1eef li\u1ec7u PostgreSQL tr\u1ef1c ti\u1ebfp b\u00ean trong m\u1ed9t container. Container Docker \u0111\u01b0\u1ee3c coi l\u00e0 t\u1ea1m th\u1eddi: container c\u1ee7a \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng t\u1eeb \u0111\u1ea7u khi ch\u1ea1y&nbsp;<code>docker-compose up<\/code>v\u00e0 b\u1ecb h\u1ee7y khi ch\u1ea1y&nbsp;<code>docker-compose down<\/code>. Ngo\u00e0i ra, b\u1ea5t k\u1ef3 s\u1ef1 c\u1ed1 ho\u1eb7c kh\u1edfi \u0111\u1ed9ng l\u1ea1i b\u1ea5t ng\u1edd n\u00e0o tr\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n s\u1ebd khi\u1ebfn b\u1ea5t k\u1ef3 d\u1eef li\u1ec7u n\u00e0o \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong container b\u1ecb m\u1ea5t.<\/p>\n<p>V\u00ec nh\u1eefng l\u00fd do n\u00e0y, \u0111i\u1ec1u quan tr\u1ecdng l\u00e0 ph\u1ea3i thi\u1ebft l\u1eadp m\u1ed9t \u1ed5 \u0111\u0129a c\u1ed1 \u0111\u1ecbnh tr\u00ean m\u00e1y ch\u1ee7 m\u00e0 c\u00e1c v\u00f9ng ch\u1ee9a c\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ebd s\u1eed d\u1ee5ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u.<\/p>\n<p>1.Th\u00eam m\u1ed9t&nbsp;<code>volumes<\/code>ph\u1ea7n&nbsp;<code>docker-compose.yml<\/code>v\u00e0 ch\u1ec9nh s\u1eeda&nbsp;<code>database<\/code>d\u1ecbch v\u1ee5 \u0111\u1ec3 tham chi\u1ebfu \u0111\u1ebfn t\u1eadp:<\/p>\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  distro:\n    image: alpine\n    container_name: Alpine_Distro\n    restart: always\n    entrypoint: tail -f \/dev\/null\n\n  database:\n    image: postgres:latest\n    container_name: postgres_db\n    volumes:\n      - data:\/var\/lib\/postgresql\n    ports:\n      - \"5432:5432\"\n  web:\n    image: nginx:latest\n    container_name: nginx\n    volumes:\n      - .\/mysite.template:\/etc\/nginx\/conf.d\/mysite.template\n    ports:\n      - \"8080:80\"\n    environment:\n      - NGINX_HOST=example.com\n      - NGINX_port=80\n    links:\n      - database:db\n      - distro\nvolumes:\n  data:\n    external: true<\/code><\/pre>\n<p>2.<code>external: true<\/code>y\u00eau c\u1ea7u Docker Compose s\u1eed d\u1ee5ng m\u1ed9t kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u ngo\u00e0i \u0111\u00e3 t\u1ed3n t\u1ea1i tr\u01b0\u1edbc \u0111\u00f3. N\u1ebfu kh\u00f4ng c\u00f3 kh\u1ed1i l\u01b0\u1ee3ng n\u00e0o \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean&nbsp;<code>data<\/code>, vi\u1ec7c kh\u1edfi \u0111\u1ed9ng \u1ee9ng d\u1ee5ng s\u1ebd g\u00e2y ra l\u1ed7i. T\u1ea1o kh\u1ed1i l\u01b0\u1ee3ng:<\/p>\n<pre class=\"wp-block-code\"><code>docker volume create --name=data\n<\/code><\/pre>\n<p>3.Kh\u1edfi \u0111\u1ed9ng \u1ee9ng d\u1ee5ng nh\u01b0 tr\u01b0\u1edbc:<\/p>\n<pre class=\"wp-block-code\"><code>docker-compose up -d\n<\/code><\/pre>\n<h2 id=\"next-steps\">C\u00e1c b\u01b0\u1edbc ti\u1ebfp theo<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/#next-steps\"><\/a><\/h2>\n<p>Docker Compose l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd \u0111\u1ec3 s\u1eafp x\u1ebfp c\u00e1c b\u1ed9 container c\u00f3 th\u1ec3 ho\u1ea1t \u0111\u1ed9ng c\u00f9ng nhau. Nh\u1eefng th\u1ee9 nh\u01b0 \u1ee9ng d\u1ee5ng ho\u1eb7c m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Docker-compose. K\u1ebft qu\u1ea3 l\u00e0 m\u1ed9t m\u00f4i tr\u01b0\u1eddng c\u00f3 th\u1ec3 \u0111\u1ecbnh c\u1ea5u h\u00ecnh v\u00e0 m\u00f4-\u0111un h\u00f3a c\u00f3 th\u1ec3 tri\u1ec3n khai \u1edf b\u1ea5t k\u1ef3 \u0111\u00e2u.<\/p>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/how-to-use-docker-compose\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker Compose l\u00e0 g\u00ec? N\u1ebfu \u1ee9ng d\u1ee5ng Docker c\u1ee7a b\u1ea1n bao g\u1ed3m nhi\u1ec1u h\u01a1n m\u1ed9t container (v\u00ed d\u1ee5: m\u00e1y ch\u1ee7 web v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u ch\u1ea1y trong c\u00e1c container ri\u00eang bi\u1ec7t), vi\u1ec7c x\u00e2y d\u1ef1ng, ch\u1ea1y v\u00e0 k\u1ebft n\u1ed1i c\u00e1c container t\u1eeb c\u00e1c Dockerfile ri\u00eang bi\u1ec7t r\u1ea5t c\u1ed3ng k\u1ec1nh v\u00e0 t\u1ed1n th\u1eddi gian. Docker Compose<\/p>\n","protected":false},"author":1,"featured_media":36277,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-35048","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containers"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=35048"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35048\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36277"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=35048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=35048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=35048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}