本章將和大家分享Docker中常用的命令。廢話不多說,下麵我們直接進入主題。 1、配置鏡像加速源 拉取鏡像慢,配置載入鏡像地址: 創建一個或修改 /etc/docker/daemon.json 文件(如果不存在則創建): vim /etc/docker/daemon.json 並添加或修改regis ...
本章將和大家分享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}} 容器名
至此本文就全部介紹完了,希望對您有所幫助!