Docker 安裝
官方網站上有各種環境下的安裝指南,比如:CentOS、Ubuntu 和 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 --lower_case_table_names=1
-d: 后台運行容器
-p 將容器的端口映射到本機的端口
-v 將主機目錄掛載到容器的目錄
-e 設置參數
注意最后參數是區分大小寫配置,設置為不區分,mysql默認區分。
啟動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