一、Docker镜像直接推送到远程服务器

unregistry

  • 是一个轻量级容器镜像注册表,可直接从Docker守护进程的存储中存储或提取镜像。
  • 支持Linux/MacOS使用,目前在Windows中使用需要借助wsl2
1
2
3
4
# 核心命令
docker pussh myapp:latest user@server
docker pussh myapp:latest user@server:2222
docker pussh myapp:latest user@server.example.com

二、一键load文件夹里的所有镜像

  • 方式一
1
2
ls -F /data/package_3th/*.tar | awk '{cmd="docker load -i "$0;print(cmd);system(cmd)}'
# /data/package_3th 为镜像的文件夹
  • 方式二:
1
2
3
4
5
6
7
8
9
10
import os
import sys

if __name__ == "__main__":
workdir = '/data/package_3th'
os.chdir(workdir)
files = os.listdir(workdir)
for filename in files:
print(filename)
os.system('docker load -i %s'%filename)

三、如何找出容器启动命令及参数

方式一:runlike

  • 在runlike传递一个容器名称,就会直接打印出该容器的运行命令。runlike使用起来非常方便,可以直接通过pip安装,也可以通过容器方式免安装使用:
1
2
3
4
5
# pip
$ pip install runlike

# by docker
$ alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"

方式二:get_command_4_run_container

  • 通过容器获取容器的docker run命令/get the docker run by a container
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
39
40
41
42
43
44
45
46
47
48
49
50
# 拉取镜像
docker pull cucker/get_command_4_run_container

# 对于启动命令封装成一个bash命令,后续可以直接使用 get_docker_command [容器名称]/[容器ID]
echo "alias get_docker_command='docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container'" >> ~/.bashrc \
&& \
. ~/.bashrc

# 启动
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container [容器名称]/[容器ID]

# demo示例
[root@automlgpu4 bluewhale_dev]# docker pull cucker/get_command_4_run_container
Using default tag: latest
latest: Pulling from cucker/get_command_4_run_container
8a49fdb3b6a5: Pull complete
0357922e53aa: Pull complete
9676b6d4b964: Pull complete
ddbd03ee1059: Pull complete
877a053836a3: Pull complete
a68de691a1fb: Pull complete
ac3fd788d9e3: Pull complete
51fb85f07a5a: Pull complete
Digest: sha256:d3fba2642b3bd30dc8bd7379b18e889c6ad9d76c138ffe870b47b7fb6b9c9e94
Status: Downloaded newer image for cucker/get_command_4_run_container:latest
docker.io/cucker/get_command_4_run_container:latest
[root@automlgpu4 bluewhale_dev]# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container bluewhale_dev-pg-1
docker run -d \
--name bluewhale_dev-pg-1 \
--cgroupns host \
--env POSTGRES_PASSWORD="xxx" \
--env TZ=Asia/Shanghai \
--env POSTGRES_USER="xxx" \
--hostname pg \
--label com.docker.compose.config-hash=5a31f16dd78cccc6759eba8ae3183d729013898d96a7b364124fec1efcabf280 \
--label com.docker.compose.container-number=1 \
--label com.docker.compose.depends_on="" \
--label com.docker.compose.image=sha256:1149d285a5f5c4340cefa2211869c3a6b1128ac78974545e0b4fe62d3d0e66a8 \
--label com.docker.compose.oneoff=False \
--label com.docker.compose.project=bluewhale_dev \
--label com.docker.compose.project.config_files=/data/bluewhale/bluewhale_dev/docker-compose.yml \
--label com.docker.compose.project.working_dir=/data/bluewhale/bluewhale_dev \
--label com.docker.compose.service=pg \
--label com.docker.compose.version=2.13.0 \
--log-opt max-size=100m \
--network=bluewhale_dev_looklook_net \
-p 5532:5432/tcp \
--stop-signal SIGINT \
-v /data/bluewhale/bluewhale_dev/data/pg:/var/lib/postgresql/data:rw \
postgres:14-alpine

方式三:docker inspect命令

1
docker inspect <container name> 查看

四、whaler-通过镜像导出dockerfile

Whaler

  • Whaler 是一个 Go 程序,旨在将 Docker 镜像逆向到创建它的 Dockerfile 中
1
2
# alias export docker image to dockerfile
$ alias whaler="docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"

本站由 BluesSen 使用 Stellar 1.33.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站总访问量