一、安裝docker
1、Docker 要求 CentOS 系統的內核版本高于 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。Docker 官方要求要 CentOS7.0 及以上系統版本
通過 **uname -r **命令查看你當前的內核版本
$ uname -r
2、使用 root
權限登錄 Centos。確保 yum 包更新到最新。
$ yum update
3、卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、設置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有倉庫中所有docker版本,并選擇特定版本安裝
$ yum list docker-ce --showduplicates | sort -r
7、在線機器上安裝docker
$ sudo yum install docker-ce-18.06.1-ce
二、運行docker
啟動停止docker 服務
systemctl start|stop|restart docker
docker -version #查看版本信息
docker info #查看容器運行數量及宿主機信息
1、創建容器
docker create --name test --hostname node01 --mac-address 00:01:02:03:04:05 -it ubuntu /bin/bash
--name 指定一個容器名稱,未指定時,會隨機產生一個名字。
--hostname 設置容器的主機名
--mac-address 設置 MAC 地址
--ulimit 設置 Ulimit 選項
-it 打開偽終端及交互模式
2、運行,停止容器
docker start 容器名或id前幾位不重復的
docker stop |restart 容器名或id前幾位不重復的
3、docker run命令
一般使用docker run命令來創建容器,它實現了創建和運行兩個功能 ,還完成一些其它的操作,例如沒有鏡像時會 pull 鏡像,使用 -it 參數時完成了 attach 操作,使用 --rm 參數在容器退出后還會完成 container rm 操作。
docker run -d --name test --hostname node01 -it ubuntu /bin/bash
docker run 參數:
-i 或 --interactive, 交互模式
-t 或 --tty, 分配一個 pseudo-TTY,即偽終端
--rm 在容器退出后自動移除
-p 如將本機的8080端口映身到容器的80,-p 8080:80
-v 或 --volume, -v /app/main:/app/container
將主機的/app/main映射到容器的/app/container,要掛載多個,加-v xx:yy
-d 守護進程
4、進入終端后退出
進入到分配的終端后,這時如果我們需要退出 bash,可以使用以下兩種方式,它們的效果完全不同:
直接使用 exit 命令,或ctrl+D,這時候 bash 程序終止,容器進入到停止狀態
使用組合鍵退出,容器仍然保持運行的狀態,可以再次連接到這個 bash 中,組合鍵是 ctrl + p 和 ctrl +q。即先同時按下 ctrl 和 p 鍵,再同時按 ctrl 和 q 鍵。就可以退出
使用第二種方式,然后使用 docker ps -a 命令,可以看到該容器仍然處于運行中。
5、查看容器信息
docker ps -a -s #a所有容器包括離線 s 顯示大小
docker logs test 查看容器輸出信息
查看詳細信息
docker inspect 容器名或id(只需前幾位不重復)
6、連接到容器
docker attach test #缺點,多個終端連接時會同時顯示,一個退出,所有退出容器停止。
docker exec -it test /bin/bash #多個連接不會互相影響
7、刪除容器
docker rm test
三、鏡像管理
1、查看鏡像
docker image ls
2、拉取鏡像
docker image pull ubuntu:14.04
3、構建鏡像
commit
此時,對于我們 pull 的新鏡像 ubuntu:14.04 來說,如果我們需要對其進行更新,可以創建一個容器,在容器中進行修改,然后將修改提交到一個新的鏡像中。
使用 run 創建運行一個新命令
$ docker run -it --name test busybox /bin/sh
# 在運行的容器中創建兩個文件,test1 和 test2
touch test1 test2
# 使用 ctrl + p 及 ctrl+q 鍵退出
# 使用提交命令,提交容器 test 的修改到鏡像 busybox:test 中
$ docker commit test busybox:test
# 查看通過提交創建的鏡像
$ docker image ls busybox
4、使用build從dockerfile 構建鏡像
docker 可以從一個 Dockerfile 文件中自動讀取指令構建一個新的鏡像。 Dockerfile 是一個包含用戶構建鏡像命令的文本文件。在 創建該文件后,我們可以使用如下命令構建鏡像:
docker image build [OPTIONS] PATH | URL
構建鏡像時,該過程的第一件事是將 Dockerfile 文件所在目錄下的所有內容遞歸的發送到守護進程。所以在大多數情況下,最好是創建一個新的目錄,在其中保存 Dockerfile,并在其中添加構建 Dockerfile 所需的文件。
對于一個 Dockerfile 文件內容來說,基本語法格式如下所示:
# Comment
INSTRUCTION arguments
使用 # 號作為注釋,指令(INSTRUCTION)不區分大小寫,但是為了可讀性,一般將其大寫。而 Dockerfile 的指令一般包含下面幾個部分:
基礎鏡像:以哪個鏡像為基礎進行制作,使用 FROM 指令來指定基礎鏡像,一個 Dockerfile 必須以 FROM 指令啟動。
維護者信息:可以指定該 Dockerfile 編寫人的姓名及郵箱,使用 MAINTAINER 指令。
鏡像操作命令:對基礎鏡像要進行的改造命令,比如安裝新的軟件,進行哪些特殊配置等,常見的是 RUN 命令。
容器啟動命令:基于該鏡像的容器啟動時需要執行哪些命令,常見的是 CMD 命令或 ENTRYPOINT
例如一個最基本的 Dockerfile:
# 指定基礎鏡像
FROM ubuntu:14.04
# 維護者信息
MAINTAINER shiyanlou/shiyanlou001@simplecloud.cn
# 鏡像操作命令
RUN apt-get -yqq update && apt-get install -yqq apache2
# 容器啟動命令
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
通過閱讀上述內容中我們熟悉的一些 linux 指令,可以很容易的得出該命令創建了一個 apache 的鏡像。包含了最基本的四項信息。
其中 FROM 指定基礎鏡像。RUN 命令默認使用 /bin/sh,并使用 root 權限執行。CMD 命令也是默認在 /bin/sh 中執行,但是只能有一條 CMD 指令,如果有多條則只有最后一條會被執行。
下面我們創建一個空目錄,并在其中編輯 Dockerfile 文件,并基于此構建一個新的鏡像,使用如下操作:
# 首先創建目錄并切換目錄
$ mkdir /home/shiyanlou/test1 && cd /home/shiyanlou/test1
# 編輯 Dockerfile 文件,默認文件名為 `Dockerfile`,
#也可以使用其它值,使用其它值需要在構建時通過 `-f` 參數指定,
#這里我們使用默認值。并在其中添加上述示例的內容
$ vim Dockerfile
# 使用 build 命令,`-t` 參數指定新的鏡像
$ docker image build -t shiyanlou:1.0 .
5、刪除鏡像
docker image rm 鏡像名