1. 程式人生 > >Linux的企業-docker簡介

Linux的企業-docker簡介

docker簡介

一.Docker

docker 是一個應用容器引擎,讓開發者可以打包安裝他們的應用,以及依賴包到一個可移植容器中去,然後發布到任何Linux容器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間沒有任何接口。

基於go語言並遵循Apache2.0開源協議。

Docker面向對象

容器對象

鏡像

docker在本質上是一個附加系統使用文件系統的不同層構建一個應用層是有可能的

Docer實例是無狀態的他們不應該承擔任何交易數據,所有的數據應該保存在數據庫服務器中。

Docker基於LXC的高級容器引擎,其隔離性主要來自於namespace

Docker所提供的功能:

1Images(鏡像):Docker可以通過

PullPush命令構建對象到服務中心

2Containers(容器):Docker可以通過Start/Stop命令管理容器的生命周期

3Logging(日誌):Docker可以通過stdoutstderro捕獲輸出所有的容器內部信息

4Volumes(存儲):Docker可以創建和管理容器的相關文件存儲

5Networking(網絡):Docker可以創建管理虛擬的接口和內部所有容器之間的網絡橋接

5RPCDocker服務器提供允許外部程序去控制所有容器的行為的API

@http://www.docker.org.cn/docker/70.html

首先在系統上安裝docker服務,dockerrhel7.2

系統上運行良好,在低版本的系統上有些問題。鏡像去網上down

鏡像的創建和銷毀:

查看本地鏡像:docker images

查看本地鏡像詳情:docker inspect +鏡像名稱

導入本地鏡像:docker load -i +鏡像名稱

導出本地鏡像:docker save rhel >rhel.tar

更新本地鏡像:docker commit 適用於對基礎鏡像做一些公共性的操作,然後重新打包。

刪除本地鏡像:docker rmi +鏡像名稱 前提:該鏡像沒有被占用

容器的銷毀和重建:

docker run -it --name vm1 +鏡像名稱 bash 交互式方法創建一個容器

rhel系列的容器創建必須要有

bash

docker run -d --name vm1+鏡像名稱 後臺運行一個容器。

docker ps -a 查看所有容器狀態

docker pa 查看當前正在運行的容器狀態

docker attach vm1 連接容器

docker logs vm1 查看容器指令輸出 -f 可以實時查看

docker inspect vm1 查看容器詳情

docker stats vm1 查看容器資源使用率(實時)

docker diff vm1 查看容器修改

docker run -d --name vm1 rhel7 bash -c "while true; do echo westos; sleep 1; done創建後臺運行並執行指令的容器

docker stop vm1 停止容器

docker start vm1 啟動容器

docker kill vm1 強制中止容器

docker restart vm1 重起容器

docker pause/unpause 暫停/恢復容器。

docker export vm1 > vm1.tar 導出容器

docker import vm1.tar image 導入容器為鏡像image

docker數據卷管理:

docker run 在創建容器時使用 -v 參數可以掛載一個或多個數據卷到當前運行的容器中,-v

的作用是將宿主機上的目錄作為容器的數據卷掛載到容器中,使宿主機和容器之間可以共

享一個目錄。

掛載數據卷到新創建的容器上:

# docker run -it --name westos -v /tmp/data1:/data1 -v /tmp/data2:/data2 rhel7 /bin/bash

-v 參數可以重復使用,掛載多個數據卷到容器中,冒號前面的是宿主機的目錄(本地目錄

不存在 docker 會自動創建),冒號後面的是容器中的掛載目錄。

:docker commit 時卷的數據不會被保存。

默認掛載可以讀寫數據卷,也可以只讀掛載:

# docker run -it --name westos2 -v /tmp/data2:/data2:ro

rhel /bin/bash

掛載宿主機文件:

#

docker

run

-it

--name

westos3

/etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro rhel7 /bin/bash

-v

數據卷容器:

# docker create --name data -v /tmp/sharedata:/sharedata rhel7 /bin/true

# docker run -it --name vm1 --volumes-from data rhel7 /bin/bash

# docker run -it --name vm2 --volumes-from data rhel7 /bin/bash

# docker attach vm1

bash-4.2# cd /sharedata/

bash-4.2# touch vm1file

# docker attach vm2

bash-4.2# cd /sharedata/

bash-4.2# ls

passwd vm1file

bash-4.2# touch vm2file

[root@foundation0 ~]# ls /tmp/sharedata/

passwd vm1file vm2file

備份數據卷: 要預先封裝tar 工具進去

# docker run --rm --volumes-from data -v /tmp/backup:/backup rhel7 tar cf

/sharedata /backup/test.tar

Dockerfile編寫:

首先對基礎鏡像操作:

bash-4.2# cat /etc/yum.repos.d/rhel7.repo

[rhel7.1]

name=rhel7.0

baseurl = http://172.25.254.33/rhel7.2

#baseurl=file:///var/www/html/rhel7.2

gpgcheck=0

13 yum install -y iputils-20121221-7.el7.x86_64

14 yum install -y net-tools-2.0-0.17.20131004git.el7.x86_64

15 yum install -y procps-ng-3.3.10-3.el7.x86_64

16 ps -ax

17 yum install -y openssh-server openssh-clients

18 yum install -y openssh-client

19 yum install -y openssh-clients

使用ctrl +p+q 退出。

提交修改過的容器:並加上tag 後綴。

[root@foundation33 ~]# docker commit vm1 rhel7:yum

cat Dockerfile

FROM rhel7:yum

MAINTAINER [email protected]

ENV HOSTNAME server1

EXPOSE 22

RUN yum install -y openssh-server openssh-clients && yum clean all

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ""

RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -q -N ""

RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519 -q -N ""

RUN echo root:westos|chpasswd

CMD ["/usr/sbin/sshd","-D"]

此時,在docker images 中可以發現該鏡像。可以使用該鏡像創建容器。



二.安裝docker

技術分享

技術分享

ip:

技術分享


三.docker的使用

1.加載鏡像

技術分享


2.創建容器啟動鏡像

技術分享


3.保存

技術分享


4.查看容器

技術分享


5.刪除容器

技術分享


6.加載一個小遊戲

技術分享

查看地址

技術分享

技術分享

技術分享


網絡訪問

技術分享


創建8080映射到80端口,後臺運行

技術分享

技術分享

技術分享


技術分享

技術分享



7.容器鏡像裏的數據與物理機共享

技術分享



技術分享

技術分享


8.鏡像裏的數據備份

技術分享


9.用容器部署nginx

技術分享


vim index.html

技術分享

技術分享

技術分享

技術分享


Linux的企業-docker簡介