容器自動化(一):docker基礎(上)
一,Docker簡介,功能特性與應用場景
1.1 Docker簡介
- Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。
- 一個完整的Docker有以下幾個部分組成:
- Docker Client 客戶端
- Docker Daemon 守護程序
- Docker Image 映象
- Docker Container 容器
1.2 Docker功能特性
- 隔離環境(系統,網路,檔案系統)與應用
- 解決依賴與版本問題
- 易於分發,開箱即用
- 節點與容器快速擴容
- 映象製作簡單便捷,管理方便
(1)隔離
- 通過cgroup(隔離和跟蹤資源的使用)& namespace(組與組之間隔離)來實現輕量級的程序隔離
- 對於容器中執行的程序來說,自己獨佔了一個系統
- 容器間網路,檔案及其他資源都互相隔離
(2)版本與依賴
- 傳統模式下,多個不同環境或版本的專案需要部署在不同機器上,部署與後期維護管理複雜繁瑣。
- 使用Docker,通過多個不同版本或者環境的映象,可以同時執行在一臺機器上互不干擾,部署與後期維護簡單方便。
(3)分發與使用
- 映象可以通過匯入,匯出,上傳到映象倉庫等多種方式進行分發
- 在啟動了Docker的系統上直接使用docker run即可啟動映象,無需特別配置。
(4)擴容
- 容器擴容簡單方便
- 擴容節點只需安裝並啟動Docker即可
(5)映象製作
- 映象的靈魂Dockerfile
- 使用Dockerfile進行指令控制
- 基於Linux命令,易於理解,快速上手
- 易於定製與修改
1.3 Docker應用場景
- Docker通常應用於如下場景:
- web應用的自動化打包和釋出;
- 自動化測試和持續整合,釋出;
- 應用服務,如MySQL,Redis等,通過Docker實現快速部署;
- k8s私有云
1.3.1 場景1:多版本多種類系統與軟體
1.3.2 場景2: 環境
1.3.3 場景3: 分發
二,Docker的安裝
2.1 安裝環境
最小化安裝Centos7.5,關閉防火牆和selinux
2.2 版本選擇
- Docker
- 17.03之後版本變為Docker CE
- Docker CE
- 社群版,Community Edition
- Docker EE
- 企業版,Enterprise Edition
- 收費版本,強調安全性,提供一些高階特性及商業支援
2.3 Docker安裝:標準版本
[[email protected] ~]# yum -y install docker
2.4 Docker安裝:CE社群版
首先清理掉yum安裝的docker標準版
這裡有兩種方式
第一種清理docker方法
:
[[email protected] ~]# yum -y remove docker
第一種清理docker方法
:
[[email protected] ~]# yum history list #檢視yum安裝的歷史列表
[[email protected] ~]# yum history info 16 #檢視yum歷史安裝ID為6的安裝資訊
[[email protected] ~]# yum -y history undo 16 #進行yum安裝操作回退
安裝Docker的CE社群版
安裝依賴包
[[email protected] ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
新增docker的CE版本的yum源配置檔案
[[email protected] ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
安裝CE版本的docker
[[email protected] ~]# yum -y install docker-ce
啟動docker,
新增開機啟動,
檢視docker版本
[[email protected] ~]# systemctl start docker
[[email protected] ~]# systemctl enable docker
[[email protected] ~]# docker version
三,Docker的操作命令
3.0 新增docker國內映象源
在開始學習docker之前,我們首先要更改一下docker的預設源映象下載地址(預設是從國外下載,很慢),我們需要新增國內的源地址
[[email protected] ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":[ "https://registry.docker-cn.com" ]
}
[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker
3.1 Docker命令:search(用於從docker的官方公有映象倉庫查詢映象)
[[email protected] ~]# docker search centos
特別說明:
Name:映象的名字
DESCRIPTION:描述
STARS:星級(越高越好)
OFFICIAL:是否是官方釋出的
AUTOMATED:是否自動化的
(2)查詢星級多於100的centos映象
[[email protected] ~]# docker search centos -f stars=100
特別提示:
/:符號用於分割作者名稱和映象名稱
ansible/centos7-ansible:ansible是作者名稱,centos7-ansible是映象名稱
(3)多條件查詢--filter
查詢官方釋出的,星級大於100的centos映象
[[email protected] ~]# docker search centos --filter is-official=true --filter stars=100
3.2 Docker命令:pull(用於從Docker Hub上下載公有映象)
查詢符合條件的hello-world映象
[[email protected] ~]# docker search hello-world --filter is-official=true --filter stars=100
下載目標hello-world映象
[[email protected] ~]# docker pull hello-world
下載目標centos:7映象(
網速不好的話,需要點時間耐心等待
)
[[email protected] ~]# docker pull centos:7
3.3 Docker命令:images
用於本地映象的檢視
特別說明:
REPOSITORY:映象倉庫(下邊羅列的都是本地已有映象名稱)
TAG:映象的標記(為了區分同名映象)
IMAGES ID:映象的ID號
CREATED:此映象的建立時間
SIZE:此映象的大小
3.4 Docker命令:build
用於本地自定義映象的構建,需要建立Dockerfile檔案
建立Dockerfile檔案的儲存目錄
[[email protected] ~]# mkdir -p /root/dockerfile/lib/centos/7
[[email protected] ~]# cd /root/dockerfile/lib/centos/7
建立docker.sh指令碼
[[email protected] 7]# vim docker.sh
[[email protected] 7]# cat docker.sh
#!/bin/bash
while true
do
echo "nihao"
sleep 5
done
建立Dockerfile配置檔案,檔名稱必須為Dockerfile,第一個字母必須大寫
[[email protected] 7]# vim Dockerfile
[[email protected] 7]# cat Dockerfile
FROM centos #從centos源映象的基礎上進行構建
LABEL MAINTATNER="wwl" #作者的名稱
RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #RUN:在映象構建過程中執行命令
ADD docker.sh /home/test/ #從本地系統中把docker.sh檔案新增到構建中的映象的/home/test/目錄下
RUN chmod +x /home/test/docker.sh #在映象構建過程中執行命令
CMD ["/home/test/docker.sh"] #構建映象完成時,最後執行的命令
根據Dockfile配置檔案構建一個自定義映象
[[email protected] 7]# docker build -t wwl/centos7:1 . #-t 指定映象名稱 :1 設定映象的tag標記
3.5 Docker命令:run
執行一個本地映象
[[email protected] 7]# docker run -dit 930caa8ceeb6 /bin/bash
1af173b11dbb11131a823f9ef64979cf2db906bb2d442d00447cc8161971cc66
特別提示:
docker run:執行一個指定的images id
-d:放在後臺執行
-i:可以進行命令互動
-t:製作一個偽終端用於登陸
- 930caa8ceeb6:
映象的ID,可以簡寫成930
3.6 Docker命令:ps
檢視已經執行的映象的程序
[[email protected] 7]# docker ps -a #檢視所有執行的映象程序(包含退出的exit)
特別提示:
STATUS:程序的狀態,UP表示正在執行中,EXIT表示已經退出了。
3.7 Docker命令:attach
從本地系統中切入到某個STATUS狀態是UP的映象程序裡
[[email protected] 7]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES1af173b11dbb 930caa8ceeb6 "/bin/bash" 4 minutes ago Up 4 minutes
upbeat_napier[[email protected] 7]# docker attach 1af173b11dbb #切入到容器號為1af173b11dbb的映象程序裡
[[email protected] /]# ls #已經進入容器裡了
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[[email protected] /]# exit #退出容器
exit
[[email protected] 7]# docker ps -a #容器的程序的STATUS已經處於EXIT狀態(之前是後臺執行的,切入進去後執行exit就等於手動退出了)
3.8 Docker命令:stop
用於停止一個正在執行著的容器程序
再次在後臺啟動一個映象
增加了一個容器程序
停止一個執行著的容器程序
3.9 Docker命令:start
用於啟動一個已經停止了的容器程序
3.10 Docker命令:rm
用於刪除一個已經停止了的容器程序
3.11 Docker命令:rmi
用於刪除一個未用作容器啟動的本地映象
[[email protected] 7]# docker rmi 930
Error response from daemon: conflict: unable to delete 930caa8ceeb6 (cannot be forced) - image is being used by running container 8576060bb73d #但要注意,被用作容器啟動的映象是不能刪除的(需先rm刪除容器程序)
[[email protected] 7]# docker rmi -f 930
Error response from daemon: conflict: unable to delete 930caa8ceeb6 (cannot be forced) - image is being used by running container 8576060bb73d #強行刪除被容器程序佔用的映象也是不行的
檢視容器程序,被佔用中
3.12 Docker命令:commit
將一個更改過的容器程序的容器狀態儲存為一個新的映象
檢視啟動的容器程序
切入容器程序,
在容器程序裡建立yunjisuan目錄,
退出容器程序
將更改後的容器程序儲存為一個新的映象
[[email protected] 7]# docker commit 857 wwl/centos:2
sha256:e11d502b90bc022ae5d8ed6b068e25e45f50a89edf6d9dfaf6caa7ede44c4acb
啟動新儲存的映象
[[email protected] 7]# docker run -dit e11 /bin/bash
0ffd2ef0e3bdaa36f02cc4f59ea0e19c2355878dbe820e9053e7d4a8aafda7bd
檢視新映象的容器程序
切入新映象的容器程序,
我們發現之前建立的目錄仍舊存在
3.13 Docker命令:exec
用於從本地作業系統上直接向容器程序釋出執行命令並返回結果
[[email protected] ~]# docker exec 0ff ls /tmp #檢視容器程序裡的/tmp目錄下所有內容
ks-script-h2MyUP
yum.log
[[email protected] ~]# docker exec 0ff ls -d yunjisuan #檢視容器程序裡/yunjisuan目錄
yunjisuan
3.14 Docker命令:cp
用於在容器程序和本地系統之間複製檔案
[[email protected] ~]# docker exec 0ff ls /tmp #向容器程序釋出命令
ks-script-h2MyUP
yum.log
[[email protected] ~]# docker cp 0ff:/tmp/yum.log . #將指定容器程序的/tmp/yum.log複製到當
前目錄下
[[email protected] ~]# ls
anaconda-ks.cfg dockerfile yum.log #已經複製過來了
[[email protected] ~]# docker cp anaconda-ks.cfg 0ff:/tmp/ #將本地檔案複製到容器程序裡
[[email protected] ~]# docker exec 0ff ls /tmp
anaconda-ks.cfg #複製成功
ks-script-h2MyUP
yum.log
3.15 Docker命令:create
用於建立一個容器程序,但是並不啟動它
3.16 Docker命令:diff
檢視容器程序與源映象做對比,發生了改變的檔案或資料夾
啟動一個映象的容器程序
[[email protected] ~]# docker run -dit e11
d1e90a6a0013e735c4fca03f1325e9a966fd356bec8d33bc534c1c73e7d90b30
切入容器程序
,在容器程序中建立檔案
,退出容器程序
檢視容器程序的變化
3.17 Docker命令:events
時時監測容器的變化情況
前臺時時監控容器的變化若要檢測,需要另外再起一個視窗進行操作
3.18 Docker命令:export
將容器程序的檔案系統匯出到本地
將容器程序匯出成一個tar包
3.19 Docker命令:import
用於將export匯出的檔案系統建立為一個映象
3.20 Docker命令:history
用於檢視一個映象的歷史修改紀錄
3.21 Docker命令:info
用於檢視當前作業系統的docker執行資訊
[[email protected] ~]# docker info
Containers: 1 #容器程序1個
Running: 1 #正在執行狀態的容器1個
Paused: 0
Stopped: 0
Images: 8 #一共有8個映象
Server Version: 18.09.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 96ec2177ae841256168fcf76954f7177af9446eb
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 974.6MiB
Name: Docker
ID: 5YNS:BXNE:O23E:DZWE:ST6K:OEXH:LBAB:DCAD:5W3D:RUJU:FQ64:3O5O
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://registry.docker-cn.com/
Live Restore Enabled: false
Product License: Community Engine
3.22 Docker命令:inspect
檢視某個映象的詳細資訊
[[email protected] ~]# docker inspect ea32ac5ede08
[
{
"Id": "sha256:ea32ac5ede089e65676f3e00b7580be456234206999e75c767debd0071c7d7a7",
"RepoTags": [
"wwl/centos:3"
],
"RepoDigests": [],
"Parent": "",
"Comment": "Imported from -",
"Created": "2019-01-14T07:43:56.554044061Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "18.09.1",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 201779577,
"VirtualSize": 201779577,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/3da3b10942aa4ef821dbe590d8c1b968ca72c06430618ffd317f
a0920ca860bd/merged", "UpperDir": "/var/lib/docker/overlay2/3da3b10942aa4ef821dbe590d8c1b968ca72c06430618ffd317fa
0920ca860bd/diff", "WorkDir": "/var/lib/docker/overlay2/3da3b10942aa4ef821dbe590d8c1b968ca72c06430618ffd317fa0
920ca860bd/work" },
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f92b22b571a9faebf9f5e013f8f7d84c0181c0610fdb8b20fc2da22f43b0b56d"
]
},
"Metadata": {
"LastTagTime": "2019-01-14T15:43:56.603952511+08:00"
}
}
]
3.23 Docker命令:kill
強行停止一個或多個正在執行狀態的容器程序
3.24 Docker命令:save
用於將一個映象的檔案系統匯出到本地(export匯出的是容器)
重新build一個映象
save匯出test:1這個映象(也可以用id號)
3.25 Docker命令:load
用於將save匯出到本地的tar包,重新載入為映象(和源映象的名字標識完全一樣)
刪除別的映象,就保留兩個
將之前test:1這個映象的save備份匯入系統
3.26 Docker命令:logs
用於輸出一個容器程序內的操作日誌
只顯示容器日誌的後5行
3.27 Docker命令:pause && unpause
用於將一個或多個容器的程序暫停和恢復
3.28 Docker命令:port
用於列出一個容器的埠對映及協議
[[email protected] 7]# docker run -dit -p 6666:22 test:1 #啟動一個映象的容器程序 -p 指定本地6666埠對映到容器的22埠
d7641bcd7949432b0eaa084bd7600cf2631add788ecb2ec6f124ffa2532a5bd0
[[email protected] 7]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PO
RTS NAMESd7641bcd7949 test:1 "/home/test/docker.sh" 5 seconds ago Up 3 seconds 0.
0.0.0:6666->22/tcp romantic_gates2d5d764e0e22 test:1 "/home/test/docker.sh" 4 minutes ago Up 4 minutes
silly_jackson
檢視容器程序的埠對映及協議
[[email protected] 7]# docker port d7641bcd7949
22/tcp -> 0.0.0.0:6666
[[email protected] 7]# docker pull nginx
[[email protected] 7]# docker run -dit --name nginx_test -p 80:80 7042885a156a 啟動本地映象nginx,程序名叫nginx_test,將本地的80埠對映到容器的80埠
nginx關閉了守護模式,就相當於nginx在前臺啟動了,平常啟動nginx是在後臺啟動,但是放後臺啟動容器啟動不了,所以在啟動時關閉了nginx的守護模式
本地沒有安裝nginx,看的就是容器裡的nginx,就是訪問宿主機的80埠,對映到了容器裡的80埠
3.29 Docker命令:rename
給容器程序重新命名
3.30 Docker命令:restart
重啟一個容器程序
3.31 Docker命令:stats
用於時時輸出容器的資源使用情況
--no-tream只輸出一次
3.32 Docker命令:tag
用於從一個指定的映象建立另外一個映象
3.33 Docker命令:top
用於顯示指定容器的程序資訊
3.34 Docker命令:update
用於調整一個或多個容器的啟動配置
3.35 Docker命令:version and wait
version用於顯示docker的版本資訊
wait用於捕捉一個或多個容器的退出狀態,並返回退出狀態碼
顯示docker版本資訊
監聽容器的退出狀態並返回狀態碼
[[email protected] 7]# docker wait wwl
需要在開一個視窗stop這個容器程序再檢視
3.36 Docker命令:login && logout && push
- login用於登陸docker hub官方公有倉庫
- logout用於登出docker hub官方公有倉庫
- push用於將本地映象提交到docker hub
由於docker hub國內已經無法註冊,因此無法演示上述內容
DockerHub官方公有映象倉庫:https://hub.docker.com/
四,管理應用程式資料
4.1 Volume和Bind Mount
將Docker主機資料掛載到容器
- Docker提供三種不同方式將資料從宿主機掛載到容器中:volumes,bind mounts和tmpfs。
- volumes:Docker管理宿主機檔案系統的一部分(/var/lib/docker/volumes)
- bind mounts:可以儲存在宿主機系統的任意位置
- tmpfs:掛載儲存在宿主機系統的記憶體中,而不會寫入宿主機的檔案系統
4.1.1 Volume
建立一個卷
下載一個nginx官方映象(前面已經下載過)
[[email protected] 7]# docker run -dit --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/
html nginx
特別說明:
--name:容器的名字
--mount:掛載
src:源卷的名字
dst:掛載到容器中的路徑
向容器中的掛載目錄建立檔案,檢視是否掛載成功
[[email protected] 7]# docker exec nginx-test touch /usr/share/nginx/html/test.txt
[[email protected] 7]# docker exec nginx-test ls /usr/share/nginx/html/
50x.html
index.html
test.txt #有了
[[email protected] 7]# ls /var/lib/docker/volumes/nginx-vol/_data/
50x.html index.html test.txt #成功
清理容器程序
清理容器後,掛載的卷的資料仍舊存在
重新啟動映象nginx的容器程序
特別提示:
docker run的-p引數:指定埠的對映,88:80的意思就是將宿主機88埠的訪問對映到容器程序的80埠
現在我們通過瀏覽器訪問宿主機的88埠,進而訪問容器程序的80埠
在資料卷nginx-vol裡換一個網頁在訪問
現在我們再啟動一個映象nginx的程序,讓兩個nginx的容器程序公用一個數據卷nginx-vol
[[email protected] 7]# docker run -dit --name nginx-test2 -p 89:80 --mount src=nginx-vol,dst=/usr/sh
are/nginx/html nginx
我們用瀏覽器訪問docker宿主機的89埠
4.1.2 Bind Mounts
[[email protected] 7]# docker run -dit --name nginx-test3 -p 90:80 --mount type=bind,src=/var/lib/do
cker/volumes/nginx-vol/_data,dst=/usr/share/nginx/html nginx
我們用瀏覽器訪問docker宿主機的90埠
特別提示:
bind mounts可以掛載宿主機上的任意目錄,而volume先得建立後才能掛載
用卷管理,卷建立好是空的,然後掛載到映象裡,映象裡的源目錄是有東西的,它會自動出現在卷裡,但是bind mounts會把映象裡的東西給頂了,以這種方式掛過去,預設是以自己目錄為主,如果用卷,是以對方目錄為主
4.2 實戰容器部署LNMP網站平臺
首先我們下載一個wordpress部落格
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
4.2.1 建立MySQL資料庫容器
下載MySQL5.6版本映象:[[email protected] ~]# docker pull mysql:5.6
[[email protected] ~]# docker network create lnmp #建立一個自定義網路
啟動MySQL資料庫容器
[[email protected] ~]# docker run -dit --name lnmp_mysql --network lnmp -p 3306:3306 --mount src=mys
ql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123123 mysql:5.6 --character-set-server=utf8
索引的長度不能超過254=254x3位元組(一個漢字三位元組),索引太長容易影響sql的效率
特別提示:
- 自定義網路lnmp如果不提前建立的話,在啟動容器程序時會報錯
- 如果沒有提前pull好mysql:5.6那麼容器在啟動時會自動下載對應映象
- 如果沒有提前docker volume create mysql-vol,那麼容器啟動時會自動建立
4.2.2 向容器裡的Mysql建立一個庫
[[email protected] ~]# docker exec lnmp_mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wp"'
相關推薦
容器自動化(一):docker基礎(上)
一,Docker簡介,功能特性與應用場景 1.1 Docker簡介 Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。 一個完整的Docker有以
Spring學習(3):IOC基礎(轉載)
目標 發生 由於 不同 擴展 通過 new 包括 control 一. IoC是什麽 Ioc—Inversion of Control,即“控制反轉”,不是什麽技術,而是一種設計思想。在Java開發中,Ioc意味著將你設計好的對象交給容器控制,而不是傳統的在你的對象內部
Docker(一):Docker核心技術預覽
docker開始學習docker了,想寫一篇docker技術介紹的純理論文章,發現以下網站的文檔寫的特別好,就直接引用了,文章轉載自:http://www.infoq.com/cn/DockerDeep http://www.infoq.com/cn/articles/docker-core-technolo
Docker(十一):Docker實戰部署HTTPS的Tomcat站點
pos 容器 image avi tor 基礎 oot stat ask 1、選擇基礎鏡像 docker pull tomcat:7.0-jre8 2、生成HTTPS證書 keytool -genkey -alias tomcat -keyalg RSA -key
Netty入門(一):零基礎“HelloWorld”詳細圖文步驟
-a 多線程 obj chan blog 接口文檔 syn 幫助 final 因為接下來的項目要用到netty,所以就了解一下這個程序,奈何網上的教程都是稍微有點基礎的,所以,就寫一篇對於netty零基礎的,順便也記錄一下。 先扔幾個參考學習的網頁: netty 官方
Docker基礎(一)
移植 下載 boot 沒有 遠程 res 自己 方便 自帶 1.安裝:安裝教程很多,Ubuntu14.04自帶有docker【之前使用Ubuntu13.04結果安裝了好久也沒有安裝好,後來就直接是14,04了】 2.docker是容器,那麽什麽是容器? docker是一種
轉載:Docker源碼分析(一):Docker架構
但是 server engine 設計實現 傳統 microsoft {} 操作 libc 原文地址: http://www.infoq.com/cn/articles/docker-source-code-analysis-part1 作者:孫宏亮 1 背景 1.1 D
docker學習(一):docker安裝和架構
本筆記根據51CTO的CloudMan博主的部落格而記錄的。 本節主要學習 docker安裝和解除安裝 docker的架構 一、Docker的安裝和解除安裝 Docker的安裝 1、安裝之前,要先把舊版的Docker給解除安裝了,以下是Docker官網上的安裝前解除安裝Dock
理解Docker(4):Docker 容器使用 cgroups 限制資源使用
來源:http://www.cnblogs.com/sammyliu/p/5886833.html 上一篇文章將到 Docker 容器使用 linux namespace 來隔離其執行環境,使得容器中的程序看起來就像愛一個獨立環境中執行一樣。但是,光有執行環境隔離還不夠,因為這些程序還是可以不受
理解Docker(3):Docker 使用 Linux namespace 隔離容器的執行環境
來源:http://www.cnblogs.com/sammyliu/p/5878973.html 1. 基礎知識:Linux namespace 的概念 Linux 核心從版本 2.4.19 開始陸續引入了 namespace 的概念。其目的是將某個特定的全域性
理解Docker(1):Docker 安裝和基礎用法
來源:https://www.cnblogs.com/sammyliu/p/5875470.html 1. 安裝 1.1 在 Ubuntu 14.04 上安裝 Docker 前提要求: 核心版本必須是3.10或者以上 依次執行下面的步驟: sudo apt-g
Docker系列(一):Docker介紹
Docker的定義: Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。&
程式設計菜鳥到大佬之路:演算法基礎(一)
第一天學習精要 列舉 完美立方 列舉:基於逐個嘗試答案的一種問題求解策略。 例題1:完美立方 題目描述 形如
Python爬蟲開發(一):零基礎入門
0×00 介紹 本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並
《圖解HTTP》讀書筆記(一:網路基礎TCP/IP)
好書什麼時候開始讀都不晚。作為一個測試人員,是一定要掌握一些網路的基礎知識的。希望能夠邊讀書邊在這裡記錄筆記,便於加深理解以及日後查閱。 一、TCP/IP協議族 計算機與網路裝置要互相通訊,雙方必須基於相同的方法。比如,探測訊號目標、由誰先發起通訊、使用哪種語言進行通訊、怎樣結束通訊等規則需要事先確定。我
面試題(一):Java基礎知識
Java 基礎知識01. 面向物件的特性有哪些?答:封裝、繼承和多型。02. Java 中覆蓋和過載是什麼意思?解析:覆蓋和過載是比較重要的基礎知識點,並且容易混淆,所以面試中常見。答:覆蓋(Overr
學習MongoDB 十一: MongoDB聚合(Aggregation Pipeline基礎篇上)(三)
一、Aggregate簡介 db.collection.aggregate()是基於資料處理的聚合管道,每個文件通過一個由多個階段(stage)組成的管道,可以對每個階段的管道進行分組、過濾等功能,然後經過一系列的處理,輸出相應的結果。
Maven學習(一):maven基礎
一、安裝(前提是java安裝成功) 1、下載,並解壓到固定資料夾中:如 D:\MyJAR\Use_JAR\apache-maven-3.2.3\bin 2、配置系統環境變數:新增M2_HOME : D:\MyJAR\Use_JAR\apache-maven-3.2.3 即
Docker學習(2):Docker映象介紹和容器的兩種建立方式
1.什麼是Docker映象 Docker映象是啟動容器構建的基石,是由檔案系統疊加而成,最底端是一個引導檔案系統,即bootfs,這很像典型的Linux的引導檔案系統,但是Docker使用者幾
dockerfile相關(4):docker常用基礎映象——java映象
1. java映象 使用Java映象的最直接方法是把它作為基礎映象或執行時環境。 1.1 映象tag java:<version> 如果你不確定你需要什麼,那麼請用這個tag。它可以作為一個執行時環境,裝載你的原始碼,並啟動你的應用程