常用语法

1
2
3
4
5
sudo  service docker status

sudo service docker stop

sudo service docker start

搜索

1
2
docker search Python

拉取

1
2
docker pull python:2.7

查询

镜像 image

1
2
docker images

容器 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
extra_hosts

往容器内/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
docker run -it   xidx  sh
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 \


点击打赏
文章目录
  1. 1. 搜索
  2. 2. 拉取
  3. 3. 查询
    1. 3.1. 日志
    2. 3.2. 容器信息
  4. 4. 运行
    1. 4.1. 进入容器
    2. 4.2. 共享目录
  5. 5. debug
    1. 5.1. 官方
    2. 5.2. 社区方案
  6. 6. 停止
  7. 7. 删除
  8. 8. 迁移
  9. 9. 性能限制
  10. 10. 命令
    1. 10.1. ENTRYPOINT
    2. 10.2. command
  11. 11. 备份加载
    1. 11.1. save/load
  12. 12. 网络
    1. 12.1. 指定dns
    2. 12.2. extra_hosts
  13. 13. GPU
  14. 14. 错误
载入天数...载入时分秒... ,