本章將和大家分享Docker中常用的命令。廢話不多說,下面我們直接進入主題。
1、配置映象加速源
拉取映象慢,配置載入映象地址:
建立一個或修改 /etc/docker/daemon.json 檔案(如果不存在則建立):
vim /etc/docker/daemon.json
並新增或修改registry-mirrors欄位,例如:
{ "registry-mirrors": [ "https://dockerproxy.com", "https://docker.chenby.cn", "https://dockerpull.com", "https://dockerhub.jobcher.com", "https://docker.mirrors.ustc.edu.cn", "https://hub.uuuadc.top", "https://mirror.baidubce.com", "https://mirror.ccs.tencentyun.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://hus-mirror.c.163.com", "https://dockerhub.azk8s.cn", "https://registry.cn-hangzhou.aliyuncs.com" ] }
或者
{ "registry-mirrors": [ "https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu", "https://docker.ckyl.me", "https://docker.awsl9527.cn" ] }
或者
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live" ] }
配置映象加速源:
儲存檔案並退出編輯器。
重新載入配置檔案並重啟Docker服務以使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
驗證配置:
重啟Docker服務後,可以透過執行docker info命令來檢視Docker的配置資訊,確認Registry Mirrors部分是否已包含你設定的映象加速器地址。
注意:映象加速源可能會隨時間而變化。
2、拉取映象
此處以拉取 nginx 映象為例:
docker pull nginx
3、首次啟動映象
docker run -d -p 8090:80 --name nginx-container nginx:latest
示例:
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 5ef79149e0ec 10 days ago 188MB [root@localhost ~]# docker run -d -p 8090:80 --name nginx-container nginx:latest 96a5d9d2505293a05e1d07640f308576856b60147393c0764078f4d3163f8214 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96a5d9d25052 nginx:latest "/docker-entrypoint.…" 19 seconds ago Up 18 seconds 0.0.0.0:8090->80/tcp, :::8090->80/tcp nginx-container [root@localhost ~]#
引數說明:
- -d:這個選項表示以“分離模式”執行容器,即容器在後臺執行。
- -p 8090:80 :這個選項用於對映容器的埠到宿主機的埠。在這個例子中,它將容器內的80埠(Nginx預設的服務埠)對映到宿主機的8090埠。這意味著,當你訪問宿主機的8090埠時,實際上是在訪問容器中Nginx服務的80埠。
- --name nginx-container:這個選項用於指定容器的名稱,這裡是nginx-container。為容器指定一個名稱後,你可以透過該名稱來引用容器,而不是使用容器ID或隨機生成的名稱。
- nginx:latest:這指定了要使用的Docker映象,這裡是Nginx的最新版本(標記為latest)。
- -it:結合使用 -i(互動式操作)和 -t(分配一個偽終端)。通常用於需要互動式會話的容器。
- -p:釋出容器埠到宿主機。格式為 <宿主機埠>:<容器埠> 或 <宿主機埠>:<容器埠>/協議>。注意 -p 後面直接跟埠對映,並不直接指定 IP 地址。IP 地址通常在 --network 引數中透過自定義網路來指定容器的網路配置。
- -v:掛載卷,格式為 <宿主機路徑>:<容器內路徑>:<選項>。<選項> 是可選的,比如 ro 表示只讀。
- --volumes-from:從指定的容器掛載卷。這允許你從另一個容器繼承卷設定。
檢視日誌:
docker logs 96a5d9d25052(容器的ID)
示例:
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96a5d9d25052 nginx:latest "/docker-entrypoint.…" 19 seconds ago Up 18 seconds 0.0.0.0:8090->80/tcp, :::8090->80/tcp nginx-container [root@localhost ~]# docker logs 96a5d9d25052
容器啟動成功後我們透過瀏覽器來訪問一下nginx服務:
可以發現,nginx執行成功了。
4、inspect命令
docker inspect 命令是 Docker 中的一個非常有用的命令,它允許你獲取 Docker 物件的詳細資訊,包括容器(containers)、映象(images)、網路(networks)、卷(volumes)和外掛(plugins)等。當你需要深入瞭解 Docker 物件的配置和狀態時,這個命令就非常有用了。
對於容器(containers),docker inspect 命令可以顯示容器的配置和狀態資訊,如網路設定、環境變數、掛載的卷、啟動命令等。
基本語法:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
- NAME|ID:指定要檢查的 Docker 物件的名稱或ID。你可以指定多個物件,用空格分隔。
- [OPTIONS]:可以使用的選項,但大多數情況下,直接執行 docker inspect 而不帶任何選項就足夠了。
示例:
檢視單個容器的詳細資訊
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96a5d9d25052 nginx:latest "/docker-entrypoint.…" 5 hours ago Up 16 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp nginx-container [root@localhost ~]# docker inspect nginx-container
這裡 nginx-container 是你想要檢視的容器的名稱或ID。
5、啟動已存在容器
docker start <容器 ID/Name>
docker restart 容器id1 [容器id2] [...] #重啟
6、檢視docker容器列表
docker ps #檢視正在執行的容器列表
docker ps –a #所有容器列表(包含存活和退出容器)
7、停止容器
docker stop <容器 ID/Name>
8、進入容器
docker exec -it 容器ID或容器別名稱 /bin/bash
從這個容器退出,不會導致容器的停止,推薦大家使用
9、檢視容器的某些程序PID
doker top name
10、刪除容器
docker stop <container_id_or_name> #刪除前先停止容器 docker rm <container_id_or_name> #刪除容器 docker rm $(docker ps -aq) #一次性刪除所有已經停止的容器
11、檢視映象列表
docker images
12、啟動所有容器
docker start $(docker ps -a -q)
13、修改Docker容器內的檔案
1)使用docker exec命令和文字編輯器
如果你只是想臨時修改容器內的檔案,並且容器內有可用的文字編輯器(如vi、nano等),你可以使用docker exec命令來啟動一個互動式shell會話,並在這個會話中編輯檔案。例如:
docker exec -it <container_id_or_name> bash # 然後,在bash會話中,你可以使用任何可用的編輯器來修改檔案 # 例如:vi /path/to/your/file # 修改完成後,使用:wq退出vi
2)使用docker cp命令
如果你想要從宿主機上直接修改檔案,然後將其複製回容器內,可以使用docker cp命令。首先,從容器中將檔案複製到宿主機:
docker cp <container_id_or_name>:/path/to/container/file /path/to/host/directory
然後,在宿主機上修改檔案,修改完成後,再將檔案複製回容器:
docker cp /path/to/host/directory/file <container_id_or_name>:/path/to/container/file
14、建立容器時指定IP
Docker建立容器時預設採用bridge網路,自動分配ip,不允許自己指定。
在實際部署中,我們需要指定容器ip,不允許其自動分配ip,尤其是搭建叢集時,固定ip是必須的。
我們可以建立自己的bridge網路,例如:mynet,建立容器的時候指定網路為mynet並指定ip即可。
15、檢視網路模式
docker network ls
16、建立一個新的bridge網路
docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 dockercompose
17、檢視網路資訊
docker network inspect dockercompose
18、建立容器並指定容器ip
docker run -it --name nginx-second --network=dockercompose --ip 172.19.0.6 nginx # 驗證是否固定 docker insepect 容器ID | grep "IpAddress" "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "172.19.0.6",
19、檢視資料卷相關資訊
docker inspect -f {{.Volumes}} 容器名
至此本文就全部介紹完了,希望對您有所幫助!