client

发布时间: 更新时间: 总字数:1158 阅读时间:3m 作者: 分享 复制网址

Docker 容器 client 使用介绍。

docker images

Docker image 镜像采用联合加载 unit mount,存储位置 /var/lib/docker

docker info

列出镜像

docker images [OPTSIONS] [REPOSITORY]

docker image list --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"
docker image list --format "{{.Repository}}:{{.Tag}}"

镜像的标签和仓库:

  • -a, –all=false

  • -f, –filter=[]

  • –no-trunc=false # 截断唯一iD

  • -q,-quiet=false #

  • REPOSITORY # 仓库,一系列关联镜像的集合

  • REGISTRY # Docker 镜像的存储服务

查看镜像

docker inspect [OPTIONS] container|image [container|image...]

-f, --format=""
docker inspect ubuntu:14.01

删除镜像

docker rmi [OPTIONS] IMAGRE [IMAGE...]
  • -f, –force=false 强力删除镜像
  • –no-prune=false Donot delete untagged parents
docker rmi $(docker images -q ubuntu)

dokcer push/pull

查找镜像

Docker Hub

docker search [OPTIONS] term
--automated=false Only show automated builds
--no-trunc=false Don't truncate output
-s, --stars=0 Only displays with at least x stars
最多返回25个结果

拉取镜像

docker pull [OPTION] NAME [:TAG]
-a, --all-tags=false Download all tagged images in the repository

使用 --registry-mirror 选项

  1. 修改:/etc/default/docker
  2. 添加:DOCKER_OPTS="--registry-mirror=http://mirror.addr"

推送镜像

docker push NAME [:TAG]

docker push xiexianbin/nginx

dokcer run 启动容器

docker run IMAGE [COMMAND] [ARG...]

run 在新容器中执行命令

docker run unbuntu echo "Hello world"
  • Windows 机器执行目录挂载,参考
# Issue in windows: the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

echo "alias docker='winpty docker'" >> ~/.bashrc
docker run -it --rm \
  -w "/go/src/github.com/cosmtrek/hub" \
  -v ${pwd}:/go/src/github.com/cosmtrek/hub \
  -p 8000:8000 \
  cosmtrek/air
  • healthcheck
docker run  -d \
   --name=myweb \
   --health-cmd="curl -fs http://localhost/ || exit 1" \
   --health-interval=5s \
   --health-retries=12 \
   --health-timeout=2s \
   nginx:1.23

启动交互式容器

docker run -i -t IMAGE /bin/bash

-i –interactive=true | false 默认是false -t –tty=true | false 默认是false

查看容器

docker ps [-a] [-l]
docker inspect id/name

自定义容器名

docker run --name=自定义名 -t -i IMAGE /bin/bash
docker run --name=container01 -t -i unbunt /bin/bash
docker ps -l

重新启动停止的容器

docker start [-i] ID/NAME
docker rm ID/NAME

PS:仅能删除停止的容器

什么是守护式容器

  • 能够长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务

以守护形式运行容器

docker run -i -t IMAGE /bin/bash

Ctrl + P Ctrl + Q 组合键退出,不使用exit

重庆进入:

docker attach ID/NAME

docker ps 查看

启动守护式容器

docker run -d IMAGE [COMMAND] [ARG...]
docker run --name dc1 -d unbunt /bin/sh -c "while true; do echo hello world; sleep 1; done"

查看容器日志

docker logs [-f] [-t] [-tail] 容器名
  • -f –follows=true | false 默认为false
  • -t –timestamps=true | false默认为false
  • –tail=“all”
docker logs -tf --tail 10 dc1

查看容器中的进程

docker top dc1

在运行的容器中启动新进程

docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
docker exec -i -t dc1 /bin/bash
docker top dc1
  • 指定root用户登录容器
docker exec -it -u root 容器名 /bin/bash

停止守护式容器

docker stop 容器名 ## 发送终止信号,等待停止
docker kill 容器名 ## 直接kill

使用Docker帮助文件

man docker-run
man docker-logs
man docker-top
man docker-exec

在容器中部署静态网站

设置容器的端口映射

run [-P] [-p]
-P,--publish-all=true|false 默认为false
docker run -P -i -t ubuntu /bin/bash

-p --publish=[]
containerport
  docker run -p 80 -i -t ubuntu /bin/bash # 宿主机端口随机映射

hostPort:containerPort
  docker run -p 8080:8080 -i -t ubuntu /bin/bash # 宿主机端口与容器端口意义映射

ip::containerPort
  docker run -p 0000:80 -i -t ubuntu /bin/bash # 指定容器端口

ip:hostPort:containerPort
 docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash # 指定host ip + 端口和容器端口
docker port 容器名 # 查看端口映射情况
docker exec web nginx
docker top web

PS:停止容器并重新启动是,IP映射会发生变化

启动应用

docker run -p 80 --name web -i -t ubuntu /bin/bash
apt-get install nginx

磁盘使用

docker /var/lib/docker/overlay2 可能会占用很大的空间

  • 查看情况
docker system df
docker system df -v
  • 清理 docker 未使用文件
docker system prune
docker system prune -f -a
docker system prune --force
  • 通过 overlay2 目录 uuid 反查容器:
cd /var/lib/docker/overlay2

# 按空间倒序,top 5
du -s * |sort -nr|head -n 5

# 查找对应的 Docker 容器
docker ps -q | xargs docker inspect --format ' {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep <uuid>
 <uuid>, <pod-name>, /var/lib/docker/overlay2/<uuid>/work

F&Q

docker 推送镜像时报错

file integrity checksum failed for "xxx"
  • 原因分析:删除过该镜像对应依赖镜像的文件,导致新镜像的 checksum 不匹配,因此推送 hub 失败
  • 解决方式:docker rmi 删除基础镜像后,重新获取
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数