1. 程式人生 > 實用技巧 >docker-linux下的部署和基本命令

docker-linux下的部署和基本命令

Docker 安裝

官方網站上有各種環境下的安裝指南,比如:CentOSUbuntu和 Debian 系列的安裝。

而我們現在主要介紹的是基於 CentOS 7.x 上面的安裝。

1、檢視是否已經安裝過docker

[root@shihaibin ~]#yum list installed | grep docker

docker.x86_64 2:1.12.6-55.gitc4618fb.el7.centos @extras
docker-client.x86_64 2:1.12.6-55.gitc4618fb.el7.centos @extras
docker-common.x86_64 2:1.12.6-55.gitc4618fb.el7.centos @extras

2、以上表示已經安裝過,刪除docker

[root@shihaibin ~]#yum remove –y docker.x86_64

[root@shihaibin ~]#yum remove –y docker-client.x86_64

[root@shihaibin ~]#yum remove –y docker-common.x86_64

3、安裝docker(-y 表示靜默安裝,安裝過程不再詢問)

[root@shihaibin ~]#yum install -y docker

4、啟動docker

[root@shihaibin ~]#systemctl start docker.service

5、停止docker

[root@shihaibin ~]#systemctl stop docker

6、檢視當前docker狀態
[root@shihaibin ~]#systemctl status docker

Docker 映象

7、拉取映象

7.1、從 docker hub 拉取

https://hub.docker.com/

下面的例子將從Docker Hub 倉庫下載一個 Tomcat 7 版本的伺服器映象。

[root@shihaibin ~]#docker pull tomcat:7

這是docker預設的公用倉庫,不過缺點是國內下載會比較慢。

7.2、從 163 拉取(建議使用)

在宿主機器編輯檔案:vi /etc/docker/daemon.json

請在該配置檔案中加入(沒有該檔案的話,請先建一個):

{"registry-mirrors": ["http://hub-mirror.c.163.com"]}

最後,需要重啟 docker 服務

[root@shihaibin ~]#systemctl restart docker

之後再使用 pull 命令拉取映象,這時候是從 ustc 獲取映象,而且速度槓槓的。

8、列出映象

docker images

[root@shihaibin ~]#docker images

9、刪除映象

docker rmi 映象

[root@shihaibin ~]#docker rmi tomcat:7

注意:當映象建立的容器存在時,無法刪除映象檔案,需要先刪除依賴該映象的所有容器,再刪除映象。

10、匯入匯出映象

匯出映象:docker save 映象 > /root/xx.tar.gz

匯入映象:docker load < /root/xx.tar.gz

Docker 容器

11、啟動容器

以互動方式啟動容器:docker run -it --name 容器名稱 映象 /bin/bash

[root@shihaibin ~]#docker run -it --name mytomcat tomcat:7 /bin/bash
[root@28cc2a4f8c90 /]#

退出容器

[root@28cc2a4f8c90 /]#exit
exit
[root@shihaibin ~]#

以守護程序方式啟動容器:docker run -d --name 容器名稱 映象

[root@shihaibin ~]#docker run -d --name mytomcat tomcat:7
f9b59aed3c7de509d6c9d9cc14c3d7774fc50f250b70661a4354df948588393b
[root@shihaibin ~]#

12、停止容器

docker stop 容器名稱或者容器ID

[root@shihaibin ~]#docker stop mytomcat

13、重啟容器

docker start 容器名稱或者容器ID

[root@shihaibin ~]#docker start mytomcat

14、刪除容器

刪除指定容器:docker rm 容器名稱或者容器ID

刪除所有容器:docker rm 'docker ps -a -q'

15、檢視容器

docker ps:檢視正在執行的容器

[root@shihaibin ~]#docker ps

docker ps –a:檢視歷史執行過的容器

[root@shihaibin ~]#docker ps –a

>

Docker 應用

16、搭建 Tomcat 服務

docker run -d --name=mytomcat -p 9000:8080 映象

注:-v /usr/local/webapps:/usr/local/tomcat/webapps 共享宿主機目錄與容器目錄。此操作可以去除。通過docker cp命令上次要執行的war包

[root@shihaibin ~]# docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8
e7338892631f6a32513828efdcdf9556b55a154537001557d9780a1f7867ed95

[root@shihaibin ~]#

17、部署 Web 應用

兩種方式:

1、將 war 包上傳到宿主機器,通過 docker cp 命令將宿主機器的 war 包上傳到容器中的 tomcat 的 webapps 目錄下

以互動介面的方式進入容器中

[root@shihaibin ~]#docker exec -it mytomcat /bin/bash
root@020c28055968:/usr/local/tomcat#ls
LICENSE RELEASE-NOTES bin include logs temp work
NOTICE RUNNING.txt conf lib native-jni-lib webapps
root@020c28055968:/usr/local/tomcat#exit
exit
[root@shihaibin ~]#docker cp a.war mytomcat:/usr/local/tomcat/webapps
[root@shihaibin ~]#

2、根據共享目錄直接把程式碼放到共享目錄。例:-v /usr/local/webapps:/usr/local/tomcat/webapps

tomcat 會自動熱部署,直接訪問 Web 應用的路徑即可。

18、安裝mysql

1.安裝mysql5.7 docker映象

拉取官方mysql5.7映象

docker pull mysql:5.7

檢視映象庫

docker images

2.建立mysql容器

在本地建立mysql的對映目錄

mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf

在/root/mysql/conf中建立 *.cnf 檔案(叫什麼都行)

touch my.cnf

建立容器,將資料,日誌,配置檔案對映到本機

docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

-d:後臺執行容器

-p將容器的埠對映到本機的埠

-v將主機目錄掛載到容器的目錄

-e設定引數

啟動mysql容器

docker start mysql

檢視/root/mysql/data目錄是否有資料檔案

使用工具連線測試

19、安裝nginx

1.安裝nginx

[root@shihaibin ~]# docker run -di --name=mynginx -p 80:80 nginx
cc6dc8d9adf896f2e491719a4ec57424f42f27e564e448b3ae42a28587f8aca5

2.部署靜態頁面,使用docker cp 要拷貝的檔案 mynginx:/usr/share/nginx/html

這樣就可以訪問了。

20、安裝redis

1.安裝

[root@shihaibin webapps]# docker run -di --name=myredis -p 6379:6379 redis
46f535d75fedf2e2fcf82a85e2e745c71a6dfee431c703130ec4d9d38b0ee838


21、遷移與備份

21.1容器儲存為映象:

(1).容器儲存為映象

[root@shihaibin local]# docker commit mynginx mynginx_1
sha256:c9d3d9ad7770c77a9e9fbe47d91dbaca6a785efc7801143fc772aadf17560a54

(2).部署映象為容器

[root@shihaibin local]# docker run -di --name=mynginx2 -p 81:80 mynginx_1
a7b9bb12eb831aeedb87adc0bc02da7a962945526e2c4020d8134353fee9968d

(3).訪問容器。裡面包含容器裡的已經配置好的內容

只是埠發生變化。但是容器中之前的配置都被保留了。


21.2映象備份

[root@shihaibin ~]# docker save -o mynginx.tar mynginx_1

21.3映象恢復

[root@shihaibin ~]# docker load -i mynginx.tar