Docker學習之Docker容器常用操作命令
Ubuntu系統環境介紹介紹
Ubuntu版本:18.04.1
系統配置: 64位
Linux內核:5.3.0-42-generic
Docker版本: 19.03.8
備註:以下操作容器的命令以nginx爲例
- 運行容器:docker run --name 容器名 -i -t -p 主機端口:容器端口 -d -v 主機目錄:容器目錄:ro 鏡像ID或鏡像名:TAG
參數 | 描述 |
---|---|
–name | 指定容器名,可自定義,不指定自動命名 |
-i | 以交互模式運行容器 |
-t | 分配一個僞終端,即命令行,通常-it組合來使用 |
-p | 指定映射端口,講主機端口映射到容器內的端口 |
-d | 後臺運行容器 |
-v | 指定掛載主機目錄到容器目錄,默認爲rw讀寫模式,ro表示只讀 |
acestang@acestang:~$ sudo docker run --name my-nginx -i -t -p 8080:8080 -d nginx:latest
03b527fbbdd032cf6a3c97a3bb73ff98bec4e6aad59b40f26e162c3e7d27876f
- 查看容器列表:docker ps -a -q
參數 | 描述 |
---|---|
ps | 查看正在運行的容器 |
-a | 查看所有容器(運行的和未運行的) |
-q | 只查看容器的ID |
#查看運行中的容器
acestang@acestang:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03b527fbbdd0 nginx:latest "nginx -g 'daemon of…" About a minute ago Up About a minute 80/tcp, 0.0.0.0:8080->8080/tcp my-nginx
#查看所有容器
acestang@acestang:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03b527fbbdd0 nginx:latest "nginx -g 'daemon of…" About a minute ago Up About a minute 80/tcp, 0.0.0.0:8080->8080/tcp my-nginx
1037c2890412 fce289e99eb9 "/hello" About an hour ago Exited (0) About an hour ago great_wilson
# 查看所有容器的容器ID
acestang@acestang:~$ sudo docker ps -a -q
03b527fbbdd0
1037c2890412
- 啓動容器:docker start [容器ID或容器名]
acestang@acestang:~$ sudo docker start my-nginx
my-nginx
acestang@acestang:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03b527fbbdd0 nginx:latest "nginx -g 'daemon of…" 8 minutes ago Up 8 minutes 80/tcp, 0.0.0.0:8080->8080/tcp my-nginx
- 停止容器:docker stop [容器ID或容器名]
acestang@acestang:~$ sudo docker stop my-nginx
my-nginx
# my-nginx容器已經停止
acestang@acestang:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 刪除容器:docker rm -f [容器ID或容器名]
# 可以查看當前包含兩個容器
acestang@acestang:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03b527fbbdd0 nginx:latest "nginx -g 'daemon of…" 10 minutes ago Exited (0) 53 seconds ago my-nginx
1037c2890412 fce289e99eb9 "/hello" About an hour ago Exited (0) About an hour ago great_wilson
#刪除容器ID爲:1037c2890412 的容器
acestang@acestang:~$ sudo docker rm -f 1037c2890412
1037c2890412
# 可以查看容器ID:1037c2890412 的容器已經刪除
acestang@acestang:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03b527fbbdd0 nginx:latest "nginx -g 'daemon of…" 10 minutes ago Exited (0) About a minute ago my-nginx
-
查看日誌:docker logs [容器ID或容器名]
-
進入正在運行的容器:docker exec -it [容器ID或者容器名] /bin/bash
進入正在運行的容器並且開啓交互模式終端
/bin/bash是固有寫法,作用是因爲docker後臺必須運行一個進程,否則容器就會退出,在這裏表示啓動容器後啓動bash。
也可以用docker exec在運行中的容器執行命令
#進入到my-nginx容器
acestang@acestang:~$ sudo docker exec -it my-nginx /bin/bash
#查看nginx 的版本
root@03b527fbbdd0:/# nginx -v
nginx version: nginx/1.17.9
- 退出容器:Ctrl+P+Q
備註: docker run 和 docker start的區別:
docker run:相當於執行了兩步操作,將鏡像放入容器中(docker create),然後將容器啓動,使之變成運行時容器(docker start),docker run 只在第一次運行時使用,將鏡像放到容器中,以後再次啓動這個容器時,只需要使用命令docker start 即可。
docker start:啓動已經存在的容器