1 2 3 4 5 sudo service docker status sudo service docker stop sudo service docker start
搜索
拉取
查询 镜像 image
容器 container
1 2 3 4 docker ps #run container docker ps -a #all container
日志 1 2 3 4 docker logs -f <container or id> ❯ docker logs -f --tail 10 jenkins
-f
或 --follow
选项表示跟随日志输出,即持续显示新的日志条目。
-t
或 --timestamps
选项会在每条日志前添加时间戳,以便于追踪日志的时间顺序。
--tail
参数用于限制返回的日志行数,只显示最新的 N 条日志记录
容器信息 1 2 3 4 5 6 7 docker inspect <id> #查看指定信息 docker inspect <id> --format '{{.Args}}' docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID
运行 创建镜像 当前路径 . 英文点表示
1 2 docker build -t <镜像名> <Dockerfile路径>
修改名字,版本
1 2 docker tag <IMAGE ID> <名称:版本号>
容器安装程序
1 2 3 4 5 6 7 docker run python:3.5.3 pip -V #指定源更新 docker run python:3.5.3 pip -i https://mirrors.aliyun.com/pypi/simple/ numpy docker run <镜像名> apt-get install -y <程序>
-y
交互
1 2 3 4 # tomcat 后台运行 p local port:container port 4452镜像id前4位 docker run -d -p 8080:8080 4452
保存容器
1 2 docker commit <id> <镜像名:版本号>
进入容器 1 2 3 # /bin/bash docker run -i -t python:3.5.3 /bin/bash
共享目录 1 2 docker run -it -v <宿主机绝对路径目录>:<容器目录> <镜像id> /bin/bash
-e
环境变量
1 2 docker run -e "MYSQL_ROOT_PASSWORD=19930221" -it 797e57bb4fea
debug 官方 https://docker.github.net.cn/reference/cli/docker/debug/
Docker Debug 目前处于 Beta 阶段。
Docker 调试需要 Pro、Team 或 Business 订阅 。您必须 登录 才能使用此命令(截止2024-09-09)
社区方案 https://github.com/zeromake/docker-debug/blob/master/README-zh-Hans.md
停止 1 2 docker stop <CONTAINER ID>
删除 要先停止运行容器stop id
1 2 3 4 docker rmi <tag>:<no> #删除版本是 v1.21.12的所有镜像 docker rmi `docker images | grep v1.21.12 | awk '{print $1":"$2}'`
所有镜像
1 #docker rmi $(docker images -q)
所有容器
1 2 3 4 docker rm $(docker ps -a -q) ##删除 Exited 容器 docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
迁移 copy
1 2 #docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH docker cp sonarqube:opt/sonarqube/conf/sonar.properties /mnt/oss/sonarqube/conf
备份
1 2 docker save <镜像名> -o ~/save.tar
还原
1 2 docker load -i ~/docker/save.tar
Ctrl + P + Q 退出容器
性能限制 容器使用状态
1 docker stats containerId
k,b,m,g内存
doc https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources
nginx代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 tinkle-style-dev: restart: always ports: - '18082:8080/tcp' environment: - TZ=Asia/Shanghai - TERM=xterm memswap_limit: 0 labels: aliyun.scale: '1' shm_size: 0 image: >- registry-internal.cn-shenzhen.aliyuncs.com/tinkle/docker-registry:centos7-lite-1.0 memswap_reservation: 0 volumes: - >- /mnt/acs_mnt/nas/21ac64b65d/baopinghui/style-service:/app/0.0.1-SNAPSHOT/style-service/:rw - '/home/data/tmpfile/style-service:/tmp:rw' - /mnt/acs_mnt/nas/21ac64b65d/baopinghui/style-service/tinkle-style.conf:/etc/supervisor.conf.d/tinkle-style.conf:rw kernel_memory: 0 mem_limit: 0
/tinkle-style-dev/docker-compose.yml 不指明container_name
容器名
docker-compose up -d
默认 tinkle-style-dev_tinkle-style-dev_1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 upstream backend { server tinkle-core-dev_tinkle-core-dev_1:8080; } upstream style{ server tinkle-style-dev_tinkle-style-dev_1:8080; } upstream ocr{ server tinkle-ocr-dev_tinkle-ocr-dev_1:8080; } log_format main1 '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' '$upstream_addr $upstream_response_time $request_time '; server { listen 80; server_name api.baopinghui.com; charset utf-8; access_log logs/host.access.log main1; location / { #root html; #index index.html index.htm; if ( $request_uri ~* /fastNeuralStyleController ) { proxy_pass http://style; } if ( $request_uri ~* /(style)/(.*) ){ proxy_pass http://style/$2; } proxy_pass http://backend/; proxy_set_header Host $host; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header From localhost; proxy_cookie_path / /; } }
命令 ENTRYPOINT 1 2 3 4 5 6 7 8 9 10 11 # 基础镜像 FROM openjdk:8-jre # author MAINTAINER cs # 指定路径 WORKDIR /opt # 复制jar文件到路径 COPY ./jar/sentinel-dashboard-1.8.1.jar /opt/sentinel-dashboard-1.8.1.jar # 启动认证服务 ENTRYPOINT ["java","-jar","sentinel-dashboard-1.8.1.jar"]
command 1 2 3 4 5 6 version: '3.8' services: my_service: image: my_image entrypoint: ["java","-jar","sentinel-dashboard-1.8.1.jar"] command: ["--auth.username=123", "--auth.password=123456"]
两者都存在 cmd 作为 entrypoint 的参数;同类型参数,最后一个生效
备份加载 save/load 1 2 3 4 5 docker load -i ./harbor*.tar.gz docker save -o xx.tar.gz xx:v15 docker save myimage:latest | gzip > myimage_latest.tar.gz
网络 指定dns 创建一个自定义网络,并指定了一个自定义的DNS服务器 地址为172.28.5.253。我们还创建了两个服务:nginx和php,将它们都加入到该网络 中,并指定了它们的IP 地址分别为172.28.5.2和172.28.5.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 networks: my_network: driver: bridge ipam: driver: default config: - subnet: 172.28.0.0/16 gateway: 172.28.5.254 dns: 172.28.5.253 services: nginx: image: nginx:latest networks: my_network: ipv4_address: 172.28.5.2 php: image: php:latest networks: my_network: ipv4_address: 172.28.5.3
往容器内/etc/hosts文件中添加记录
1 2 3 4 5 6 7 version: '3' services: runner: image: 'gitlab/gitlab-runner:v16.9.0' restart: unless-stopped extra_hosts: #image同级 - "gitlab.ui.k8s.cn:192.168.122.1" # 添加主机名
GPU nvidia驱动安装
1 2 ❯ docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama ❯ docker exec -it ollama
错误 No command
specified
1 docker run -it xidx /bin/bash -c "ls"
OCI runtime create failed: container_linux.go:344: starting container process caused “exec: "/bin/bash": stat /bin/bash: no such file or directory
“: unknown.
1 2 3 4 5 gitlab-runner register --url https://gitlab.ui.k8s.cn:18443 \ --token glrt-sxEp2iazjXgPkXNCKMA7 \ --tls-ca-file=/home/gitlab-runner/gitlab.ui.k8s.cn.crt \
点击打赏
会心一笑
<
singleton单例模式
sed替换查找
>