目錄
常用命令
1.鏡像相關命令
(1)查看鏡像
docker images
鏡像內容 | 含義 |
---|---|
REPOSITORY | 鏡像名稱 |
TAG | 鏡像標籤 |
IMAGE ID | 鏡像ID |
CREATED | 鏡像的創建日期(不是獲取該鏡像的日期) |
SIZE | 鏡像大小 |
這些鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下
(2)搜索鏡像
如果你需要從網絡中查找需要的鏡像,可以通過以下命令搜索
docker search 鏡像名稱
內容 | 含義 |
---|---|
NAME | 倉庫名稱 |
DESCRIPTION | 鏡像描述 |
STARS | 用戶評價,反應一個鏡像的受歡迎程度 |
OFFICIAL | 是否官方 |
AUTOMATED | 自動構建,表示該鏡像由Docker Hub自動構建流程創建的 |
(3) 拉取鏡像
拉取鏡像就是從中央倉庫中下載鏡像到本地
docker pull 鏡像名稱
(4)刪除鏡像
按鏡像ID刪除鏡像
docker rmi 鏡像ID
刪除所有鏡像(刪除鏡像需要保證,鏡像中沒有容器,否則需要先刪除容器,再刪除鏡像。)
docker rmi `docker images -q`
2 容器相關命令
(1) 查看容器
查看正在運行的容器
docker ps
查看所有容器
docker ps –a
查看最後一次運行的容器
docker ps –l
查看停止的容器
docker ps -f status=exited
(2)創建與啓動容器
創建容器常用的參數說明:
創建容器命令:
docker run
命 令 | 含義 |
---|---|
-i | 運行容器 |
-t | 容器啓動後會進入其命令行。加入這兩個參數後,容器創建就能登錄進去。即分配一個僞終端 |
–name | 爲創建的容器命名 |
-v | 目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然後共享到容器上 |
-d | 在run後面加上-d參數,則會創建一個守護式容器在後臺運行(這樣創建容器後不會自動登錄容器,如果只加-i -t兩個參數,創建後就會自動進去容器)。 |
-p | 端口映射,前者是宿主機端口,後者是容器內的映射端口。可以使用多個-p做多個端口映射 |
Ⅰ交互式方式創建容器
通過ps命令查看,發現可以看到啓動的容器,狀態爲啓動狀態
docker run -it --name=容器名稱 鏡像名稱:標籤 /bin/bash
退出當前容器
exit
Ⅱ守護式方式創建容器:
docker run -di --name=容器名稱 鏡像名稱:標籤
登錄守護式容器方式:
docker exec -it 容器名稱 (或者容器ID) /bin/bash
交互式創建容器 | 守護式創建容器 |
---|---|
直接進入容器內部,退出之後,容器停止。 | 不會容器內部,exec進入容器內部之後,再退出,容器依然運行狀態。 |
(3)停止與啓動容器
停止容器:
docker stop 容器名稱(或者容器ID)
啓動容器:
docker start 容器名稱(或者容器ID)
(4)文件拷貝
- 無論容器是否啓動,都可以進行文件拷貝。
如果我們需要將文件拷貝到容器內可以使用cp命令
docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄
也可以將文件從容器內拷貝出來
docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄
(5) 目錄掛載
我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。
創建容器 添加-v參數 後邊爲 宿主機目錄:容器目錄
例如:
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
如果你共享的是多級的目錄,可能會出現權限不足的提示。
這是因爲CentOS7中的安全模塊selinux把權限禁掉了,我們需要添加參數 --privileged=true 來解決掛載的目錄沒有權限的問題
(6)查看容器IP地址
我們可以通過以下命令查看容器運行的各種數據
docker inspect 容器名稱(容器ID)
也可以直接執行下面的命令直接輸出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID)
(7)刪除容器
刪除指定的容器:
docker rm 容器名稱(容器ID)
應用部署
1.MySQL部署
(1)拉取mysql鏡像
docker pull centos/mysql-57-centos7
(2)創建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
參數 | 含義 |
---|---|
–name | 自定義的Mysql的名稱 |
-p | 端口映射,格式爲 宿主機映射端口:容器運行端口 |
-e | 添加環境變量 MYSQL_ROOT_PASSWORD 是root用戶的登陸密碼 |
- 輸入docker ps 查看映射的端口號
(3)遠程登錄mysql
連接宿主機的IP ,指定端口爲33306
本地測試連接:
2.tomcat部署
(1)拉取鏡像
docker pull tomcat:7-jre7
(2)創建容器
創建容器 -p表示地址映射
(端口映射+目錄掛載)
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
【測試tomcat部署內容】
-
上傳cas.war文件
-
轉移cas.war文件到剛纔創建的目錄
mv cas.war /usr/local/web
-
瀏覽器輸入 “服務器IP地址:映射的端口號/cas” 即可看到上傳的文件頁面:
3 Nginx部署
(1)拉取鏡像
docker pull nginx
(2)創建Nginx容器
(端口映射)
docker run -di --name=mynginx -p 80:80 nginx
【測試nginx部署的頁面】
[root@localhost ~]# docker exec -it mynginx /bin/bash
root@348ce53d721c:/# dir
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@348ce53d721c:/# cd etc/nginx
root@348ce53d721c:/etc/nginx# dir
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
root@348ce53d721c:/etc/nginx# cd conf.d
root@348ce53d721c:/etc/nginx/conf.d# dir
default.conf
root@348ce53d721c:/etc/nginx/conf.d# cat default.conf
root@348ce53d721c:/etc/nginx/conf.d# cd /usr/share/nginx/html/
root@348ce53d721c:/usr/share/nginx/html# dir
50x.html index.html
root@348ce53d721c:/usr/share/nginx/html# exit
exit
[root@localhost ~]# dir
anaconda-ks.cfg html mynginx.tar dist
[root@localhost ~]# mv dist html
[root@localhost ~]# docker cp html mynginx:/usr/share/nginx
4 Redis部署
(1)拉取鏡像
docker pull redis
(2)創建容器
(端口映射)
docker run -di --name=myredis -p 6379:6379 redis
總結
到這裏Docker常用命令,和常用軟件的部署就結束了。