docker常見使用筆記

Docker

1、簡介

Docker是一個開源的應用容器引擎;是一個輕量級容器技術;

Docker支持將軟件編譯成一個鏡像;然後在鏡像中各種軟件做好配置,將鏡像發佈出去,其他使用者可以直接使用這個鏡像;

運行中的這個鏡像稱爲容器,容器啓動是非常快速的。

![](/images/01.png)

![](/images/02.png)

2、核心概念

docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上);

docker客戶端(Client):連接docker主機進行操作;

docker倉庫(Registry):用來保存各種打包好的軟件鏡像;

docker守護進程(daemon): 一般在宿主主機後臺運行,等待接收來自客戶端的消息。

docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;

docker容器(Container):鏡像啓動後的實例稱爲一個容器;容器是獨立運行的一個或一組應用

![](/images/03.png)

使用Docker的步驟:

1)、安裝Docker

2)、去Docker倉庫找到這個軟件對應的鏡像;

3)、使用Docker運行這個鏡像,這個鏡像就會生成一個Docker容器;

4)、對容器的啓動停止就是對軟件的啓動停止。

3、安裝Docker

1)、安裝linux虛擬機

​   1)、VMWare(教程使用)、VirtualBox;

​    2)、導入虛擬機文件centos7.ova;

​        (1)、首先點擊“打開虛擬機:

![](/images/04.png)

​        (2)、選擇虛擬機文件centos7.ova後點擊“打開”:

![](/images/05.png)

​        (3)、新虛擬機名稱和存儲路徑可以自行修改,點擊“導入”:

![](/images/06.png)

​        (4)、系統可能會跳出錯誤提示,直接點擊“重試,等待導入完成:

![](/images/07.png)

​        (5)、導入成功後,選擇該虛擬機,點擊菜單欄的”編輯“--”虛擬網絡編輯器“:

![](/images/08.png)

​        (6)、選擇VMNET0--橋接模式--選擇當前電腦連接互聯網使用的網卡後點擊”確定“:

![](/images/09.png)

​    3)、雙擊啓動linux虛擬機;使用  root/ 123456登陸

​    4)、查看linux的ip地址

```shell
$ ip addr  /ifconfig
```

​    8)、使用客戶端連接linux(SecureCRT);

​        (1)、輸入主機名(ip地址)用戶名(root)後點擊”連接“:

![1561187488117](/images/10.png)

​        (2)、點擊”接受並保存“:

![1561187619348](D:\course\docker\document\images\11.png)

​        (3)、輸入密碼123456:

![1561187749770](/images/12.png)

2)、在linux虛擬機上安裝docker

Docker從1.13版本之後採用時間線的方式作爲版本號,分爲社區版CE和企業版EE。

社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。

社區版按照stable和edge兩種方式發佈,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。

**安裝步驟:**

​    1、Docker 要求 CentOS 系統的內核版本高於 3.10  。

通過 **uname -r** 命令查看當前的內核版本

```shell
 [root@localhost ~]#uname -r
```

​    

​    2、使用 `root` 權限登錄 Centos。確保 yum 包更新到最新。

```shell
[root@localhost ~]#sudo yum update
```

​    3、卸載舊版本(如果安裝過舊版本的話)

```shell
[root@localhost ~]#sudo yum remove docker  docker-common docker-selinux docker-engine
```

​    4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

```shell
[root@localhost ~]#sudo yum install -y yum-utils device-mapper-persistent-data lvm2
```

​    5、設置yum源

```shell
[root@localhost ~]#sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

這個源是國外網站的,有可能會很慢,可以改成阿里雲提供的鏡像,二者執行一個即可:

[root@localhost ~]#sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```

​    6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

```shell
[root@localhost ~]#yum list docker-ce --showduplicates | sort -r

```

![1561189409185](/images/13.png)

​    7、安裝docker

```shell
[root@localhost ~]#sudo yum install docker-ce  #這裏安裝的是最新穩定版18.09.6
[root@localhost ~]#sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.1.ce

```

​    8、啓動並加入開機啓動

```shell
[root@localhost ~]#sudo systemctl start docker
[root@localhost ~]#sudo systemctl enable docker

```

​    9、驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了)

```shell
[root@localhost ~]#docker version
```

![1561189892227](/images/14.png)

​    10、停止docker

```shell
[root@localhost ~]#sudo systemctl stop docker
```

4、Docker常用命令&操作

1)、鏡像操作

| 操作 | 命令                                            | 說明                                                     |
| ---- | ----------------------------------------------- | -------------------------------------------------------- |
| 檢索 | docker  search 關鍵字  eg:docker  search redis | 我們經常去docker  hub上檢索鏡像的詳細信息,如鏡像的TAG。 |
| 拉取 | docker pull 鏡像名:tag                          | :tag是可選的,tag表示標籤,多爲軟件的版本,默認是latest  |
| 列表 | docker images                                   | 查看所有本地鏡像                                         |
| 刪除 | docker rmi image-id                             | 刪除指定的本地鏡像                                       |

https://hub.docker.com/

2)、容器操作

軟件鏡像(QQ安裝程序)----運行鏡像----產生一個容器(正在運行的軟件,運行的QQ);

步驟:

```shell
    1、搜索鏡像
[root@localhost ~]# docker search tomcat

    2、拉取鏡像
[root@localhost ~]# docker pull tomcat

    3、根據鏡像啓動容器
docker run --name mytomcat -d tomcat:latest

    4、查看運行中的容器
[root@localhost ~]# docker ps  

    5、停止運行中的容器
[root@localhost ~]# docker stop  容器的id

    6、查看所有的容器
[root@localhost ~]# docker ps -a

    7、啓動容器
[root@localhost ~]# docker start 容器id

    8、刪除一個容器
[root@localhost ~]# docker rm 容器id

    9、啓動一個做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat

-d:後臺運行
-p: 將主機的端口映射到容器的一個端口    主機端口:容器內部的端口

    10、爲了演示簡單關閉了linux的防火牆
service firewalld status ;查看防火牆狀態
service firewalld stop:關閉防火牆

    11、查看容器的日誌
docker logs container-name/container-id

更多命令參看
https://docs.docker.com/engine/reference/commandline/docker/
可以參考每一個鏡像的文檔

```

3)、安裝MySQL示例

```shell
docker pull mysql
```

錯誤的啓動

```shell
[root@localhost ~]# docker run --name mysql01 -d mysql
f077e80f0b5463d7680413c91bf11265e3ad2b6e66f932977535057fc517381a

mysql退出了
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
f077e80f0b54        mysql               "docker-entrypoint.sh"   34 seconds ago      Exited (1) 33 seconds ago                            mysql01


//錯誤日誌
[root@localhost ~]# docker logs f077e80f0b54
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;這個三個參數必須指定一個
```

正確的啓動

```shell
[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
4d177d6518a6        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01
```

做了端口映射

```shell
[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b931bbc89831306645910006ef55407d85ead7f0db763778240529f9d3cfc578
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
b931bbc89831        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02
```

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 5677
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章