平時經(jīng)常使用Docker來搭建各種環(huán)境,簡單又好用!但是有時候往往會忘記命令,總結(jié)了一套非常實用的Docker命令,對于Java開發(fā)來說基本上夠用了,希望對大家有所幫助!
Docker簡介
Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包應(yīng)用及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上。使用Docker可以更方便地打包、測試以及部署應(yīng)用程序。
Docker環(huán)境安裝
- 安裝yum-utils;
yum install -y yum-utils device-mapper-persistent-data lvm2
- 為yum源添加docker倉庫位置;
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安裝docker服務(wù);
yum install docker-ce
- 啟動docker服務(wù)。
systemctl start docker
Docker鏡像常用命令
搜索鏡像
docker search java
image.png
下載鏡像
docker pull java:8
查看鏡像版本
由于docker search命令只能查找出是否有該鏡像,不能找到該鏡像支持的版本,所以我們需要通過Docker Hub來搜索支持的版本。
進入Docker Hub的官網(wǎng),地址:https://hub.docker.com
-
然后搜索需要的鏡像:
image.png -
查看鏡像支持的版本:image.png
進行鏡像的下載操作:
docker pull nginx:1.17.0
列出鏡像
docker images
image.png
刪除鏡像
- 指定名稱刪除鏡像:
docker rmi java:8
- 指定名稱刪除鏡像(強制):
docker rmi -f java:8
- 刪除所有沒有引用的鏡像:
docker rmi `docker images | grep none | awk '{print $3}'`
- 強制刪除所有鏡像:
docker rmi -f $(docker images)
打包鏡像
# -t 表示指定鏡像倉庫名稱/鏡像名稱:鏡像標簽 .表示使用當前目錄下的Dockerfile文件
docker build -t mall/mall-admin:1.0-SNAPSHOT .
Docker容器常用命令
新建并啟動容器
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:1.17.0
- -p:將宿主機和容器端口進行映射,格式為:宿主機端口:容器端口;
- --name:指定容器名稱,之后可以通過容器名稱來操作容器;
- -e:設(shè)置容器的環(huán)境變量,這里設(shè)置的是時區(qū);
- -v:將宿主機上的文件掛載到宿主機上,格式為:宿主機文件目錄:容器文件目錄;
- -d:表示容器以后臺方式運行。
列出容器 - 列出運行中的容器:
docker ps
image
- 列出所有容器:
docker ps -a
image
停止容器
注意:$ContainerName
表示容器名稱,$ContainerId
表示容器ID,可以使用容器名稱的命令,基本也支持使用容器ID,比如下面的停止容器命令。
docker stop $ContainerName(or $ContainerId)
例如:
docker stop nginx
#或者
docker stop c5f5d5125587
強制停止容器
docker kill $ContainerName
啟動容器
docker start $ContainerName
進入容器
- 先查詢出容器的pid:
docker inspect --format "{{.State.Pid}}" $ContainerName
- 根據(jù)容器的pid進入容器:
nsenter --target "$pid" --mount --uts --ipc --net --pid
image.png
刪除容器
- 刪除指定容器:
docker rm $ContainerName
- 按名稱通配符刪除容器,比如刪除以名稱mall-開頭的容器:
docker rm `docker ps -a | grep mall-* | awk '{print $1}'`
- 強制刪除所有容器;
docker rm -f $(docker ps -a -q)
查看容器的日志
- 查看容器產(chǎn)生的全部日志:
docker logs $ContainerName
image.png
- 動態(tài)查看容器產(chǎn)生的日志:
docker logs -f $ContainerName
查看容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName
image
修改容器的啟動方式
# 將容器啟動方式改為always
docker container update --restart=always $ContainerName
同步宿主機時間到容器
docker cp /etc/localtime $ContainerName:/etc/
指定容器時區(qū)
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-d nginx:1.17.0
查看容器資源占用狀況
- 查看指定容器資源占用狀況,比如cpu、內(nèi)存、網(wǎng)絡(luò)、io狀態(tài):
docker stats $ContainerName
image
- 查看所有容器資源占用情況:
docker stats -a
image
查看容器磁盤使用情況
docker system df
image.png
執(zhí)行容器內(nèi)部命令
docker exec -it $ContainerName /bin/bash
image.png
指定賬號進入容器內(nèi)部
# 使用root賬號進入容器內(nèi)部
docker exec -it --user root $ContainerName /bin/bash
查看所有網(wǎng)絡(luò)
docker network ls
[root@local-linux ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
59b309a5c12f bridge bridge local
ef34fe69992b host host local
a65be030c632 none
創(chuàng)建外部網(wǎng)絡(luò)
docker network create -d bridge my-bridge-network
指定容器網(wǎng)絡(luò)
docker run -p 80:80 --name nginx \
--network my-bridge-network \
-d nginx:1.17.0
修改鏡像的存放位置
- 查看Docker鏡像的存放位置:
docker info | grep "Docker Root Dir"
image.png
- 關(guān)閉Docker服務(wù):
systemctl stop docker
- 先將原鏡像目錄移動到目標目錄:
mv /var/lib/docker /mydata/docker
- 建立軟連接:
ln -s /mydata/docker /var/lib/docker
image.png
-
再次查看可以發(fā)現(xiàn)鏡像存放位置已經(jīng)更改。image.png