Docker-Windows常用命令
2020-04-19
參考鏈接:Docker初識
下載安裝
安裝完成后,若需要更改默認鏡像位置,在設置里更改。更改設置中的配置,都需要重啟,很費事。
安裝后,可以運行一下hello-world
這個倉庫,檢查一下是否成功。
docker pull hello-world
docker run hello-world
配置阿里雲鏡像加速
國內訪問Docker的速度慢,有兩種解決方案:配置代理或者使用阿里雲的鏡像。阿里雲的速度更有保證。
在阿里雲的控制台,搜索容器鏡像服務,然后在鏡像中心--鏡像加速器。復制一下我的加速器網址,粘貼到"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"],
即可。
檢查加速器配置是否生效,docker info
,如果從結果中看到了Registry Mirrors: https://xxxx
,說明配置成功。
安裝Ubuntu鏡像
我們從Doker Hub獲取鏡像。
1. docker search
先搜索Ubuntu鏡像。docker search ubuntu
。返回的第一個就是Ubuntu的官方鏡像。
2. docker pull
docker pull [選項] ['Docker Registry'地址 [:端口號] /] 鏡像名 [:標簽]
地址的格式一般是<域名/IP>[:端口號]
。默認地址是 Docker Hub
,但我們已經將其修改為阿里雲的加速器。
docker pull training/webapp
: python
的app
docker pull busybox
:是一個集成了三百多個最常用Linux
命令和工具的軟件,簡化的Linux
系統
docker pull ubuntu
即可將鏡像拉到本地。
3. docker image
使用 docker image ls
查看所有本地鏡像;
刪除鏡像docker image rm xx/xx
即可
查看容器狀態
docker ps
只返回正在運行的容器。
docker ps -a
查看所有容器(運行&沒有運行)
啟動容器
- 基於鏡像(image)新建一個容器並啟動,
- 將在終止狀態(stopped)的容器重新啟動。
方式一:docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND
: 容器啟動后進入容器中要執行的命令.
OPTIONS
(常用選項)
-d
:讓Docker
在后台運行而不是直接把執行命令的結果輸出在當前宿主機下-t
:選項讓Docker
分配一個偽終端(pseudo-tty
)並綁定到容器的標准輸入上-i
:則讓容器的標准輸入保持打開。--name
:為容器命名-v
:創建數據卷,就是主機和docker之間的映射關系。-p
:綁定端口
舉例1:docker run -p 8000:5000 –-name web training/webapp
-p
:綁定本地8000端口,映射到容器的5000端口。也可以綁定多個端口。
新建了一個名為web
,基於training/webapp
鏡像的容器。
在本地瀏覽器中,打開localhost:8000
即可查看輸出。
舉例2:后台運行-d
docker run –d –p 8000:5000 training/webapp
舉例3:交互運行
啟動一個 bash
終端,允許用戶進行交互。
docker run -t -i CONTAINER [CONTAINER...] /bin/bash
比如 docker run -t -i centos /bin/bash
方式二:(1)docker stop
通過 docker ps
可得到CONTAINER ID
,直接使用這個ID即可。
docker stop 10fc
,只用ID的一部分也可以。
(2)docker start
啟動一個停止的容器,和stop
命令一樣,可以使用ID的一部分即可。
注意:這里只能啟動!不能打開交互式bash
(3)docker exec -i -t CONTAINER /bin/bash
打開交互式窗口。針對已經啟動,正在后台運行的容器。這是條很實用的命令。
重啟和刪除
docker restart
重啟容器。
docker rm
刪除容器前,請先關閉容器
查看日志
docker logs [OPTIONS] CONTAINER
options:
--details 顯示更多的信息
-f, --follow 跟蹤實時日志
--since string 顯示自某個timestamp之后的日志,或相對時間,如42m(即42分鍾)
--tail string 從日志末尾顯示多少行日志, 默認是all
-t, --timestamps 顯示時間戳
--until string 顯示自某個timestamp之前的日志,或相對時間,如42m(即42分鍾)
主機和容器間文件互傳
docker cp CONTAINER:/home/user d:/xxx
這是從容器向主機拷貝文件。容器的路徑寫法一定要加上ID。
如果把順序反過來,就是主機向容器拷貝文件。
不僅能拷貝文件,文件夾也可以
數據卷
相當於把主機上的盤掛載到容器上,所以有以下優點:
- 數據卷 可以在容器之間共享和重用
- 對 數據卷 的修改會立馬生效
- 對 數據卷 的更新,不會影響鏡像
- 數據卷 默認會一直存在,即使容器被刪除
- 如果在本機修改代碼,在容器中也能看到。方便將本地主機的代碼運行在容器中。
設置方法如下:
- 在設置中打開
Shared Drives
- 設置本地和容器的掛載目錄。
docker run -v f:/docker:/opt/docker ubuntu
主機掛載點是f:/docker
,容器掛載點是/opt/docker
使用阿里雲的鏡像
我們以配置PHP開發環境為例
下載阿里雲的lamp鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/itsource/centos-lamp:[鏡像版本號]
registry.cn-hangzhou.aliyuns.com/itsource
:Docker Registry地址centos-lamp
:鏡像名- 鏡像版本號就是TAG(標簽)的值
創建lamp容器並運行
docker run -itd -p 80:80 -p 3306:3306 --name lamp --privileged=true -v D:/www/default:/data/wwwroot/default ec258725b54b /usr/sbin/init
-p
分配了兩個端口--privileged=true
讓container內的root擁有真正的root權限ec25...
這是pull
下來的鏡像的ID
制作本地鏡像
docker commit -a "author-name" -m "message" ID Name:版本
docker commit
有些選項:
- -a :提交的鏡像作者;
- -m :提交時的說明文字;
- -p :在commit時,將容器暫停。
導出
docker save ID -o d:/xxx/centos-lamp-v2.tar
加載本地鏡像文件
docker load -i d:/xxx/centos-lamp-v2.tar