自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用 Docker 來協(xié)助 X 系統(tǒng)上的開發(fā)工作

開發(fā) 項目管理
很幸運的是,對于 Linux 運維人員來說,一個新的工具產(chǎn)生了,而該工具很有可能改變游戲規(guī)則:Docker ,一個開源的平臺,能夠以一種輕量級的方式打包應用程序以及它們的依賴。

對應用進行設置可能會相當復雜,尤其是在 Linux 系統(tǒng)上。不同應用有不同的配置方法,它們會在不同的文件系統(tǒng)路徑下(在不同的 Linux 發(fā)行版中,由于應用存在多種變種,這些路徑也會有所不同)保存二進制文件和數(shù)據(jù)。一旦你把系統(tǒng)配置好了,就很難再恢復到之前的狀態(tài),尤其是你同時進行了一些其他修改的時候(比如,安裝了一些其他應用程序)。這也是最近諸如 Puppet、 Chef、 Ansible 和 Salt 這樣的部署工具流行的原因。但即使有了這些工具的幫助,創(chuàng)建 cookbook/recipe 也許也十分麻煩: Linux 系統(tǒng)并非以傻瓜化著稱,系統(tǒng)本身也不能讓你擺脫麻煩。

業(yè)界出現(xiàn)了一個新的工具

很幸運的是,對于 Linux 運維人員來說,一個新的工具產(chǎn)生了,而該工具很有可能改變游戲規(guī)則:Docker ,一個開源的平臺,能夠以一種輕量級的方式打包應用程序以及它們的依賴。

這到底意味著什么?

Docker 使你能夠在 Linux 系統(tǒng)上對不同的應用程序進行隔離,在不同的上下文環(huán)境中運行這些程序(這些程序可能執(zhí)行在一臺物理機器上,也可能運行在不同的物理機器上),請記住,這一點非常重要:

  • Docker 使用了底層的內核機制做到了資源隔離,而并不需要其他資源消耗型的虛擬化技術,如果想了解更多細節(jié),請點擊這里。
  • Docker 鏡像(一些保存的快照)以及 Docker 容器(運行時隔離應用程序的容器)與虛擬鏡像相比,使用起來快多了。
  • 容器十分靈活,你可以在容器里打包很多應用,你也可以只打包一個,同時你可以盡你所愿來運行容器。
  • Docker 容器里運行著一些鏡像,而這些鏡像之上有一個層的概念,分層使得你能夠很容易地構造你的應用程序(每次操作都可以很容易地回滾/前滾,你只需要簡單地增加或是刪除層,卻不會對下面的層產(chǎn)生影響)。
  • Docker ***地支持了“一次配置,到處運行”的范式。

在實踐中 Docker 是如何工作的?

或者這么講,至少對于我來說,它是這么工作的:

  1. 我已經(jīng)在我的本地 Vagrant 環(huán)境中指定了 Docker 作為部署工具, Vagrant 從 1.6 版本就引入了這一功能。對于什么是 Vagrant ,以及它為什么是 X 平臺開發(fā)人員必備的工具,我認為無需贅述。

  2. Docker 已經(jīng)為我自動下載了一些 Linux 發(fā)行版的鏡像(這些鏡像會被 Vagrant 使用,在 hypervisor 上運行)。

  3. 現(xiàn)在我能夠以至少兩種方式創(chuàng)建我自己的容器(正在運行的,實現(xiàn)資源隔離的應用程序):

  • ***種方式是制作一個用命令配置好的 Dockerfile ,這個 Dockerfile 基于干凈的 Linux 鏡像來生成,同時這些命令也使用了非常簡單的 DSL (領域特定語言)。這種方式是我比較喜歡的,而且確實實用。
  • 第二種方式是創(chuàng)建一個運行著終端的全新的容器,這樣的話你就可以在終端上執(zhí)行你自己的命令,來做到你自己想做的事情。

 

  1. sudo docker build    
  2. ...  
  3. or    
  4. ...  
  5. sudo docker run -i -t <image_name> /bin/bash   

 

有些重要的事情需要記住

  1. 如果在 Dockerfile 里的命令執(zhí)行完了,或者是通過 run 這個子命令運行的命令執(zhí)行完了(因為它們并不是 daemon 程序),那么容器就會關閉并且消失!

  2. 當容器正在運行時,你可以十分方便地:

  • 查看容器中命令的輸出(docker logs)
  • 掛載到運行的容器(docker attach)
  • 列出容器內文件系統(tǒng)的實際變化(記得不同的容器并不能看到其他容器的變化?。╠ocker diff)
  • 暴露并且映射容器中的端口(比如,如果你正在搭建一個應用程序,而該應用程序在容器內已經(jīng)有了相應的端口)(在 dockerfile 中的 EXPOSE 選項,Docker 命令的 -p 選項)
  1. 如果你想要通過手動執(zhí)行命令的方式創(chuàng)建你自己的容器(run),你需要存儲你自己的鏡像 - 首先你需要在正在運行的容器列表里找到你想要的容器,然后執(zhí)行commit命令:

 

  1. sudo docker ps    
  2. sudo commit <container name>   

 

通過使用以上所有的選項...

...我能夠:

  • 使用應用組件的任何組合來組成我的本地開發(fā)環(huán)境,添加或者刪除一個運行時組件就如同開啟或者關閉容器那么簡單。一旦我關閉了某個應用組件,那么它也從文件系統(tǒng)中完全消失了。
  • 非常方便地(回滾/前滾)創(chuàng)建出獨立的,隔離的應用容器,同時又不像虛擬鏡像那樣會耗費許多時間,也沒有不必要的操作系統(tǒng)開銷。
  • 實驗一系列很有意思的事情,卻幾乎不會冒重頭來過的風險(有鑒于此,Chef recipe 已經(jīng)過時了...)。

...在我做到以上所有事情的同時,我的操作系統(tǒng)卻堅如磐石:我不會破壞任何事情,我可以很簡單地回滾我做的任何操作。安裝其他的容器也不會互相影響。

總之,在幾周的時間里,我已經(jīng)把 Docker 作為了我的主要的軟件開發(fā)工具?,F(xiàn)在我已經(jīng)無法想象缺少了 Docker 我該怎樣進行基于 JVM 的開發(fā)工作了。

原文鏈接:https://www.dockboard.org/how-ive-pimped-my-x-system-development-with-docker/

責任編輯:林師授 來源: Docker中文社區(qū)
相關推薦

2014-03-18 16:01:57

Arduino灌溉系統(tǒng)

2020-10-06 15:12:35

機器學習

2017-06-19 08:13:00

Sequel ProMySQL數(shù)據(jù)庫

2021-03-14 13:00:36

FedoraPoetry Python

2016-10-28 22:22:35

nodenode.jsdocker

2021-06-23 08:12:32

程序員物聯(lián)網(wǎng)開發(fā)

2022-06-10 10:01:17

MacDockerLinux

2016-11-03 20:06:53

UbuntuGrafanaDocker

2014-12-25 10:15:37

DockerJava

2019-03-04 10:45:57

Linux Cockp系統(tǒng)性能命令

2023-11-16 08:01:31

2016-03-31 09:18:11

xcodetargets管理

2024-01-17 15:48:39

CIOGenAI

2015-07-16 15:20:58

DockerDjango

2023-11-01 09:00:14

存儲Docker服務器

2013-06-10 23:23:29

操作系統(tǒng)OS X

2014-11-05 20:05:46

dockerJenkins

2012-10-30 09:44:33

敏捷開發(fā)

2014-11-19 13:46:30

云計算DockerDevice Mapp

2021-08-25 09:00:00

開發(fā)軟件數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號