虛擬化之容器docker基本操做

docker 是一個開源的應用容器引擎,主要利用 linux 內核 namespace 實現沙盒隔離,用cgroup 實現資源限制。html



Docker 支持三種不一樣的鏡像層次存儲的 drivers:linux

aufs、devicemapper、btrfs ;ios

  • Aufs:nginx

AUFS (AnotherUnionFS) 是一種 Union FS, 簡單來講就是支持將不一樣目錄掛載到同一個虛git

擬 文 件 系 統 下 (unite several directories into a single virtual filesystem) 的 文 件 系 統 。 Aufsgithub

driver 是 docker 最先支持的 driver,可是 aufs 只是 linux 內核的一個補丁集並且不太能夠會web

被合併加入到 linux 內核中。可是因爲 aufs 是惟一一個 storage driver 能夠實現容器間共享可docker

執行及可共享的運行庫, 因此當你跑成千上百個擁有相同程序代碼或者運行庫時時候,aufsubuntu

是個至關不錯的選擇。centos

  • Device Mapper:

Device mapper 是 Linux 2.6 內核中提供的一種從邏輯設備到物理設備的映射框架機制,在

該機制下,用戶能夠很方便的根據本身的須要制定實現存儲資源的管理策略 ( 詳

見:http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html) 。

Device mapper driver 會建立一個 100G 的簡單文件包含你的鏡像和容器。每個容器被限

制 在 10G 大 小 的 卷 內 。 ( 如 果 想 要 調 整 , 參考 :http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/ 。 中 文 譯 文 :

http://zhumeng8337797.blog.163.com/blog/static/100768914201452405120107/ )

你能夠在啓動 docker daemon 時用參數-s 指定 driver:

docker -d -s devicemapper ;

  • Btrfs:

Btufs driver 在 docker build 能夠很高效。可是跟 devicemapper 同樣不支持設備間共享存儲(文檔裏是 does not share executable memory between devices)。

在 沒 有 aufs 支 持 的 linux 發 行 版 本 上 (CentOS,opensuse 等 ) 安 裝 docker 可 能 就 使 用 了devicemapper driver。wKioL1kRKXjDrXexAAQJRRD00OQ670.png

安裝

[root@server docker]# rpm -ivh  docker-engine-1.10.3-1.el7.centos.x86_64.rpm
warning: docker-engine-1.10.3-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
  1:docker-engine-1.10.3-1.el7.centos################################# [100%]
[root@server docker]# systemctl start docker

裝載鏡像

[root@server docker]# docker load -i ubuntu.tar 
[root@server docker]# docker p_w_picpaths
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              07c86167cdc4        14 months ago       187.9 MB

建立容器

[root@server docker]# docker run -it ubuntu        #-it交互模式    
root@910dbd82e909:/# [root@server docker]#
[root@server docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
910dbd82e909        ubuntu              "/bin/bash"         18 seconds ago      Up 13 seconds                           adoring_lovelace

查詢一個命令屬於哪一個包

[root@foundation88 docker]# which brctl 
/sbin/brctl
[root@foundation88 docker]# rpm -qf /sbin/brctl
bridge-utils-1.5-9.el7.x86_64

由於docker默認網絡模式爲橋接模式,能夠用橋接管理命令查看

[root@server docker]# brctl show
bridge name    bridge id        STP enabled    interfaces
docker0        8000.02428cec69f4    no        veth5b3bf12

docker 退出容器模式爲crtl+p+q,若是用exit,將關閉容器,即不在後臺運行

[root@server docker]# docker run -it ubuntu
root@5aace2fb8630:/# exit
exit
[root@server docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
910dbd82e909        ubuntu              "/bin/bash"         8 minutes ago       Up 8 minutes                            adoring_lovelace
[root@server docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
5aace2fb8630        ubuntu              "/bin/bash"         18 seconds ago      Exited (0) 12 seconds ago                       stoic_saha
910dbd82e909        ubuntu              "/bin/bash"         8 minutes ago       Up 8 minutes

刪除容器

[root@server docker]# docker rm 5a
5a
[root@server docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
910dbd82e909        ubuntu              "/bin/bash"         11 minutes ago      Up 10 minutes                           adoring_lovelace

鏈接一個容器,查看橋接ip地址,ping

root@c4d727868a0b:/# [root@server docker]# 
[root@server docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c4d727868a0b        ubuntu              "/bin/bash"         26 seconds ago      Up 22 seconds                           vm1
910dbd82e909        ubuntu              "/bin/bash"         12 minutes ago      Up 12 minutes                           adoring_lovelace
[root@server docker]# docker attach vm1

root@c4d727868a0b:/# ip addr show
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
   link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
   inet 172.17.0.3/16 scope global eth0
root@c4d727868a0b:/# ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.199 ms

在真機能夠查看docker橋接網段

[root@server ~]# ip addr
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
   link/ether 02:42:8c:ec:69:f4 brd ff:ff:ff:ff:ff:ff
   inet 172.17.0.1/16 scope global docker0

容器的中止和刪除

[root@server docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c4d727868a0b        ubuntu              "/bin/bash"         7 minutes ago       Up 7 minutes                            vm1
910dbd82e909        ubuntu              "/bin/bash"         19 minutes ago      Up 19 minutes                           adoring_lovelace
[root@server docker]# docker stop 91
91
[root@server docker]# docker rm 91
91
[root@server docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c4d727868a0b        ubuntu              "/bin/bash"         7 minutes ago       Up 7 minutes                            vm1
[root@server docker]#

建立容器爲後臺關閉模式

[root@server docker]# docker run -d ubuntu
de3211baa651006b40a48d6765e1c7428779e1a5b3806b379f15700971071046
[root@server docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
de3211baa651        ubuntu              "/bin/bash"         17 seconds ago      Exited (0) 12 seconds ago                       determined_brown

中止全部容器,刪除全部容器

[root@server ~]# docker stop `docker ps -aq`
fd799738de8f
c7b5d3645fc6
736d7669bb13
[root@server ~]# docker rm `docker ps -aq`
fd799738de8f
c7b5d3645fc6
736d7669bb13


刪除鏡像

[root@server ~]# docker rmi ubuntu
Untagged: ubuntu:latest
Deleted: sha256:07c86167cdc4264926fa5d2894e34a339ad27f730e8cc81a16cd21b7479e8eac
Deleted: sha256:0aaccda2aadfc70ab2248437568fd17f4e8860cf612cc4b7e154b97222dccf91
Deleted: sha256:220d2912ab1dbae4cb19007b1181991c51d7e9e71d83894f0ace0528df383eb3
Deleted: sha256:9dcfe19e941956c63860afee1bec2e2318f6fbd336bc523094ed609a9c437a01
Deleted: sha256:cc77a2e3d72c7dcb24ed23a23479e3b90ad64e3a91b2f0ce2320580979076d44



docker cp 本地文件到容器

[root@server docker]# docker cp /etc/passwd vm2:/mnt/
[root@server docker]# docker attach vm2
root@2999982a1428:/# cd /mnt/
root@2999982a1428:/mnt# ls
passwd

Inspect changes on a container's filesystem

[root@server mnt]# docker diff vm2
C /mnt
A /mnt/passwd
C /root
A /root/.bash_history

Show the history of an p_w_picpath

[root@server mnt]# docker history ubuntu
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
07c86167cdc4        14 months ago       /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B                
220d2912ab1d        14 months ago       /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/   1.895 kB            
cc77a2e3d72c        14 months ago       /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   194.5 kB            
c8fa7cdceff3        14 months ago       /bin/sh -c #(nop) ADD file:b9504126dc55908988   187.7 MB


nginx

建立容器端口映射:直接訪問本地的端口,便可實現對容器的訪問 注意:映射端口不能和本地衝突!!!


[root@server mnt]# docker run -d --name web2 -p 8000:80 nginx
f942d148a0b48148eaf2dd4f0b46f872587d4435c16ae45fbb0914ae2768c959
[root@server mnt]# netstat -antlp |grep 8000
tcp6       0      0 :::8000                 :::*                    LISTEN      3166/docker-proxy
[kiosk@foundation88 Desktop]$ curl 172.25.88.15:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
   body {
       width: 35em;
       margin: 0 auto;
       font-family: Tahoma, Verdana, Arial, sans-serif;
[root@server mnt]# cat /proc/partitions major minor  #blocks  name   8        0    8388608 sda   8        1     512000 sda1   8        2    7875584 sda2 253        0    6991872 dm-0 253        1     839680 dm-1   7        0  104857600 loop0   7        1    2097152 loop1 253        2  104857600 dm-2 253        3   10485760 dm-3 253        4   10485760 dm-4
相關文章
相關標籤/搜索