## <blockquote class="danger"><p>Docker命令【參考菜鳥教程:https://www.runoob.com/docker/docker-build-command.html】</p></blockquote>
## 通用命令:
Windows命令:
停止docker:``` Net stop com.docker.service ```
啟動docker:``` Net start com.docker.service ```
Linux命令:
停止docker:``` systemctl start docker ```
啟動docker:``` systemctl stop docker ```
重啟docker:``` systemctl restart docker ```
docker設置隨服務啟動而自啟動:``` systemctl enable docker ```
查看docker 運行狀態:``` systemctl status docker ```
查看docker 版本號:``` docker version ```
查看docker 版本號:``` docker info ```
忘記某些命令時,進行查看與回顧:``` docker --help ```
如果忘記了 run命令 不知道可以帶哪些參數 可以這樣使用:``` docker run --help ```
## 鏡像相關命令:
1. 刪除鏡像:``` docker pull 鏡像 ```
2. 刪除鏡像:``` docker rmi 鏡像名(鏡像ID)```
3. 提交鏡像:``` docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的鏡像名:Tag```
4. 將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫:```
docker push [OPTIONS] NAME[:TAG] ```
5. 刪除多個鏡像,用空格隔開即可:```
docker rmi -f 鏡像名/鏡像ID 鏡像名/鏡像ID 鏡像名/鏡像ID ```
6. 刪除全部鏡像 -a 意思為顯示全部, -q 意思為只顯示ID:```
docker rmi -f $(docker images -aq) ```
7. 強制刪除鏡像:```
docker image rm 鏡像名稱/鏡像ID```
8. 強制刪除全部鏡像:```
docker rmi -f $(docker images -aq) --force```
9. 構建鏡像(需要在Dockerfile同級目錄下構建:說明(-t:設置 鏡像的名字及tag)(最后的. 為當前目錄)):```
docker build -t cat:1.0 .```
10. 強制刪除鏡像:```docker rmi 鏡像名(鏡像ID) --force```
## 容器相關命令:
1. 只看到正在運行的容器:``` docker ps ```
2. 查看所有容器:``` docker ps -a ```
3. 刪除容器命令:【先停止容器:docker stop 容器名】
4. 刪除全部容器命令:``` docker rm `docker ps -a -q` ```
5. 刪除全部容器命令:``` docker rm `docker ps -a -q` ```
6. 強制刪除全部容器命令:```docker rm `docker ps -a -q` --force```
7. 進入容器命令:
1:進入mysql命令: docker exec -it mysql(容器名或ID) /bin/bash
2:進入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash【windows 使用git bash框輸入時:winpty docker exec -it 容器名(容器ID) bash】
3:進入php命令: docker exec -it php(容器名或ID) /bin/bash
4:進入redis命令: docker exec -it redis(容器名或ID) /bin/bash
5:進入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash
6:進入nginx后,不知道nginx配置文件位置: whereis nginx
7. 停止且刪除指定容器命令:docker stop (容器名或ID) && docker rm (容器名或ID) (可直接刪除: docker rm -f (容器名或ID))
8. 啟動|關閉|重啟容器:docker start|stop|restart 容器ID
9. 運行容器:docker run -it -d --name 要取的別名 鏡像名:Tag /bin/bash
10. 退出容器:exit
## 容器日志相關命令:
1. 查詢容器日志:``` docker logs (容器Name或CONTAINER ID) ```
2. 查詢指定日志前多少條:``` docker logs 容器ID --tail=10 ```
## 其他相關命令:
1. 查詢鏡像版本:``` docker search(容器Name或CONTAINER ID) ```
2. 安裝vim命令:``` apt-get update && apt-get install vim -y ```
3. 防火墻命令:
1.檢驗防火墻是否啟動:firewall-cmd --state
2. 檢查端口是否啟動:firewall-cmd --permanent --zone=public --list-ports
3.開啟 8080 端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
4.重新啟動防火墻:firewall-cmd --reload
5.永久關閉防火墻:systemctl stop firewalld && systemctl disable firewalld
4. 查看Docker磁盤使用情況:docker system df
5. 刪除名稱或標簽為none的鏡像:docker rmi -f `docker images | grep '' | awk '{print $3}'`
6. 清除所有無容器使用的鏡像 (只要是鏡像無容器使用(容器正常運行)都會被刪除,包括容器臨時停止):docker system prune -a
7. 查找大文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
8. 查找指定docker使用目錄下大于指定大小文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/\*'
9.docker-compose相關命令:
docker-compose -h # 查看幫助
docker-compose version # 查看docker-compose是否安裝成功(docker-compose版本)
docker-compose ls # 查看正在運行的項目
docker-compose ls -a # 查看正在運行的項目,同時顯示已停止的項目
docker-compose logs redis #查看 Compose 日志
docker compose images #列出創建的容器使用的圖像
docker compose create # 為服務創建容器
docker-compose down # 停止并刪除容器、網絡
docker compose pause # 暫停服務
docker-compose -f docker-compose.yml up -d # -f 指定使用的Compose模板文件,默認為docker-compose.yml,可以多次指定
docker-compose up # 啟動所有docker-compose服務
docker-compose up -d # 啟動所有docker-compose服務并后臺運行
docker-compose down # 停止并刪除容器、網絡、卷、鏡像
docker-compose exec yml里面的服務id # 進入容器實例內部yml文件中寫的服務id /bin/bash
docker-compose ps # 展示當前docker-compose編排過的運行的所有容器
docker-compose top # 展示當前docker-compose編排過的容器進程
docker-compose logs yml里面的服務id # 查看容器輸出日志
docker-compose config # 檢查配置
docker-compose config -q # 檢查配置,有問題才有輸出
docker-compose restart # 重啟服務
docker-compose start # 啟動服務
docker-compose stop # 停止服務
docker-compose down && docker-compose up -d # 更新docker鏡像及容器
docker-compose restart nginx(服務名) # 服務名稱,注意不是docker-compose里面的別名
docker-compose restart php(服務名) # 服務名稱,注意不是docker-compose里面的別名
### <blockquote class="danger"><p>記住兩個路徑</p></blockquote>
1:進入容器后,查詢nginx配置成功的歡迎html頁面路徑:cd /usr/share/nginx/html 下面有index.html(nginx歡迎界面),注意:此/usr/share/nginx下的除html目錄外,一旦容器刪除,就會全部刪除其他目錄
2:查詢nginx主或子配置文件:vim /etc/nginx/nginx.conf(主配置文件) 或 cd /etc/nginx/conf.d(子配置文件)
### <blockquote class="danger"><p>注意事項</p></blockquote>
1:每次創建nginx容器后,檢查STATUS(Up)是否開啟:docker ps -a ,沒有問題,啟動容器:docker restart 容器ID
2:如果打開網站(域名),無法正常訪問:使用命令:docker logs 容器ID(注意查詢指定日志前多少條:docker logs 容器ID --tail=10),查詢具體問題,解決
3:啟動容器前,進入nginx內部容器中,使用nginx -t 命令檢查是否出現報錯問題,如果正常:可以啟動容器(退出容器后執行),如果錯誤,先處理nginx報錯問題,然后再啟動容器
4:容器組成:鏡像名稱:鏡像標簽
5:解析:由于 docker 的運行模式是 C/S。我們本機是 C,docker 引擎是 S
6:使用下面的語句啟動了另外一個nginx服務:docker run --name test -p:80:80 -d nginx ,如果顯示Nginx標識,代表Nginx配置OK
7:說明
FROM
基礎鏡像,當前新鏡像是基于哪個鏡像的,指定一個已經存在的鏡像作為模板,第一條必須是from
MAINTAINER
鏡像維護者的姓名和郵箱地址
RUN
容器構建時需要運行的命令
兩種格式
shell格式(1)
RUN yum -y install vim
exec格式(2)
["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注意:RUN 是在 docker build時運行
EXPOSE
當前容器對外暴露出的端口
WORKDIR
指定在創建容器后,終端默認登陸的進來工作目錄,一個落腳點
USER
指定該鏡像以什么樣的用戶去執行,如果都不指定,默認是root
ENV
用來在構建鏡像過程中設置環境變量
ENV MY_PATH /usr/mytest
這個環境變量可以在后續的任何RUN指令中使用,這就如同在命令前面指定了環境變量前綴一樣;
也可以在其它指令中直接使用這些環境變量,
比如:WORKDIR $MY_PATH
ADD
將宿主機目錄下的文件拷貝進鏡像且會自動處理URL和解壓tar壓縮包
COPY
類似ADD,拷貝文件和目錄到鏡像中。
將從構建上下文目錄中 <源路徑> 的文件/目錄復制到新的一層的鏡像內的 <目標路徑> 位置
COPY src dest
COPY ["src", "dest"]
<src源路徑>:源文件或者源目錄
<dest目標路徑>:容器內的指定路徑,該路徑不用事先建好,路徑不存在的話,會自動創建。
VOLUME
容器數據卷,用于數據保存和持久化工作
CMD
指定容器啟動后的要干的事情
注意:Dockerfile 中可以有多個 CMD 指令,
但只有最后一個生效,CMD 會被 docker run 之后的參數替換
### <blockquote class="danger"><p>創建容器</p></blockquote>
1. 創建容器:
創建php容器:7.4
docker pull php:7.4-fpm
docker run --name myPhpDocker -p 2000:9000 -d -v /D/Docker/wwwroot:/wwwroot php:7.4-fpm【使用中】
1. 創建nginx容器:
docker pull nginx:latest
docker run --name myNginxDocker -p 3000:80 -d -v /D/Docker/wwwroot:/wwwroot -v /D/Docker/lnmp/nginx/conf:/etc/nginx/conf.d -v /D/Docker/lnmp/nginx/logs:/var/log/nginx --link myPhpDocker:php nginx【使用中】
1. 創建mysql容器:5.7.16-ucloudrel1-log
docker pull mysql:5.7.16
docker run --name myMysqlDocker -p 4000:3306 -d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.16【使用中】
1. 創建redis容器:7.0
docker pull redis:7.0
docker run --name myRedisDocker -p 5000:6379 -d -v /D/Docker/lnmp/redis/redis.conf:/etc/redis/redis.conf --restart=always redis:7.0 redis-server --appendonly yes --requirepass "redis_123456"
1. 創建mongoDb容器:
docker pull mongo:4.4.6
docker run --name myMongoDocker -p 6000:27017 -d -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:4.4.6
<span style="color:red">進入mongoDb容器命令:
docker exec -it myMongoDocker mongo admin</span>
- Docker容器化部署使用說明書
- 環境部署
- Windows系統
- Windows部署Docker
- 安裝過程可能碰到的問題總結
- Docker部署環境
- Docker hub操作
- Docker 部署 laravel5.5問題總結
- Docker處理中文亂碼問題
- Linux系統
- Centos7.2部署Docker
- Linux部署Docker準備前工作
- 部署docker問題總結
- Linux部署Docker粗略筆記
- 安裝git
- Docker命令大全
- 問題
- php7.4 安裝xlswriter擴展
- php7.2 DockerFile文件
- dockerFile和docker-composer區別
- docker-compose的使用
- docker-compose的使用問題總結
- docker-compose
- Windows系統
- docker-compose.yml編寫
- nginx目錄如下
- conf.d
- default.conf
- nginx.conf
- php目錄如下
- Dockerfile
- redis目錄如下
- redis.conf
- docker-compose使用說明
- Linux系統
- /workspace/html/config_dev
- html
- index.html
- index.php
- nginx
- conf
- nginx.production.conf
- conf.d
- default.conf
- log
- access.log
- error.log
- Dockerfile
- php
- conf
- php.production.ini
- php-fpm.conf
- log(目錄)
- php-fpm.d
- www.conf
- supervisor
- conf
- log
- Dockerfile
- .env
- docker-compose.yml