{"id":1457,"date":"2024-11-09T16:14:19","date_gmt":"2024-11-09T16:14:19","guid":{"rendered":"https:\/\/kb.lagonet.vn\/?p=1457"},"modified":"2024-11-09T16:14:19","modified_gmt":"2024-11-09T16:14:19","slug":"git-cai-dat-gitlab-runner-su-dung-moi-truong-docker","status":"publish","type":"post","link":"https:\/\/kb.lagonet.vn\/?p=1457","title":{"rendered":"[Git] C\u00e0i \u0111\u1eb7t GitLab Runner s\u1eed d\u1ee5ng m\u00f4i tr\u01b0\u1eddng Docker"},"content":{"rendered":"\n<p>Ch\u00e0o 500 anh em!!!. L\u1ea1i l\u00e0 m\u00ecnh \u0111\u00e2y, h\u00f4m nay m\u00ecnh chia s\u1ebb v\u1edbi anh em m\u1ed9t tips v\u1ec1 ch\u1ee7 \u0111\u1ec1 Git+Docker \u0111\u00f3 l\u00e0 c\u00e0i \u0111\u1eb7t&nbsp;<strong>GitLab Runner<\/strong>&nbsp;s\u1eed d\u1ee5ng m\u00f4i tr\u01b0\u1eddng Docker.<\/p>\n\n\n\n<p><strong>Gitlab<\/strong>&nbsp;cho ph\u00e9p ch\u00fang ta build image free tr\u00ean c\u00e1c server c\u1ee7a gitlab nh\u01b0ng c\u00f3 gi\u1edbi h\u1ea1n th\u1eddi gian build trong 1 th\u00e1ng. N\u1ebfu nhu c\u1ea7u build image nhi\u1ec1u th\u00ec n\u00ean d\u1ef1ng ri\u00eang c\u00e1c&nbsp;<strong>GitLab Runner<\/strong>&nbsp;\u0111\u1ec3 build image \u0111\u1ea3m b\u1ea3o v\u00e0 nhanh h\u01a1n.<\/p>\n\n\n\n<p>M\u1ee5c ti\u00eau tips n\u00e0y gi\u00fap c\u00e1c b\u1ea1n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gitlab runner l\u00e0 g\u00ec?<\/li>\n\n\n\n<li>T\u1ea1o m\u1ed9t gitlab runner trong m\u00f4i tr\u01b0\u1eddng Docker<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.viblo.asia\/49e91c6f-76f9-4d18-b335-d9426b783fd0.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Let&#8217;s go th\u00f4i!!!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_1-cai-docker-0\">1. C\u00e0i Docker<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install -y docker.io\n<\/code><\/pre>\n\n\n\n<p>Add ubuntu user to the docker group.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gpasswd -a ubuntu docker\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_2-tao-runner-container-1\">2. T\u1ea1o Runner Container<\/h2>\n\n\n\n<p>Sau khi c\u00e0i Docker xong, ch\u00fang ta t\u1ea1o m\u1ed9t&nbsp;<strong>gitlab-runner<\/strong>&nbsp;container nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d --name gitlab-runner --restart always \\\n    -v \/srv\/gitlab-runner\/config:\/etc\/gitlab-runner \\\n    -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n    gitlab\/gitlab-runner:v15.8.2\n<\/code><\/pre>\n\n\n\n<p>\u1ede \u0111\u00e2y image m\u00ecnh l\u1ea5y vesion v15.8.2&nbsp;<code>gitlab-runner:v15.8.2<\/code>&nbsp;c\u00e1c b\u1ea1n mu\u1ed1n version m\u1edbi nh\u1ea5t th\u00ec \u0111\u1ec3&nbsp;<code>latest<\/code>&nbsp;nh\u00e9!<\/p>\n\n\n\n<p>Xem th\u00eam m\u1ed9t s\u1ed1 th\u00f4ng tin v\u1ec1 command GitLab Runner t\u1ea1i&nbsp;<a href=\"https:\/\/docs.gitlab.com\/runner\/commands\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u0111\u00e2y<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_3-register-mot-runner-2\">3. Register m\u1ed9t Runner<\/h2>\n\n\n\n<p>\u0110\u1ec3 register m\u1ed9t runner, c\u00e1c b\u1ea1n d\u00f9ng l\u1ec7nh sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner register\n<\/code><\/pre>\n\n\n\n<p>Nh\u1eadp c\u00e1c th\u00f4ng tin b\u1eb1ng c\u00e1ch v\u00e0o repo c\u1ea7n ch\u1ea1y CICD:&nbsp;<strong>Gitlab UI &#8211;&gt; Settings &#8211;&gt; CICD<\/strong>&nbsp;v\u00e0 ch\u1ecdn&nbsp;<strong>Expand<\/strong>&nbsp;<img decoding=\"async\" src=\"https:\/\/images.viblo.asia\/11fe70a1-5e99-4751-9abc-354947dae284.png\" alt=\"\">&nbsp;Copy&nbsp;<code>registration token<\/code>&nbsp;v\u00e0 paste v\u00e0o terminal&nbsp;<img decoding=\"async\" src=\"https:\/\/images.viblo.asia\/1942d9c6-30ae-46eb-9295-1c1332dd84ca.png\" alt=\"\">&nbsp;C\u00e1c th\u00f4ng tin c\u1ea7n nh\u1eadp v\u00e0o nh\u01b0 sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nh\u1eadp URL\u00a0<a href=\"https:\/\/gitlab.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gitlab.com\/<\/a><\/li>\n\n\n\n<li>Nh\u1eadp\u00a0<strong>token<\/strong>\u00a0\u1edf tr\u00ean.<\/li>\n\n\n\n<li>Nh\u1eadp m\u00f4 t\u1ea3\u00a0<strong>runner<\/strong>.<\/li>\n\n\n\n<li>G\u1eafn\u00a0<strong>tags<\/strong>\u00a0cho\u00a0<strong>runner<\/strong>\u00a0c\u00f3 th\u1ec3 \u0111\u1ec3 tr\u1ed1ng<\/li>\n\n\n\n<li>Nh\u1eadp\u00a0<strong>docker<\/strong>.<\/li>\n\n\n\n<li>Nh\u1eadp m\u1ed9t image m\u1eb7c \u0111\u1ecbnh cho Docker image<\/li>\n<\/ul>\n\n\n\n<p>Sau khi nh\u1eadp xong kh\u1edfi \u0111\u1ed9ng l\u1ea1i runer<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker restart gitlab-runner\n<\/code><\/pre>\n\n\n\n<p>Refresh l\u1ea1i page&nbsp;<code>Gitlab UI --&gt; Settings --&gt; CICD<\/code>&nbsp;v\u00e0 xem k\u1ebft qu\u1ea3&nbsp;<img decoding=\"async\" src=\"https:\/\/images.viblo.asia\/572e7233-5393-467a-a4f6-960f61bc9dc7.png\" alt=\"\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_4-hien-thi-cac-runner-3\">4. Hi\u1ec3n th\u1ecb c\u00e1c runner<\/h2>\n\n\n\n<p>\u0110\u1ec3 hi\u1ec3n th\u1ecb c\u00e1c runner \u0111ang ch\u1ea1y c\u00e1c b\u1ea1n d\u00f9ng l\u1ec7nh<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner list\n<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 hi\u1ec7n th\u1ecb nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Runtime platform                 arch=amd64 os=linux pid=66 revision=775dd39d version=13.8.0\nListing configured runners                         ConfigFile=\/etc\/gitlab-runner\/config.toml\na9a3dd7b82bd              Executor=docker Token=bxSoZytpPyWZLhB2MQQA URL=https:\/\/gitlab.com\/\n9bad45a61010              Executor=docker Token=AQbMBaySx4qj8236uYFR URL=https:\/\/gitlab.com\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_5-stopping-starting-va-restarting-runners-4\">5. Stopping, Starting v\u00e0 Restarting Runners<\/h2>\n\n\n\n<p>M\u1ed9t s\u1ed1 l\u1ec7nh Stopping, Starting v\u00e0 Restarting Runners<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner stop\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner start\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner restart\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_6-huy-xoa-runner-5\">6. Hu\u1ef7, Xo\u00e1 Runner<\/h2>\n\n\n\n<p>Khi kh\u00f4ng mu\u1ed1n s\u1eed d\u1ee5ng Runner n\u1eefa c\u00e1c b\u1ea1n mu\u1ed1n hu\u1ef7 ho\u1eb7c xo\u00e1 ch\u00fang \u0111i th\u00ec d\u00f9ng l\u1ec7nh sau<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner unregister --name a9a3dd7b82bd\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it gitlab-runner gitlab-runner verify --delete\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_7-configuration-file-6\">7. Configuration File<\/h2>\n\n\n\n<p>File c\u1ea5u h\u00ecnh&nbsp;<code>config.toml<\/code>&nbsp;\u0111\u01b0\u1ee3c l\u01b0u t\u1ea1i&nbsp;<code>\/srv\/gitlab-runner\/config\/config.toml<\/code>&nbsp;tr\u00ean m\u00e1y host.<\/p>\n\n\n\n<p>M\u1ed9t v\u00e0i th\u00f4ng tin c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 tu\u1ef3 ch\u1ec9nh n\u1ebfu mu\u00f4n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>log_level<\/li>\n\n\n\n<li>log_format<\/li>\n\n\n\n<li>concurrent<\/li>\n\n\n\n<li>check_interval C\u1ea5u h\u00ecnh runners \u0111\u01b0\u1ee3c l\u01b0u gi\u1ed1ng nh\u01b0 th\u1ebf n\u00e0y:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;&#91;runners]]\n  name = \"a9a3dd7b82bd\"\n  url = \"https:\/\/gitlab.com\/\"\n  token = \"bxSoZxtpQyWZLhB2LQGA\"\n  executor = \"docker\"<\/code><\/pre>\n\n\n<p>[runners.custom_build_dir]<\/p>\n\n\n\n<p>[runners.cache]<\/p>\n\n\n<p>[runners.cache.s3]<\/p>\n\n\n\n<p>[runners.cache.gcs]<\/p>\n\n\n<p>[runners.cache.azure]<\/p>\n\n\n\n<p>[runners.docker] tls_verify = false image = &#8220;alpine&#8221; privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = [&#8220;\/cache&#8221;] shm_size = 0<\/p>\n\n\n<p>[runners.custom_build_dir]<\/p>\n\n\n\n<p>[runners.cache]<\/p>\n\n\n<p>[runners.cache.s3]<\/p>\n\n\n\n<p>[runners.cache.gcs]<\/p>\n\n\n<p>[runners.cache.azure]<\/p>\n\n\n\n<p>[runners.docker] tls_verify = false image = &#8220;alpine&#8221; privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = [&#8220;\/cache&#8221;] shm_size = 0 &#8221; delay=&#8221;2000&#8243; title=&#8221;Sao ch\u00e9p&#8221; style=&#8221;box-sizing: border-box; border-radius: 5px; margin: 0px; font-family: inherit; font-size: inherit; line-height: inherit; overflow: visible; text-transform: none; appearance: button; position: absolute; display: flex; align-items: center; justify-content: center; top: 7.5px; right: 6px; cursor: pointer; outline: none; border: none; background: rgb(101, 84, 84); height: 25px; opacity: 0.5;&#8221;&gt;<\/p>\n\n\n\n<p>C\u00e1c b\u1ea1n \u0111\u1ecdc th\u00eam t\u1ea1i&nbsp;<a href=\"https:\/\/docs.gitlab.com\/runner\/configuration\/advanced-configuration.html\" target=\"_blank\" rel=\"noreferrer noopener\">\u0111\u00e2y<\/a><\/p>\n\n\n\n<p>Video h\u01b0\u1edbng d\u1eabn chi ti\u1ebft b\u00ean d\u01b0\u1edbi:<\/p>\n\n\n\n<p>https:\/\/viblo.asia\/embed?url=https:\/\/www.youtube.com\/watch?v=b55MO4o4T9Y&#038;lc=UgxaKwsTJevzk67sPEZ4AaABAg&#038;provider=null<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_8-tong-ket-7\">8. T\u1ed5ng k\u1ebft<\/h2>\n\n\n\n<p>C\u00f3 nhi\u1ec1u c\u00e1ch c\u00e0i m\u1ed9t Runner cho d\u1ef1 \u00e1n. Hi v\u1ecdng qua b\u00e0i vi\u1ebft n\u00e0y c\u00e1c b\u1ea1n c\u00f3 th\u00eam m\u1ed9t l\u1ef1a ch\u1ecdn n\u1eefa \u0111\u1ec3 c\u00e0i \u0111\u1eb7t runner chio d\u1ef1 \u00e1n c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<p>Ch\u00fac c\u00e1c b\u1ea1n th\u00e0nh c\u00f4ng!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_follow-cac-kenh-minh-chia-se-8\">Follow c\u00e1c k\u00eanh m\u00ecnh chia s\u1ebb<\/h2>\n\n\n\n<p><a href=\"https:\/\/viblo.asia\/u\/TonyLe\" target=\"_blank\" rel=\"noreferrer noopener\">Vibo chia s\u1ebb<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/channel\/UC2So3jI5sB6kG0F6eDhexPQ?sub_confirmation=1\" target=\"_blank\" rel=\"noreferrer noopener\">Youtube<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/vuihoctech.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Blog chia s\u1ebb<\/a><\/p>\n\n\n\n<p>Source: <a href=\"https:\/\/viblo.asia\/p\/git-cai-dat-gitlab-runner-su-dung-moi-truong-docker-aNj4vzx246r\">https:\/\/viblo.asia\/p\/git-cai-dat-gitlab-runner-su-dung-moi-truong-docker-aNj4vzx246r<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ch\u00e0o 500 anh em!!!. L\u1ea1i l\u00e0 m\u00ecnh \u0111\u00e2y, h\u00f4m nay m\u00ecnh chia s\u1ebb v\u1edbi anh em m\u1ed9t tips v\u1ec1 ch\u1ee7 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1457","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/posts\/1457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1457"}],"version-history":[{"count":1,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/posts\/1457\/revisions"}],"predecessor-version":[{"id":1458,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=\/wp\/v2\/posts\/1457\/revisions\/1458"}],"wp:attachment":[{"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.lagonet.vn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}