docker 最常用命令汇总

目录

    • 报服务名重复解决办法
    • 查看 docker run 启动命令
    • 查看docker 获取容器/镜像的元数据详细
    • docker image 常用命令
    • docker save load 命令
    • 操作容器的相关命令
    • docker run
    • docker容器添加自定义hosts配置
    • docker cp 从容器内部复制文件到宿主机上
    • docker ps 命令
    • docker logs 命令
    • docker rm 命令
    • docker exec 命令
    • docker update命令
    • docker inspect 命令
    • docker 常用命令
    • docker自动化shell脚本
    • 监控分析
    • Docker 常用

报服务名重复解决办法

Docker service endpoint with name xxx already exists.
使用docker部署服务,启动容器时有时会遇到如标题上的这种报错。
意思是这个端口已经被名为xxx的容器占用了。 而执行 docker ps 又找不到这个容器,这种情况,通常是xxx容器没有正常删除导致的。

1.查看容器
docker ps -a

2.删除容器
docker rm -f xxx

3.删除容器占用的端口
docker network disconnect --force 网络模式 容器名称
// docker network disconnect --force bridge xxx

4.删除无用的镜像images
docker image prune -a -f 

5.运行一个临时容器,目的是为了将配置、数据、日志等信息存储到宿主机上,停止会把此容器自动删除
docker run --rm -d --name=temp-ch yandex/clickhouse-server

6.拷贝容器内的文件:
docker cp temp-ch:/etc/clickhouse-server/ /etc/

查看 docker run 启动命令

要查看启动命令的容器id 99fa3b77c1e7
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike 99fa3b77c1e7

查看docker 获取容器/镜像的元数据详细

docker inspect xxxx

docker image 常用命令

Docker中与镜像操作相关的命令都在docker image这条子命令下,通过docker image --help这条命令,可以看到docker image子命令的详细文档,如下:
Usage: docker image COMMAND
Manage images
Commands:

  build       Build an image from a Dockerfile(构建镜像的命令)
  history     Show the history of an image(显示镜像构建历史过程)
  import      Import the contents from a tarball to create a filesystem image(导入一个由容器导出的镜像)
  inspect     Display detailed information on one or more images(显示一个镜像的详细信息)
  load        Load an image from a tar archive or STDIN(从一个文件或标准输入流中导入镜像)
  ls          List images(查看镜像列表)
  prune       Remove unused images(删除虚悬镜像)
  pull        Pull an image or a repository from a registry(从仓库拉取镜像)
  push        Push an image or a repository to a registry(推送镜像到仓库)
  rm          Remove one or more images(删除镜像)
  save        Save one or more images to a tar archive (streamed to STDOUT by default)(保存镜像到文件)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE(给镜像打标签)

docker save load 命令

docker save : 将指定镜像保存成 tar 归档文件。
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

docker load : 导入使用 docker save 命令导出的镜像。
docker load -i my_ubuntu_v3.tar

操作容器的相关命令

Usage: docker container COMMAND
Manage containers
Commands:

  attach      Attach local standard input, output, and error streams to a runnin                                                                                             g container
  commit      Create a new image from a container's changes(把容器保存为镜像)
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container(创建一个新的容器)
  diff        Inspect changes to files or directories on a container's filesyste                                                                                             m
  exec        Run a command in a running container(在一个运行的容器中执行命令)
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers(杀死一个或多个正在运行的容器)
  logs        Fetch the logs of a container
  ls          List containers(显示本地容器列表)
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container(重命名容器)
  restart     Restart one or more containers(重启一个或多个容器)
  rm          Remove one or more containers(删除一个或多个容器)
  run         Run a command in a new container(运行一个新的容器)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers(停止一个或多个容器)
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

docker run


#启动命令
docker run --name springboot-demo1 -p 8080:8080 -t springboot-demo
docker run image_name echo "hello word"

docker run -d --restart=always --log-driver json-file --log-opt max-size=500m --log-opt max-file=2 -v /data0/${name}/logs:/data/logs --name ${name} --net="host"  --ulimit nofile=200000 -v /etc/localtime:/etc/localtime:ro -m 2048M --memory-swap 2304M -e JAVA_OPTS="-server -Xmx1280m -Xss512k -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=256m" registry.api.fzy.com/bop-k8s/${name}:${build_version}

#交互式进入容器中
docker run -i -t image_name /bin/bash

#在容器中安装新的程序
docker run image_name yum install -y app_name
#Note:在执行 yum命令的时候,要带上-y参数。如果不指定-y参数的话,yum命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。yum 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

--oom-kill-disable=true : 禁止容器被oom杀掉,使用该参数要与-m一起使用

docker 限制cpu使用率
限制cpu使用率为50%: --cpu-period=1000000 --cpu-quota=500000

docker 限制cpu使用率

docker容器添加自定义hosts配置

方案一:
--add-host hadoop1:192.168.10.31 --add-host hadoop2:192.168.10.32
docker run -d --name test1 \
    --add-host test1.a:1.2.3.4 \
    local/test
方案二:
docker-compose.yml文件指定
test2:
  build: local/test
  extra_hosts:
    test1.a: 1.2.3.4
    test1.b: 4.3.2.1

docker cp 从容器内部复制文件到宿主机上


#从容器里面拷贝文件/目录到本地一个路径
docker cp Name:/container_path to_path
docker cp ID:/container_path to_path


1、从容器里面拷文件到宿主机?在宿主机里面执行以下命令
docker cp 容器名:要拷贝的文件在容器里面的路径  要拷贝到宿主机的相应路径 

示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js,  现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?

docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

2、从宿主机拷文件到容器里面 在宿主机里面执行如下命令
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢?

docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

#解压到指定目录文件夹下
unzip -d ./plugis/elasticsearch-analysis-ik-6.6.0 elasticsearch-analysis-ik-6.6.0.zip

docker ps 命令

#列出当前所有正在运行的container
docker ps
#列出所有的container 包括已停止的容器
docker ps -a
#列出最近一次启动的container或查询最后一次创建的容器
docker ps -l
#docker 查看停止的容器的日志
docker ps -a
然后 docker inspect 对应的容器id 
找到 LogPath

查看一个正在运行的Docker容器的启动命令
ocker ps -a --no-trunc


docker logs 命令

#从一个容器中取日志
#-f, --follow=false Follow log output; -t, --timestamps=false Show timestamps
docker logs Name/ID

#实时查看运行的容器的日志
#例:实时查看docker容器名为s12的最后100行日志
sudo docker logs -f --tail 100 s12
sudo docker logs -f -t --tail 10 s12

查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2021-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:
docker logs -t --since="2021-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:
docker logs -t --since="2021-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

grep ac8f5e6ab5a19acd SQL-2019-05-13.0.log

#查看linux 内存
free -m 
#查看磁盘剩余空间
df -hl 

docker rm 命令

#删除一个或者多个镜像
#-f, --force=false Force; --no-prune=false Do not delete untagged parents
docker rmi image_name

#删除所有容器
docker rm `docker ps -a -q`
#删除单个容器
#-f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container
docker rm Name/ID

docker exec 命令

#进入docker正在运行的容器环境  需要指定容器的id或name
docker exec -it enrichupgrade /bin/bash
docker exec -it 6d9ae9e18df5 /bin/sh

docker update命令

更新容器的重启策略
docker update --restart=always f361b7d8465
更新容器内存
docker update -m 500M f361b7d8465
更新 CPU 共享数量
docker update --cpu-shares 512 f361b7d8465

docker inspect 命令

查看容器重启次数
docker inspect -f “{{ .RestartCount }}” container-id
查看容器最后一次的启动时间
docker inspect -f “{{ .State.StartedAt }}” container-id

docker 常用命令

#查看docker版本
docker version
#显示docker系统的信息
docker info

#检索image
docker search image_name
#下载image
docker pull image_name
#列出镜像列表
# -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs
docker images

#显示一个镜像的历史
#--no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs
docker history image_name

#保存对容器的修改 本地备份
#-a, --author="" Author; -m, --message="" Commit message
docker commit ID new_image_name
docker commit ${name} ${name}-backup
#Note:image相当于类,container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image。

#停止、启动、杀死一个容器
docker stop Name/ID
docker start Name/ID
docker kill Name/ID

#重启一个正在运行的容器 
#-t, --time=10 Number of seconds to try to stop for before killing the container, Default=10
docker restart Name/ID

#列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
docker diff Name/ID

#显示一个运行的容器里面的进程信息
docker top Name/ID

#附加到一个运行的容器上面
#--no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process
docker attach ID
#Note:attach命令允许你查看或者影响一个运行的容器。你可以在同一时间attach同一个容器。你也可以从一个容器中脱离出来,是从CTRL-C。

#登陆registry server
#-e, --email="" Email; -p, --password="" Password; -u, --username="" Username
docker login
echo "$PASSWORD" | docker login --username foo --password-stdin https://xx.w.com

#根据Dockerfile 构建出一个容器
#build
# --no-cache=false Do not use cache when building the image
# -q, --quiet=false Suppress the verbose output generated by the containers
# --rm=true Remove intermediate containers after a successful build
# -t, --tag="" Repository name (and optionally a tag) to be applied to the resulting image in case of success

docker build -t image_name Dockerfile_path
docker push registry.aifzy.com/bop-k8s/${name}:release

docker自动化shell脚本

创建startup.sh脚本文件

touch startup.sh
#编辑文件
vim startup.sh

复制下面内容到startup.sh

#!/bin/bash
appName=demo1
docker stop $appName
sleep 10s
cd /root/docker
docker build -t $appName .
docker run -d --name=$appName -p 8080:8080 -t $appName
#实时查看docker启动日志
docker logs -f --tail 10 $appName

配置脚本文件可执行权限

#按ESC wq 回车保存文件
#设置文件可执行权限
chmod 755 startup.sh

监控分析

arthas 监控分析:
docker exec -it bop-fms-account-job /bin/sh -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"
dashboard 展示当前进程的信息 ctrl+c可以中断执行

jad --source-only com.wb.bop.fms.account.service.report.impl.AdvertiserdailyServiceImpl 

dump文件分析:
进入docker 容器:
docker exec -it 29198c060396 /bin/sh
jmap -dump:format=b,file=dumpfile.dat pid
docker cp 29198c060396:/logs/d.20170726.txt .

本地ip:  10.23.10.63
打开监听:
nc -l 9000 > dumpfile.bin
服务器:
nc 10.23.10.63 9000 < dumpfile.bin
打开JProfiler工具分析

docker stats

Docker 常用

Docker中容器的备份、恢复和迁移
Docker 常用指令详解
Docker的三大核心组件:镜像,容器与仓库
Docker镜像的制作、上传、拉取和部署
开发者必备Docker命令

你可能感兴趣的:(CI/CD,docker,容器)