平時(shí)經(jīng)常使用Docker來(lái)搭建各種環(huán)境棚放,簡(jiǎn)單又好用!但是有時(shí)候往往會(huì)忘記命令馅闽,總結(jié)了一套非常實(shí)用的Docker命令飘蚯,對(duì)于Java開(kāi)發(fā)來(lái)說(shuō)基本上夠用了,希望對(duì)大家有所幫助福也!
Docker簡(jiǎn)介
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎局骤,讓開(kāi)發(fā)者可以打包應(yīng)用及依賴(lài)包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機(jī)器上暴凑。使用Docker可以更方便地打包峦甩、測(cè)試以及部署應(yīng)用程序。
Docker環(huán)境安裝
- 安裝yum-utils现喳;
yum install -y yum-utils device-mapper-persistent-data lvm2
- 為yum源添加docker倉(cāng)庫(kù)位置凯傲;
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安裝docker服務(wù);
yum install docker-ce
- 啟動(dòng)docker服務(wù)嗦篱。
systemctl start docker
Docker鏡像常用命令
搜索鏡像
docker search java
下載鏡像
docker pull java:8
查看鏡像版本
由于docker search命令只能查找出是否有該鏡像冰单,不能找到該鏡像支持的版本,所以我們需要通過(guò)Docker Hub來(lái)搜索支持的版本灸促。
進(jìn)入Docker Hub的官網(wǎng)诫欠,地址:https://hub.docker.com
-
然后搜索需要的鏡像:
-
查看鏡像支持的版本:
進(jìn)行鏡像的下載操作:
docker pull nginx:1.17.0
列出鏡像
docker images
刪除鏡像
- 指定名稱(chēng)刪除鏡像:
docker rmi java:8
- 指定名稱(chēng)刪除鏡像(強(qiáng)制):
docker rmi -f java:8
- 刪除所有沒(méi)有引用的鏡像:
docker rmi `docker images | grep none | awk '{print $3}'`
- 強(qiáng)制刪除所有鏡像:
docker rmi -f $(docker images)
打包鏡像
# -t 表示指定鏡像倉(cāng)庫(kù)名稱(chēng)/鏡像名稱(chēng):鏡像標(biāo)簽 .表示使用當(dāng)前目錄下的Dockerfile文件
docker build -t mall/mall-admin:1.0-SNAPSHOT .
Docker容器常用命令
新建并啟動(dòng)容器
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:將宿主機(jī)和容器端口進(jìn)行映射,格式為:宿主機(jī)端口:容器端口浴栽;
- --name:指定容器名稱(chēng)荒叼,之后可以通過(guò)容器名稱(chēng)來(lái)操作容器;
- -e:設(shè)置容器的環(huán)境變量吃度,這里設(shè)置的是時(shí)區(qū)甩挫;
- -v:將宿主機(jī)上的文件掛載到宿主機(jī)上,格式為:宿主機(jī)文件目錄:容器文件目錄椿每;
- -d:表示容器以后臺(tái)方式運(yùn)行伊者。
列出容器 - 列出運(yùn)行中的容器:
docker ps
- 列出所有容器:
docker ps -a
停止容器
注意:$ContainerName
表示容器名稱(chēng)英遭,$ContainerId
表示容器ID,可以使用容器名稱(chēng)的命令亦渗,基本也支持使用容器ID挖诸,比如下面的停止容器命令。
docker stop $ContainerName(or $ContainerId)
例如:
docker stop nginx
#或者
docker stop c5f5d5125587
強(qiáng)制停止容器
docker kill $ContainerName
啟動(dòng)容器
docker start $ContainerName
進(jìn)入容器
- 先查詢(xún)出容器的pid:
docker inspect --format "{{.State.Pid}}" $ContainerName
- 根據(jù)容器的pid進(jìn)入容器:
nsenter --target "$pid" --mount --uts --ipc --net --pid
刪除容器
- 刪除指定容器:
docker rm $ContainerName
- 按名稱(chēng)通配符刪除容器法精,比如刪除以名稱(chēng)mall-開(kāi)頭的容器:
docker rm `docker ps -a | grep mall-* | awk '{print $1}'`
- 強(qiáng)制刪除所有容器多律;
docker rm -f $(docker ps -a -q)
查看容器的日志
- 查看容器產(chǎn)生的全部日志:
docker logs $ContainerName
- 動(dòng)態(tài)查看容器產(chǎn)生的日志:
docker logs -f $ContainerName
查看容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName
修改容器的啟動(dòng)方式
# 將容器啟動(dòng)方式改為always
docker container update --restart=always $ContainerName
同步宿主機(jī)時(shí)間到容器
docker cp /etc/localtime $ContainerName:/etc/
指定容器時(shí)區(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
- 查看所有容器資源占用情況:
docker stats -a
查看容器磁盤(pán)使用情況
docker system df
執(zhí)行容器內(nèi)部命令
docker exec -it $ContainerName /bin/bash
指定賬號(hào)進(jìn)入容器內(nèi)部
# 使用root賬號(hào)進(jìn)入容器內(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"
- 關(guān)閉Docker服務(wù):
systemctl stop docker
- 先將原鏡像目錄移動(dòng)到目標(biāo)目錄:
mv /var/lib/docker /mydata/docker
- 建立軟連接:
ln -s /mydata/docker /var/lib/docker
-
再次查看可以發(fā)現(xiàn)鏡像存放位置已經(jīng)更改帮碰。