經驗分享|使用code-server為Docker容器搭建在線開發環境

2021-12-11 智能算法研究中心

Code-server是一個基於服務端的開源VSCode。只要伺服器端配置好code-server,就可以在任何瀏覽器上使用VScode訪問伺服器的代碼進行編程。

(GitHub地址:https://github.com/cdr/code-server

Docker是一個開源的Linux容器引擎。我們在日常的開發任務中可以利用Docker容器快速地搭建實驗環境或對項目進行遷移部署。下面先簡單介紹一些Docker的常用指令:

docker build:根據Dockerfile文件創建鏡像docker start/stop/restart:啟動/停止/重啟容器docker ps:查看容器列表,默認顯示正在運行的容器,-a顯示所有容器

更多更詳細的指令可以查閱:

www.runoob.com/docker/docker-command-manual.html

但是在使用Docker容器進行編程的時候,因為Docker是不帶圖形界面的,在不安裝其他工具的情況下,我們只能使用vim等命令行文本編輯器。如何能像平常編程一樣舒適地使用VSCode之類好用的編輯器呢?Code-server騰空出世解君愁,讓你在Docker容器中擁有使用VSCode編程的愉快體驗。

我們先總結一下在Docker中使用code-server需要的操作:一是執行docker run命令時使用-p參數進行埠映射,二是在Docker容器中安裝code-server並運行起來。接下來,我們通過一個示例來介紹一下整個流程。

首先,我們運行一個鏡像ubuntu:latest的容器,指令如下所示。

docker run  -it –name code-server-test -p 8095:8080 ubuntu:latest bin/bash

其中,「-p 8095:8080」參數表示將容器中的8080埠與宿主機的8095埠進行埠映射。

示例使用的是ubuntu鏡像,故選擇Linux64位的amd64版本下載,而對於arm架構的環境要選擇arm64版本下載,下載地址為:

https://github.com/cdr/code-server/releases。

由於國內訪問github速度可能較慢,因此國內可以使用備用的下載地址:

https://gitee.com/ncr/code-server/releases。

示例選擇使用如圖1所示版本的code-server。

圖1  code-server版本選擇

通過wget或curl進行下載,然後使用tar -xvzf指令解壓這個文件,進入文件夾後運行./code-server,默認映射埠為8080,運行結果如圖2所示。

圖2  命令./code-server運行結果

用瀏覽器訪問伺服器的8095埠,界面如圖3所示。

圖3  用瀏覽器訪問伺服器的8095埠界面

我們可以在運行命令中加入「--port」參數指定埠,通過exportPASSWORD="pwd"來指定登錄密碼。如以下指令所示:

export  PASSWORD="mima" && ./code-server --port 8090

其中,我們設置環境變量PASSWORD,即指定了登錄密碼為「mima」,而參數「--port 8090」指定了訪問埠為8090。運行結果如圖4所示。

圖4  指定登錄密碼操作

以上是對如何在一個運行中的容器中下載和運行code-server的介紹。如果能夠正常訪問Github,推薦使用官方倉庫提供的install.sh安裝腳本進行操作。

然而,很多時候我們希望從鏡像運行開始,進入容器時就能自動完成這些操作,所以下面我們將介紹如何通過Dockerfile文件構建自動運行code-server的鏡像。

Dockerfile是用於構建鏡像的文本文件,包含指令和說明,詳細用法可查看:

https://docs.docker.com/engine/reference/builder。

這裡我們直接通過Dockerfile文件來定製一個可以直接使用code-server的ubuntu鏡像,其他已有鏡像也參考該做法。Dockerfile文件的內容如下:

FROM  ubuntu:latest

RUN apt  update \

     apt install -y curl

RUN curl  -fsSL https://code-server.dev/install.sh | sh

CMD export  PASSWORD="mima" && code-server --host 0.0.0.0

EXPOSE 8080

其中,FROM指定新鏡像構建時所基於的基礎鏡像,RUN指定執行相關命令行命令,CMD也是用於指定運行程序,但RUN在docker build時運行,CMD作為啟動的容器默認運行的程序,在docker run時運行。EXPOSE聲明埠,主要是幫助鏡像使用者了解該鏡像需要進行映射的埠。

將Dockerfile文件放到一個空的目錄下,然後運行下面的命令:

docker build  -t ubuntu:code-server .

這樣我們就得到了一個ubuntu:code-server鏡像,在使用時只需運行:

docker run -p  8099:8080 ubuntu:code-server

這時,用瀏覽器訪問伺服器的8095埠即可使用VScode訪問伺服器的代碼進行編程,同時還可以訪問伺服器上的圖片,如圖4所示。在使用code-server之前,我就是笨笨地通過文件傳輸先將圖片傳到本地再打開,搞過圖像的小夥伴應該懂我的痛苦(T ^ T)。

圖5  用瀏覽器訪問伺服器上的圖片

在圖5中的Dockerfile文件中,我們選擇直接使用官方倉庫提供的install.sh安裝腳本,避免由於國內訪問Github的速度可能不理想而導致安裝失敗。

所以Dockerfile文件中的「RUN curl -fsSL https://code-server.dev/install.sh | sh」這一步操作可以改為先預先下載好安裝包並放到Dockerfile文件的同一個目錄下,然後使用COPY指令複製該安裝包來完成鏡像構建。

希望大家可以使用code-server更好地完成在伺服器上的編碼工作,而不再需要對著一個粗糙的黑框框進行編碼了(當然,熟悉使用vim的大佬可以忽略~)。此外,code-server還支持像VSCode一樣安裝插件,更高端的用法就需要大家自己進一步去挖掘啦!

 

 

總編:黃翰

責任編輯:袁中錦

文字:林國盛

圖片:林國盛

校稿:何莉怡

時間:2021年08月03日

想了解更多智能算法最新研究進展、學術活動與經驗交流等

實驗室負責人:黃翰教授

聯繫郵箱:hhan@scut.edu.cn

相關焦點

  • 用Docker和Git搭建在線開發環境
    以下分享的內容是個人在業餘時間的一些經驗,並不代表IBM的觀點。
  • 基於 Docker 搭建 PHP 開發環境
    我剛進入的公司恰好需要使用 Docker 作為開發環境,所以也就不得不學習 Docker 的使用。今天寫一下搭建 PHP 開發環境的過程,也是一個記錄。本人使用的是 Docker Desktop for Mac,Docker 安裝需要拉取鏡像,使用原始鏡像拉取會非常慢。不過我們可以使用國內鏡像資源,而且多數是免費,我使用的是阿里雲的鏡像加速連結,速度非常快。
  • 使用Docker高效搭建開發環境
    ,今天給大家帶來的是奇虎360的開發是如何使用Docker高效搭建開發環境的。公司雖然有專門負責部署、運維這些服務的同學,但我在開發的時候,還是喜歡自己來搭建這些東西,因為這樣通常可以對使用到的服務有更多的認識,也能幫助自己使用的更好。今天我就來和大家分享下我是如何高效的搭建好自己的開發環境的。
  • 使用 Docker 快速搭建多版本 PHP 開發環境
    文章中使用的軟體:Mac:11.4(macOS Big Sur) ,處理器為:Intel Core。目標下載Docker 軟體下載安裝,不做過多解釋,一步步安裝即可。備註docker-compose 相關命令docker-compose up 構建容器 參數[-d]為後臺運行docker-compose start 啟用容器docker-compose restart 重啟容器docker-compose ps 查看當前容器狀態php7-2-x 目錄介紹.
  • 使用ubuntu server搭建nas(三)——安裝Docker
    ubuntu server搭建nas(一)——硬體及ubuntu18.04.5系統安裝使用ubuntu server搭建nas(二)——設置硬碟掛載及開啟root帳戶基於之前的經驗,我決定這次將所有nas服務以docker容器的形式部署,一方面方便進行管理,另一方面可以和宿主系統形成一定的隔離。
  • IFTTT在開發環境中的Docker使用經驗
    IFTTT目前正處於從基礎架構向容器集裝體系結構轉移的過程中。我們有一大批微服務和容器將會按照這個架構進行管理。改造我們的生產環境架構之前,我們決定首先從本地開發環境開始實踐。這樣我們就可以在冒險上生產環境之前發現應用程式的的一些問題。另外,本地開發環境已經偏離了我們現存的生產環境。
  • Docker 搭建 Django+Mariadb 環境
    本文思路:直接拉取 Mariadb 鏡像,搭建資料庫手動 Build Django 鏡像:  以 python2.7 為基礎鏡像  讓我們做的更好:以 Python2.7-slim 為基礎鏡像的優化  "docker -v"&&"docker --link"源碼:git@github.com:AnInputForce
  • Docker 開發鏡像搭建與DockerFile分享
    背景    之前搭建過一個開發鏡像,包含了 java、go 語言等基本的開發環境,結合 vscode remote 模式,可在本地直接進行開發,免去了安裝各種基礎環境和配置環境變量的麻煩但是對於使用者來說,依然有兩個並不方便的地方:易用性
  • code-server 使用指南:如何在瀏覽器上使用 VS Code
    於是我找到了 code-server,和大家分享下。1.項目介紹   code-server[1] 是一款在線的 VS Code,只需將其部署到伺服器上,就可以在瀏覽器上使用 VS Code。本文將介紹 code-server 安裝和使用方法,版本為 v3.10.2。2.
  • 使用 Docker 搭建 Laravel 本地環境
    也就是一個虛擬機,但是跟 docker 比,它佔用體積太大,啟動速度慢,同時響應速度很慢,現在有了 docker 這種更好的方式,可以輕鬆方便的搭建整套 PHP 開發環境。本文就介紹如何使用 docker 搭建 Laravel 本地環境。安裝 docker首先安裝 docker。
  • Fastapi框架-(16)docker-compose容器編排一鍵搭建和啟動本地環境
    所以接下來首先就是考慮,能不能使用最小的鏡像來作為我們的運行的容器吶?這個不管怎麼樣還是得去做,畢竟後續如果你上線生產環境的話,也是需要考慮這個鏡像優化的問題。1.4.2 代碼連結容器編寫連結代碼,注意點(服務是運行再我們上面自定容器裡面滴有!也就我們的docker搭建的本地的環境):```#!
  • 在群暉上使用 VSCode(VS Code Server)
    準備工作:運行環境先來聊聊硬體環境,官方推薦使用至少2核心1GB的資源運行程序,本次演示運行於之前文章提到的DS920+,CPU擁有4顆核心,12GB內存。我估計使用 DS720+ 或類似配置的環境也能愉快玩耍。
  • docker-compose安裝開發環境
    通過配置yml文件來compose 我們開發過程中所需要的服務。ps: 雖然生產上大部分用的是k8s,但是我們自己開發的時候,可以用docker-compose 來快速的起服務,用什麼起什麼,極其方便。
  • 構建Rasa低成本的Docker開發部署環境
    長期以來,我一直用 Laradock[2],Laradock 本身也集成了一些好用的開發部署工具,如 Nginx,certbot 等,在學習使用 Rasa 時,想著以最快的速度構建開發部署 Rasa 接口,所以今天我主要採用常規的做法——基於 Nginx 和 Docker
  • 使用容器搭建簡單可靠的容器倉庫
    本篇文章繼續聊聊,如何使用容器搭建輕量可靠的鏡像倉庫:distribution。感興趣的話,可以參考早些時候關於 Nexus 搭建和使用的內容。為了行文方便,我們假設這個提供服務的容器倉庫的域名為 docker.soulteary.cn,這個域名可以被正確解析到我們啟動服務的那臺機器上(比如本地、或者某臺雲主機)。
  • PyCharm使用之利用Docker鏡像搭建Python開發環境
    在我們平時使用PyCharm的過程中,一般都是連接本地的Python環境進行開發,但是如果是離線的環境呢?
  • 基於 Docker 搭建 MySQL 主從複製
    Docker,MySQL的主從複製之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。本篇博文相對簡單,因為是初次使用Docker,MySQL的主從複製之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。根據網上教程走還是踩了一些坑,不過所幸最終搭建成功,因此記錄下來,避免以後踩了重複的坑。
  • Dockerfile搭建極簡LNMP環境
    最近才發現ThinkPHP6.0和CI4.x都要求php版本為7.1以上了,本機的php版本還停留在7.0.3x,又懶得升級,於是考慮使用Docker
  • 玩轉docker容器編排調度 docker-compose、docker-swarm
    Docker Compose可以運行在生產環境、測試環境和開發環境中。使用Docker Compose需要有這三個基礎的步驟:編寫docker-compose.yml 定義你的服務,目的是為了讓Dockerfile定義的容器可以一起運行。
  • Docker+Selenium Grid+Python搭建分布式測試環境
    於是搭建了一個分布式的測試環境來試試。來搭建測試Web兼容性的環境。  此方案不足的地方在於需要同時使用到多個機器或者多個虛擬機,這對於資金不足或者純上手練習的人來說不是一個好東西。  既然Docker現在已經如此流行,此次嘗試著在Docker的環境中搭建用於兼容性Web測試的分布式測試環境。  目標:  1.成功搭建docker結合selenium構建分布式測試環境。