還在百度Docker命令?推薦一套我用起來特順手的命令!

平時經(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容