赞
踩
#启动命令 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 执行时同时执行shell命令 docker run centos /bin/sh -c "java -version"
限制cpu使用率为50%: --cpu-period=1000000 --cpu-quota=500000
查看启动命令参数的容器id为 99fa3b77c1e7
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike 99fa3b77c1e7
方案一:
--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 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
从容器内部复制文件到宿主机上
#从容器里面拷贝文件/目录到本地一个路径 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
#列出当前所有正在运行的container
docker ps
#列出所有的container 包括已停止的容器
docker ps -a
#列出最近一次启动的container或查询最后一次创建的容器
docker ps -l
#docker 查看停止的容器的日志
docker ps -a
然后 docker inspect 对应的容器id
找到 LogPath
查看一个正在运行的Docker容器的启动命令
docker ps -a --no-trunc
#从一个容器中取日志 #-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
#删除一个或者多个镜像
#-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正在运行的容器环境 需要指定容器的id或name
docker exec -it enrichupgrade /bin/bash
docker exec -it 6d9ae9e18df5 /bin/sh
更新容器的重启策略
docker update --restart=always f361b7d8465
更新容器内存
docker update -m 500M f361b7d8465
docker update --memory 3000m --memory-swap 4000m f8e1a18e3031
更新 CPU 共享数量
docker update --cpu-shares 512 f361b7d8465
查看docker 获取容器/镜像的元数据详细 docker inspect xxx 查看容器重启次数 docker inspect -f “{{ .RestartCount }}” container-id 查看容器最后一次的启动时间 docker inspect -f “{{ .State.StartedAt }}” container-id #查看docker版本 docker version #显示docker系统的信息 docker info #检索image docker search 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
docker save : 将指定镜像保存成 tar 归档文件。
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
docker load : 导入使用 docker save 命令导出的镜像。
docker load -i my_ubuntu_v3.tar
#保存对容器的修改 本地备份
#-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 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/
#列出一个容器里面被改变的文件或者目录,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
创建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
docker stats 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 system prune -a -f
docker system df
docker system df -v 命令可以进一步查看空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间
运行时加参数
docker run -e TZ="Asia/Shanghai"
挂载时区文件
docker run -v /etc/localtime:/etc/localtime
dockerfile文件
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai'>/etc/timezone
Docker中容器的备份、恢复和迁移
Docker 常用指令详解
Docker的三大核心组件:镜像,容器与仓库
Docker镜像的制作、上传、拉取和部署
开发者必备Docker命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。