docker分爲docker-ce和docker-ee,docker-ce是社區免費版,docker-ee是企業收費版mysql
一.安裝docker-celinux
傳統安裝方法是:nginx
1.yum update #跟新yumgit
2.yum install -y yum-utils #安裝yum-config-managergithub
3.yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reporedis
4.yum makecachesql
5.yum install docker-cedocker
因爲這裏用的repo是國外的,下載起來是至關的慢,因此我改爲了國內的源,手動建立了簡單repo以下:ubuntu
[root@localhost yum.repos.d]# cat docker.repocentos
[docker]
name=CentOS-7-docker
baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
而後yum makecache; yum install docker-ce,比用國外的源確實快多了
三.啓動docker
有兩種方式均可以啓動docker
1.臨時性的啓動,即不會隨着開機而啓動
dockerd &
2.永久性的啓動,即開機就啓動
systemctl enable docker
systemctl start docker
安裝啓動後,檢查docker:
四. docker命令
docker info 顯示Docker 系統信息,包括鏡像和容器數
docker version 顯示Docker版本信息
鏡像倉庫:
docker pull path/name:tag #path 和tag可選,默認path是docker hub的library,默認tag是latest
參數:
-a:拉取全部tag的鏡像
--disbable-content-trust :略鏡像的校驗,默認開啓
docker login [鏡像倉庫地址] -u user -p password #如未指定鏡像倉庫地址,默認登錄到Docer Hub
docker logout
docker push name:tag
參數:
--disable-content-trust ,默認開啓
參數:
--automated :只列出自動構建的鏡像
--no-trunc :顯示完整的鏡像描述
-s n :列出收藏數大於n次的鏡像
參數:
-a:列出全部的鏡像
-f:列出知足條件的鏡像,例如docker ls -f before=redis:2.1 ;docker ls -f since=redis:2.1
-q:只顯示鏡像ID,例如docker ls -q,docker ls -q redis
--format:指定返回的模板文件
--no-trunc:顯示完整的鏡像信息
參數:
-f :強制刪除
用法:
docker image prune 刪除全部未被容器使用的對象和未被tag標記的對象
docker container prune 刪除全部中止運行的對象
docker volume prune 刪除未被掛載的卷
docker network prune 刪除全部網絡
docker system prune 刪除全部資源
用法:
docker tag ubuntu:16.04 ubuntu:v1 將ubuntu 標記爲ubuntu:v1鏡像
用法:
docker save -o my_image.tar ubuntu:16.04 導出鏡像
docker save ubuntu:16.04 > ubuntu.tar 導出鏡像
docker load < ubuntu.tar 導入鏡像
docker load -i ubuntu.tar 導入鏡像
dcoker export ubuntu:16.04 > ubuntu.tar 導出鏡像
docker import ubuntu.tar ubuntu:v1 導入鏡像
參數:
--build-arg=[] :設置鏡像建立時的變量;
--cpu-shares :設置 cpu 使用權重;
--cpu-period :限制 CPU CFS週期;
--cpu-quota :限制 CPU CFS配額;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的內存 id;
--disable-content-trust :忽略校驗,默認開啓;
-f :指定要使用的Dockerfile路徑;
--force-rm :設置鏡像過程當中刪除中間容器;
--isolation :使用容器隔離技術;
--label=[] :設置鏡像使用的元數據;
-m :設置內存最大值;
--memory-swap :設置Swap的最大值爲內存+swap,"-1"表示不限swap;
--no-cache :建立鏡像的過程不使用緩存;
--pull :嘗試去更新鏡像的新版本;
--quiet, -q :安靜模式,成功後只輸出鏡像 ID;
--rm :設置鏡像成功後刪除中間容器;
--shm-size :設置/dev/shm的大小,默認值是64M;
--ulimit :Ulimit配置。
--tag, -t: 鏡像的名字及標籤,一般 name:tag 或者 name 格式;能夠在一次構建中爲一個鏡像設置多個標籤。
--network: 默認 default。在構建期間設置RUN指令的網絡模式
docker build -t ubuntu:v1 使用當前目錄的Dockerfile建立鏡像
docker build github.com/creack/docker-firefox 使用網絡上的Dockerfile建立鏡像
docker build -f /home/test/Dockerfile 使用指定的Dockerfile
容器:
容器的7種狀態:
created (已建立)
restarting (重啓中)
running (運行中)
removing (遷移中)
paused (暫停)
exited (中止)
dead (死亡)
參數:
-a :顯示全部的容器,包括未運行的
-f:根據條件過濾顯示的內容
--format:指定返回的模板文件
-l:顯示最近建立的容器
-n 5:顯示最近建立的5個容器
-q:只顯示容器編號
-s:顯示總的文件大小
參數:
-f :指定返回的模板文件
-s:顯示總文件大小
--type:爲指定類型返回JSON
有時並不必定要進入容器執行top,並且容器不必定有top命令,這時能夠用docker top來查看容器中正在運行的進程
用法:
docker top 【container】
能夠同時attach 同一個容器來屏幕共享,與screen 命令相似
Ctrl-C能夠detach 容器,爲了不Ctrl-C退出容器時將正在運行的進程也退出了,能夠加上--sig-proxy=false,Ctrl-C的信號直接被docker attach響應
用法:
docker attach 【container】
參數:
-f:根據條件過濾
--since:顯示指定時間後面的事件
--until:顯示到指定的時間爲止
參數:
-f:日誌輸出,例如docker logs -f mynginx
--since:指定時間後的全部日誌
-t:顯示時間戳
--tiai n :列出最新的n條日誌,例如docker logs --since "2016-07-01" --tail=10 mynginx
用法:
docker wait container
用法:
docker port mymysql
=>3306/tcp -> 0.0.0.0:3306
參數:
-a :提交鏡像的做者
-c :使用Dockerfile來建立鏡像
-m:提交時的說明文字
-p: 在commit時將容器暫停
參數:
-L :保持源目標中的連接
用法:
docker cp src_file container:/dst_file
用法:
docker diff container
參數:
-a stdin :指定標準輸入輸出類型,可選STDIN,STDOUT,STDERR
-d:後臺運行
-i:以交互模式運行,一般與-t一塊兒使用,例如docker run -i -t mysql:v1 /bin/bash
-P:隨機端口映射
-p:指定端口映射,主機端口:容器端口
-t:分配一個終端,一般與-i一塊兒使用
--name:爲容器指定一個名稱
--dns:指定容器的dns,默認和主機一致
--dns-search example.com:指定容器DNS搜索域名,默認和主機一致
-h: 指定容器的hostname
-e :設定容器的環境變量
--env-file=[]:從指定文件讀入環境變量
--cpuset="0,1,2,25-27":綁定CPU 的core
-m:設置容器使用最大內存
--net="bridge":指定容器鏈接的網絡類型,可選bridge;host;none;container
--link=[]:添加連接到令一個容器
--expose=[]:開發一個端口或一組端口
--volume,-v:綁定一個卷
參數:
-s:向容器發送一個信號,例如docker kill -s KILL mysql:v1
docker kill 與docker stop區別:
docker kill :強制終止容器運行,相似與斷電重插
docker stop:嘗試讓容器中止運行,相似與reboot
參數:
-f:強制刪除
-l:刪除容器間的網絡鏈接
-v:刪除容器關聯的卷
docker pause/unpasu 暫停/恢復 容器中全部的進程
docker create 建立一個新的容器但不啓動它
docker exec 在運行的容器中執行命令
參數:
-d:在後臺運行
-t:分配一個終端
-i:保持STDIN打開
用法:
docker exec -it mysql:v1 /bin/bash /test/sh
docker exec -it containerID /bin/bash 進入容器
因爲鏡像是分層存儲的,能夠繼承,複用,因此不一樣的鏡像可使用相同的基礎鏡像,因此docker images 列表中的全部像體積總和並不是是所佔的硬盤空間大小