国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker使用實(shí)戰(zhàn)總結(jié)

willin / 3015人閱讀

摘要:最近很火,所以,也跟著未來的大趨勢學(xué)下,并將應(yīng)用到項(xiàng)目開發(fā)中。容器是完全使用沙箱機(jī)制,相互之間不會有任何接口類似的更重要的是容器性能開銷極低。在中搜索搜索的范圍是官方鏡像和所有個人公共鏡像。的應(yīng)用都是以這種格式發(fā)布到倉庫中,供大家使用。

Docker 最近很火,所以,也跟著未來的大趨勢學(xué)下docker,并將docker 應(yīng)用到項(xiàng)目開發(fā)中。
一、什么是docker

Docker 是一個開源的應(yīng)用容器引擎,基于 Go 語言 并遵從Apache2.0協(xié)議開源。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
容器是完全使用沙箱機(jī)制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

二、為何要使用容器?

那么應(yīng)用容器長什么樣子呢,一個做好的應(yīng)用容器長得就好像一個裝好了一組特定應(yīng)用的虛擬機(jī)一樣。比如我現(xiàn)在想用MySQL那我就找個裝好MySQL的容器,運(yùn)行起來,那么我就可以使用 MySQL了。

那么我直接裝個 MySQL不就好了,何必還需要這個容器這么詭異的概念?話是這么說,可是你要真裝MySQL的話可能要再裝一堆依賴庫,根據(jù)你的操作系統(tǒng)平臺和版本進(jìn)行設(shè)置,有時候還要從源代碼編譯報(bào)出一堆莫名其妙的錯誤,可不是這么好裝。而且萬一你機(jī)器掛了,所有的東西都要重新來,可能還要把配置在重新弄一遍。但是有了容器,你就相當(dāng)于有了一個可以運(yùn)行起來的虛擬機(jī),只要你能運(yùn)行容器,MySQL的配置就全省了。而且一旦你想換臺機(jī)器,直接把這個容器端起來,再放到另一個機(jī)器就好了。硬件,操作系統(tǒng),運(yùn)行環(huán)境什么的都不需要考慮了

在公司中的一個很大的用途就是可以保證線下的開發(fā)環(huán)境、測試環(huán)境和線上的生產(chǎn)環(huán)境一致。當(dāng)年在 Baidu 經(jīng)常碰到這樣的事情,開發(fā)把東西做好了給測試去測,一般會給一坨代碼和一個介紹上線步驟的上線單。結(jié)果代碼在測試機(jī)跑不起來,開發(fā)就跑來跑去看問題,一會兒啊這個配置文件忘了提交了,一會兒啊這個上線命令寫錯了。找到了一個 bug 提上去,開發(fā)一看,啊我怎么又忘了把這個命令寫在上線單上了。類似的事情在上線的時候還會發(fā)生,變成啊你這個軟件的版本和我機(jī)器上的不一樣……在 Amazon 的時候,由于一個開發(fā)直接擔(dān)任上述三個職位,而且有一套自動化部署的機(jī)制所以問題會少一點(diǎn),但是上線的時候大家還是膽戰(zhàn)心驚。

若果利用容器的話,那么開發(fā)直接在容器里開發(fā),提測的時候把整個容器給測試,測好了把改動改在容器里再上線就好了。通過容器,整個開發(fā)、測試和生產(chǎn)環(huán)境可以保持高度的一致。

此外容器也和VM一樣具有著一定的隔離性,各個容器之間的數(shù)據(jù)和內(nèi)存空間相互隔離,可以保證一定的安全性。

三、安裝docker

在 ubuntu 下使用 curl 命令進(jìn)行安裝

sudo apt install -y curl;
sudo curl -sSL https://get.docker.com/ | sh;

windows 安裝請參考 docker 官網(wǎng)。

docker常用命令

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作運(yùn)維 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
鏡像倉庫 — docker [login|pull|push|search]
本地鏡像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

1、列出機(jī)器上的鏡像(images):
docker images

其中我們可以根據(jù)REPOSITORY來判斷這個鏡像是來自哪個服務(wù)器,如果沒有 / 則表示官方鏡像,類似于username/repos_name表示Github的個人公共庫,類似于regsistory.example.com:5000/repos_name則表示的是私服。
IMAGE ID列其實(shí)是縮寫,要顯示完整則帶上--no-trunc選項(xiàng)。

2、在docker index中搜索image(search)

搜索的范圍是官方鏡像和所有個人公共鏡像。NAME列的 / 后面是倉庫的名字。

docker search sameersbn
3、從docker registry server 中下拉image或repository(pull)
Usage: docker pull [OPTIONS] NAME[:TAG]

上面的命令需要注意,在docker v1.2版本以前,會下載官方鏡像的centos倉庫里的所有鏡像,而從v.13開始官方文檔里的說明變了:will pull the centos:latest image, its intermediate layers and any aliases of the same id,也就是只會下載tag為latest的鏡像(以及同一images id的其他tag)。
也可以明確指定具體的鏡像:

4、從image啟動一個container(run)

docker run 命令首先會從特定的image創(chuàng)之上create一層可寫的container,然后通過start命令來啟動它。停止的container可以重新啟動并保留原來的修改。run命令啟動參數(shù)有很多,以下是一些常規(guī)使用說明,更多部分請參考http://www.cnphp6.com/archive...
當(dāng)利用 docker run 來創(chuàng)建容器時,Docker 在后臺運(yùn)行的標(biāo)準(zhǔn)操作包括:

檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載

利用鏡像創(chuàng)建并啟動一個容器

分配一個文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫層

從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個虛擬接口到容器中去

從地址池配置一個 ip 地址給容器

執(zhí)行用戶指定的應(yīng)用程序

執(zhí)行完畢后容器被終止

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

啟動一個本地鏡像:鏡像名REPOSITORY+鏡像TAG

> docker run -d sameersbn/postgresql:9.6-2
e527ef6698ea52bb78803facd5d2a6a8cbcdeb98ba052b3a0cdf78478d9acc53

5、停止運(yùn)行容器

根據(jù)容器IDCONTAINER ID來使運(yùn)行的容器停止 docker stop CONTAINER ID

?  docker ps
CONTAINER ID        IMAGE                        COMMAND                 CREATED             STATUS              PORTS               NAMES
f72ed57c80f8        sameersbn/redis:latest       "/sbin/entrypoint.sh"   8 minutes ago       Up 8 minutes        6379/tcp            wonderful_bassi
e527ef6698ea        sameersbn/postgresql:9.6-2   "/sbin/entrypoint.sh"   14 minutes ago      Up 13 minutes       5432/tcp            pensive_keller
?  docker stop f72ed57c80f8

或者使用容器的別名來啟動:

docker start MyWordPress

更多命令請看:docker常用命令詳解

四、幾個重要的概念

在使用docker時,我們得先弄清楚docker的幾個重要的名詞。

Docker生態(tài)

Docker生態(tài)就像 iPhone 的生態(tài)一樣,Docker倉庫相當(dāng)于 IPhone 的 App Storedocker自身程序相當(dāng)于IOS系統(tǒng)

鏡像與容器

鏡像(image):指的是以分層的、可以被 LXC/libcontainer 理解的文件存儲格式。Docker的應(yīng)用都是以這種格式發(fā)布到Docker倉庫中,供大家使用。
容器(container):把應(yīng)用鏡像從 Docker 倉庫下載到本地機(jī)器上,以鏡像為模板,在一個容器類虛擬機(jī)中把這個應(yīng)用啟動,這個虛擬機(jī)叫做容器。

可以先簡單的理解,倉庫中的應(yīng)用都以鏡像存在,從倉庫中拉取鏡像到本地的,叫容器

五、安裝鏡像docker-gitlab

gitlab環(huán)境配置要求比較高,可用內(nèi)存必須2G以上,2核CPU,否則跑不起來。

1.安裝

gitlab 鏡像地址:docker-gitlab

Step 1. Launch a postgresql container

docker run --name gitlab-postgresql -d 
    --env "DB_NAME=gitlabhq_production" 
    --env "DB_USER=gitlab" --env "DB_PASS=password" 
    --env "DB_EXTENSION=pg_trgm" 
    --volume $HOME/docker/gitlab/postgresql:/var/lib/postgresql 
    sameersbn/postgresql:9.6-2

Step 2. Launch a redis container

docker run --name gitlab-redis -d 
    --volume $HOME/docker/gitlab/redis:/var/lib/redis 
    sameersbn/redis:latest

Step 3. Launch the gitlab container

docker run --name gitlab -d 
    --link gitlab-postgresql:postgresql --link gitlab-redis:redisio 
    --publish 10022:22 --publish 10080:80 
    --env "GITLAB_PORT=10080" --env "GITLAB_SSH_PORT=10022" 
    --env "GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string" 
    --env "GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string" 
    --env "GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string" 
    --volume $HOME/docker/gitlab/gitlab:/home/git/data 
    sameersbn/gitlab:10.2.2

--volume 方法解釋:

 --volume $HOME/docker/gitlab/postgresql:/var/lib/postgresql 
?  ~ echo $HOME
/Users/kaiyiwang

注意: --volume $HOME/docker 是宿主機(jī)的環(huán)境,/var/lib/為容器環(huán)境.

OK,安裝好之后,我們可以通過命令來查看 docker 進(jìn)程

docker ps

再次啟動容器命令:
前邊我們已經(jīng)安裝鏡像到本地,如果關(guān)閉docker服務(wù)之后,容器就會停止運(yùn)行,再次啟動docker之后,我們不需要再次使用 docker run -d images,而只需啟動容器即可。

docker ps:查看運(yùn)行的容器。
docker ps -a:查看所有已經(jīng)安裝的容器

開啟容器:

docker start gitlab-postgresql

2.測試gitlab

使用 ifconfig 命令查看本機(jī)IP,因?yàn)間itlab默認(rèn)的服務(wù)為 10080,所以,我們可以根據(jù)我們的IP和端口訪問到gitlab服務(wù):http://192.168.1.101:10080/

gitlab頁面:

在 gitlab 上新建一個 test 測試庫:

使用 docker 搭建 gitlab服務(wù)是不是超級方便,不用做什么配置^_^。

相關(guān)文章:GitLab的簡單使用

六、項(xiàng)目管理系統(tǒng)Redmine

Redmine 是一套跨平臺的管理系統(tǒng),它通過“項(xiàng)目(project)”的形式把成員、任務(wù)(問題)、文檔、討論及各種形式的資源整合在一起,大家參與更新任務(wù)、文檔等內(nèi)容來推動項(xiàng)目的進(jìn)度,另外,它還集成了wiki文檔、版本控制、bug跟蹤等功能。

1.搭建Redmine服務(wù)

在這里,我們使用 sameersbn/docker-redmine 鏡像,項(xiàng)目地址為:https://github.com/sameersbn/...。

拉取鏡像:

docker pull sameersbn/redmine:latest

快讀啟動:

Step 1. Launch a postgresql container

docker run --name=postgresql-redmine -d 
  --env="DB_NAME=redmine_production" 
  --env="DB_USER=redmine" --env="DB_PASS=password" 
  --volume=$HOME/docker/redmine/postgresql:/var/lib/postgresql 
  sameersbn/postgresql:9.6-2

Step 2. Launch the redmine container

docker run --name=redmine -d 
  --link=postgresql-redmine:postgresql --publish=10083:80 
  --env="REDMINE_PORT=10083" 
  --volume=$HOME/docker/redmine/redmine:/home/redmine/data 
  sameersbn/redmine:latest
2.測試

Redmine
Docker指令中,我們把Redmine的對外服務(wù)端口映射到10083,所以,我們可以通過
訪問該地址:http://192.168.1.101:10083/,查看該服務(wù)是否安裝成功。

安裝成功,^_^

七、docker容器名稱沖突

我們使用ps -a這個命令,我們可以觀察到gitlab-postgresql的狀態(tài)為已經(jīng)存在了。

我們用rm命令刪除這個容器,如下面命令所示:

sudo docker rm gitlab-postgresql

重新建立gitlab-postgresql這個容器:

docker run --name gitlab-postgresql -d 
    --env "DB_NAME=gitlabhq_production" 
    --env "DB_USER=gitlab" --env "DB_PASS=password" 
    --env "DB_EXTENSION=pg_trgm" 
    --volume $HOME/docker/gitlab/postgresql:/var/lib/postgresql 
    sameersbn/postgresql:9.6-2

docker 容器名稱沖突問題解決

八、掛載目錄

使用鏡像 nginx:latest,以后臺模式啟動一個容器,將容器的 80 端口映射到主機(jī)的 80 端口,主機(jī)的目錄 /data 映射到容器的 /data

docker run -p 80:80 -v /data:/data -d nginx:latest

將Mac的本地目錄掛栽倒容器tensorflow/tensorflow/notebooks目錄

docker run -it  -v  /Users/kaiyiwang/Code/ai/notebooks:/notebooks -d tensorflow/tensorflow

如果直接掛載會報(bào)出這樣的錯誤:

44a574c965c83688221798c5d70fff2a7badd3aad04dd071246d8f487bda5225
docker: Error response from daemon: Mounts denied:
The path /AI/tensorflow
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

在mac上面使用Docker掛載目錄時,需要先在Docker->preference中添加該目錄,才能進(jìn)行掛載!

再重試一次掛載:

?  tensorflow docker run -it  -v  /Users/kaiyiwang/Code/ai/notebooks:/notebooks -d tensorflow/tensorflow
d1fceb76e44c4050c878a6ce996f59d8252c59d082293674db2ac043e8607f14
?  tensorflow

可以看到掛載成功

九、進(jìn)入容器內(nèi)部
// 進(jìn)入容器內(nèi)部
sudo docker exec -it c7efe /bin/bash

c7efe 為容器ID前幾位,通過上邊的命令即可進(jìn)入容器內(nèi)部。

進(jìn)入jupyter
?  tensorflow docker exec -it c7efe /bin/bash
root@c7efe77f377a:/notebooks#
root@c7efe77f377a:/notebooks# jupyter notebook list
Currently running servers:
http://localhost:8888/?token=44077e3f129fdbf0b26676b5414a36ce8b6a56627ad84a6e :: /notebooks
root@c7efe77f377a:/notebooks#
十、Docker重啟

在宿主機(jī)環(huán)境下重啟容器或整個docker

[corwien@lnp php_log]$ sudo docker ps    # 查看docker進(jìn)程
[corwien@lnp php_log]$ sudo docker restart bfc6    # docker 容器重啟
# service docker restart
sudo systemctl restart docker   如果網(wǎng)絡(luò)斷了,則重啟docker就可以了

查看DNS(docker容器在創(chuàng)建實(shí)例的時候會拷貝宿主機(jī)的到容器里邊,如果宿主機(jī)的DNS改變了,則需要重新加載容器的)

[root@bfc6f9d528a5 /]# cat /etc/resolv.conf

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27133.html

相關(guān)文章

  • DevOps 基于Walle的小型持續(xù)集成實(shí)戰(zhàn)(七)總結(jié)

    摘要:當(dāng)前版本針對于安裝版概要整體流程貫通,基本可以達(dá)到實(shí)用級別。仍舊有很多需要提高的地方發(fā)布構(gòu)建時部署上線服務(wù)器卡頓嚴(yán)重,基本不可以多項(xiàng)目發(fā)布。 該文章旨在描述從零開始搭建環(huán)境,中間遇到的問題以及最終的經(jīng)驗(yàn)總結(jié)。當(dāng)前版本針對于2.0 docker安裝版 概要 整體流程貫通,基本可以達(dá)到實(shí)用級別。滿足2-5臺服務(wù)器,少量的應(yīng)用部署是完全可以的,但達(dá)到一定規(guī)模之后則Walle和Jenkins...

    iliyaku 評論0 收藏0
  • .net core項(xiàng)目實(shí)戰(zhàn)之開發(fā)環(huán)境搭建

    摘要:安裝環(huán)境后,從官網(wǎng)下載。配置首先更換下鏡像源,國內(nèi)的網(wǎng)絡(luò)情況得適應(yīng),建議使用阿里云鏡像。到阿里云官網(wǎng)注冊個賬戶,有就直接進(jìn)入控制臺。 showImg(https://segmentfault.com/img/remote/1460000013793047); 在上一篇[[.net core項(xiàng)目實(shí)戰(zhàn)之回顧總結(jié)]](http://www.bug2048.com/netcor...,從本篇開...

    Dongjie_Liu 評論0 收藏0
  • 慕課網(wǎng)_《Docker入門》學(xué)習(xí)總結(jié)

    摘要:時間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個新的文件層。可選指定此鏡像啟動時默認(rèn)執(zhí)行命令。可選用于指定需要暴露的網(wǎng)絡(luò)端口號。可選向鏡像中掛載一個卷組。 時間:2017年09月16日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:無 第一章:課程簡介 1-1 課程介紹 Docke...

    CoorChice 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<