1. 程式人生 > >Docker入門(二)

Docker入門(二)

docker安裝 docker基礎命令

一、Docker相關概念

1.Docker:

namespace,cgroup:

解決方案:

lxc,openvz

lxc:linux containers

docker最初就是lxc的封裝版本。

docker engine/docker server:輸出一個api,用於接受外部請求

接受到client請求,借助於lxc虛擬化技術,在lxc上創建一個虛擬機實例。

docker借助於外部的dockerhub,實現image

後臺docker不再使用lxc,使用libcontainer[centos 7],隔離用戶空間的引擎

在前端使用沒有區別

2.容器虛擬化

例如kvm也需要images,有一個完整的OS

而容器所需的images,並非完整的OS,只擁有FS,沒有內核

借助於AUFS技術對映像文件進行分層,容器運行一個獨立的FS上

運行nginx需要nginx依賴的庫,運行mysql需要依賴mysql的庫

把FS做成一個base image,再做幾個專用的image,例如nginx專用的,MySQl專用的

[docker hub]

/

/

[cn1][cn2]...

[API] [docker engine ]

=======================

Hypervisor

=============

Host OS

==============

【硬件】

3.核心組件;

docker client:docker的client工具,用戶使用docker的接口,docker client與docker daemon通信。並將結果返回給client

docker daemon:運行在宿主機,Docker的守護進程,用戶可通過docker client與其交互;

image :只讀的,基於aufs或者UnionFS疊加在一起,用來創建container

一個鏡像可以運行多個container;鏡像文件可以通過Dockerfile創建,也可以從docker hub/registry 下載

repository

公共倉庫 //提供有base image Docuer hub/registry

私有倉庫 //docker repository

docker container:docker的運行實例,容器是一個隔離環境

另外兩個重要組件:

docker link:各docker之間的通信,openvswtich,netns構建,

docker volume:容器中的數據的持久化


二、安裝Docker:

centos6 ;epel

centos7: extra

docker-engine

安裝Docker:

https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/

yum install docker-engine

[[email protected] ~]# rpm -ql docker-engine |egrep -v "share"

/etc/udev/rules.d/80-docker.rules

/usr/bin/docker

/usr/bin/docker-containerd

/usr/bin/docker-containerd-ctr

/usr/bin/docker-containerd-shim

/usr/bin/docker-init

/usr/bin/docker-proxy

/usr/bin/docker-run

/usr/bin/dockerd

/usr/lib/systemd/system/docker.service

docker子命令有很多

systemctl start docker.service

docker images //查看鏡像

docker search centos

Name DESCRIPTION STARS STARS OFFICAL AUTOMATED

自動生成

darksheer/centos //用戶名:鏡像名

docker search busybox

docker pull busybox //拉取官方鏡像 base iamge

tag : lastest //最新版本,默認最新版本

docker pull hub.mt.com:5000/busybox //執行私有倉庫獲取image,必須支持ssl。或者禁止使用tls

docker help run //運行

docker run [OPTIONS] IMAGS [COMMAND] [AEG,...]

//image應該有一個運行起來後,默認運行的命令。

-t --tty=false 分配一個默認的偽終端

-i --interactive=false 打開之後運行在交互式

[[email protected] ~]# docker run -it busybox:latest /bin/sh

docker ps //查看正在運行的 docker

需要借助於外 volume 保存創建的數據。

docker help commit //基於當前容器的所有修改,創建一個新的images

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

三、docker常用命令:

1.環境信息相關

info

version

2.系統維護相關

images

inspect :容器的詳細信息

build:基於dockerfile創建image文件

commit:基於運行中的容器創建映像文件

pause:暫停

unpause

rm

rmi //刪除映像文件

run //基於image運行一個容器

start/stop/restart

top //資源占用情況

ps

kill

...

3.日誌相關

events;

hisgory;

logs;

4.Docker hub 相關

login

logout

pull

push

search

基本操作:

獲取映像:pull

啟動容器:run

-i,-t

docker run -it centos:latest /bin/bash

ifconfig //docker0 一個虛擬接口

一半在虛擬機, 一半在宿主機

docker kill c98dac012556 //kill 掉容器,容器ID

docker ps -a //可以查看所有的

關閉後,默認還是會占用內存,可以在啟動的時候

docker run --rm //退出則,rm自動移除容器

docker rm c98dac012556 //刪除該容器

docker image的創建:

1.基於dockerfile

2.基於運行中的容器修改

//僅僅是打包最上面一層,只有最上面一層是可寫的。

實驗:commit,保存文件

[[email protected] ~]# docker run -it centos:latest /bin/bash

在home中 useradd centos

[[email protected] ~]# docker commit faecb4def9d5 centos:newuser

[[email protected] ~]# docker images

有 newuser

[[email protected] ~]# docker kill faecb4def9d5

[[email protected] ~]# docker rm faecb4def9d5

[[email protected] ~]# docker ps -a

沒有之前的容器了

[[email protected] ~]# docker run -it --rm centos:newuser /bin/bash

rm用於關閉後,就刪除容器

[[email protected] /]# id centos

uid=1000(centos) gid=1000(centos) groups=1000(centos)

[[email protected] /]# exit

[[email protected] ~]# docker ps -a //將沒有容器運行


Docker入門(二)