Docker使用记录_error failed to solve process " bin sh -c apt-ge

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

 sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

主机上的图像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

您必须手动删除任何已编辑的配置文件。

安装
使用 apt 存储库安装

设置存储库
更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

添加 Docker 的官方 GPG 密钥:

 sudo install -m 0755 -d /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 sudo chmod a+r /etc/apt/keyrings/docker.gpg

使用以下命令设置存储库:

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker 引擎
更新apt包索引:

 sudo apt-get update

要安装特定版本的 Docker Engine,首先在存储库中列出可用版本:

apt-cache madison docker-ce | awk '{ print $3 }'

选择所需版本并安装:

 VERSION_STRING=5:24.0.0-1~ubuntu.20.04~focal
 sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

或者直接安装最新版本

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行hello-world映像验证 Docker 引擎安装是否成功

root@qhdata-dev:~# docker -v
Docker version 24.0.2, build cb74dfc

sudo docker run hello-world

在 Ubuntu 上安装 Docker 桌面(非必要)

参考文章:https://docs.docker.com/desktop/install/ubuntu/
先决条件
要成功安装 Docker Desktop,您必须:

  • 满足系统要求
  • 拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。x86_64Docker Desktop 在(或)架构上受支持amd64。
  • 对于非 Gnome 桌面环境,gnome-terminal必须安装:
sudo apt install gnome-terminal

安装 Docker 桌面
1.设置Docker 的包存储库。
2.下载最新的DEB 包。
3.使用 apt 安装软件包,如下所示:

sudo apt-get update
sudo apt-get install ./docker-desktop-<version>-<arch>.deb

安装后脚本:

  • 设置 Docker Desktop 二进制文件的功能以映射特权端口并设置资源限制。
  • 将 Kubernetes 的 DNS 名称添加到/etc/hosts.
  • 创建一个从/usr/bin/docker到/usr/local/bin/com.docker.cli的链接

启动 Docker 桌面

Docker实例

参考文章:https://www.quanxiaoha.com/docker/docker-look-image.html
参考文章:https://cloud.tencent.com/developer/article/1885678
参考文章:https://www.w3cschool.cn/docker/docker-image-usage.html
docker_hub地址:https://hub.docker.com/search?q=
docker构建一个基础镜像大概流程:

#mermaid-svg-xVTnOG64X7kkn2SQ {font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .error-icon{fill:#552222;}#mermaid-svg-xVTnOG64X7kkn2SQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xVTnOG64X7kkn2SQ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-xVTnOG64X7kkn2SQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xVTnOG64X7kkn2SQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xVTnOG64X7kkn2SQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xVTnOG64X7kkn2SQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xVTnOG64X7kkn2SQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xVTnOG64X7kkn2SQ .marker.cross{stroke:#333333;}#mermaid-svg-xVTnOG64X7kkn2SQ svg{font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xVTnOG64X7kkn2SQ .label{font-family:“trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .cluster-label text{fill:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .cluster-label span{color:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .label text,#mermaid-svg-xVTnOG64X7kkn2SQ span{fill:#333;color:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .node rect,#mermaid-svg-xVTnOG64X7kkn2SQ .node circle,#mermaid-svg-xVTnOG64X7kkn2SQ .node ellipse,#mermaid-svg-xVTnOG64X7kkn2SQ .node polygon,#mermaid-svg-xVTnOG64X7kkn2SQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xVTnOG64X7kkn2SQ .node .label{text-align:center;}#mermaid-svg-xVTnOG64X7kkn2SQ .node.clickable{cursor:pointer;}#mermaid-svg-xVTnOG64X7kkn2SQ .arrowheadPath{fill:#333333;}#mermaid-svg-xVTnOG64X7kkn2SQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xVTnOG64X7kkn2SQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xVTnOG64X7kkn2SQ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-xVTnOG64X7kkn2SQ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-xVTnOG64X7kkn2SQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xVTnOG64X7kkn2SQ .cluster text{fill:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ .cluster span{color:#333;}#mermaid-svg-xVTnOG64X7kkn2SQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xVTnOG64X7kkn2SQ :root{–mermaid-font-family:“trebuchet ms”,verdana,arial,sans-serif;}

更新镜像代码

Dockerfile 文件

docker构建基础镜像

创建镜像

导入镜像

使用现有的镜像

更新镜像

创建容器

保存容器成为新的镜像

保存到hub上

保存到本地

构建新的镜像

docker build

使用现有的镜像
查找镜像

可以登陆Docker Hub来查找我们需要的的镜像。
在这里插入图片描述
在这里插入图片描述

拖取镜像

使用命令 docker pull 来下载镜像

root@qhdata-dev:/home/qhdata/docker# docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
ca1778b69356: Pull complete 
Digest: sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
root@qhdata-dev:/home/qhdata/docker# 

列出镜像列表

使用 docker images 来列出本地主机上的镜像。

root@qhdata-dev:/home/qhdata/docker# docker images
REPOSITORY              TAG           IMAGE ID       CREATED         SIZE
hello-world             latest        9c7a54a9a43c   3 weeks ago     13.3kB
ubuntu                  20.04         88bd68917189   6 weeks ago     72.8MB
...
alpine                  latest        e66264b98777   12 months ago   5.53MB
root@qhdata-dev:/home/qhdata/docker# 

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

root@qhdata-dev:/home/qhdata/docker# docker run -t -i ubuntu:20.04 /bin/bash
root@7ec56dec1d8e:/# 

在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit命令来退出这个容器。

root@7ec56dec1d8e:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]   
.....                                                                                                                                                                             
Get:18 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [2748 kB]                                                                                                                                                                                        
Fetched 26.8 MB in 15s (1767 kB/s)                                                                                                                                                                                                                                           
Reading package lists... Done
root@7ec56dec1d8e:/# exit
exit
root@qhdata-dev:/home/qhdata/docker# 

此时ID为7ec56dec1d8e的容器,是按我们的需求更改的容器。我们可以通过命令docker commit来提交容器副本。

root@qhdata-dev:/home/qhdata/docker# docker commit -m="has update" -a="qhdata" 7ec56dec1d8e qhdata/ubuntu:20.04
sha256:dd4c75bc58d43b6ae59f9afc5c528117ac317d936cfd3219fe1ade1e902c3965

各个参数说明:

  • -m:提交的描述信息
  • -a:指定镜像作者
  • 7ec56dec1d8e:容器ID
  • qhdata/ubuntu:20.04:指定要创建的目标镜像名

我们可以使用docker images命令来查看我们的新镜像 qhdata/ubuntu:20.04

root@qhdata-dev:/home/qhdata/docker# docker images
REPOSITORY              TAG           IMAGE ID       CREATED         SIZE
qhdata/ubuntu           20.04         dd4c75bc58d4   2 minutes ago   116MB
hello-world             latest        9c7a54a9a43c   3 weeks ago     13.3kB
ubuntu                  20.04         88bd68917189   6 weeks ago     72.8MB
...
alpine                  latest        e66264b98777   12 months ago   5.53MB
root@qhdata-dev:/home/qhdata/docker# 

导出镜像

参考文章:https://docs.docker.com/engine/reference/commandline/save/

root@qhdata-dev:/home/qhdata/docker# docker save -o qhdata_ubuntu_20_04.tar qhdata/ubuntu:20.04
root@qhdata-dev:/home/qhdata/docker# ls -r
qhdata_ubuntu_20_04.tar
root@qhdata-dev:/home/qhdata/docker# 

参数说明:

  • --output,-o:写入的文件,而不是 STDOUT
删除镜像

参考文章:https://docs.docker.com/engine/reference/commandline/rmi/
参考文章:https://docs.docker.com/engine/reference/commandline/image_rm/

docker rmi [image]
docker rmi [image id]
docker image rm [image]

参数说明:

  • --force , -f:强制删除图像
  • --no-prune:不要删除未标记的父级

eg:

root@qhdata-dev:/home/qhdata/docker# docker rmi qhdata/ubuntu:20.04
Untagged: qhdata/ubuntu:20.04
Deleted: sha256:dd4c75bc58d43b6ae59f9afc5c528117ac317d936cfd3219fe1ade1e902c3965
Deleted: sha256:307a3b9484906a84d1b16735fdb6c967692fd0b065985126f54fbeb16eefdf20

root@qhdata-dev:/home/qhdata/docker# docker images
REPOSITORY              TAG           IMAGE ID       CREATED         SIZE
hello-world             latest        9c7a54a9a43c   3 weeks ago     13.3kB
ubuntu                  20.04         88bd68917189   6 weeks ago     72.8MB
...
alpine                  latest        e66264b98777   12 months ago   5.53MB
root@qhdata-dev:/home/qhdata/docker# 

导入镜像

参考文章:https://docs.docker.com/engine/reference/commandline/load/
参考文章:https://docs.docker.com/engine/reference/commandline/image_load/
从 STDIN 加载图像

docker load < qhdata_ubuntu_20_04.tar
docker image load < qhdata_ubuntu_20_04.tar

从文件加载图像 (–input)

docker load -i qhdata_ubuntu_20_04.tar
docker image load -i qhdata_ubuntu_20_04.tar

参数说明:

  • --input,-i:从 tar 归档文件中读取,而不是从 STDIN 中读取
  • --quiet,-q抑制负载输出

eg:

root@qhdata-dev:/home/qhdata/docker# docker load -i qhdata_ubuntu_20_04.tar
f6ed57753c5f: Loading layer [==================================================>]  43.33MB/43.33MB
Loaded image: qhdata/ubuntu:20.04

root@qhdata-dev:/home/qhdata/docker# docker images
REPOSITORY              TAG           IMAGE ID       CREATED         SIZE
qhdata/ubuntu           20.04         dd4c75bc58d4   2 hours ago     116MB
hello-world             latest        9c7a54a9a43c   3 weeks ago     13.3kB
ubuntu                  20.04         88bd68917189   6 weeks ago     72.8MB
...
alpine                  latest        e66264b98777   12 months ago   5.53MB
root@qhdata-dev:/home/qhdata/docker# 

清理镜像

参考文章:https://docs.docker.com/engine/reference/commandline/image_prune/

root@qhdata-dev:/home/qhdata/docker# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
root@qhdata-dev:/home/qhdata/docker# 

参数说明:

  • --all,-a:删除所有未使用的图像,而不仅仅是悬挂的图像
  • --filter:提供过滤值(例如until=<timestamp>
  • --force,-f:不提示确认

过滤(--filter
过滤标志(–filter)格式为“key=value”。如果有多个过滤器,则传递多个标志(例如,–filter “foo=bar” --filter “bif=baz”)
目前支持的过滤器有:

  • until ( <timestamp>) - 仅删除在给定时间戳之前创建的图像
  • label ( label=<key>, label=<key>=<value>, label!=<key>, or label!=<key>=<value>) - 仅删除带有(或不带,如果label!=...使用)指定标签的图像。
查看容器

docker ps: 查看正在运行中的容器;
docker ps -a: 查看所有容器,包括运行中的、已经停止运行的容器。
docker container ls -a: 查看所有容器,包括运行中的、已经停止运行的容器。

root@qhdata-dev:/home/qhdata/docker# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS       PORTS                                       NAMES
7b651a8dfc5c   registry:latest   "/entrypoint.sh /etc…"   11 months ago   Up 7 hours   0.0.0.0:5001->5000/tcp, :::5001->5000/tcp   registry

root@qhdata-dev:/home/qhdata/docker# docker ps -a
CONTAINER ID   IMAGE                          COMMAND                  CREATED         STATUS                      PORTS                                                                            NAMES
7ec56dec1d8e   ubuntu:20.04                   "/bin/bash"              3 minutes ago   Exited (0) 2 minutes ago                                                                                     unruffled_ganguly
dea79bf486d4   hello-world                    "/hello"                 8 hours ago     Exited (0) 8 hours ago                                                                                       laughing_joliot
a67c7b72196a   owasp/modsecurity-crs:nginx    "/docker-entrypoint.…"   9 months ago    Exited (255) 5 months ago   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   wafdemo-waf-1
d2945582db44   bkimminich/juice-shop:latest   "/nodejs/bin/node /j…"   9 months ago    Exited (255) 5 months ago   0.0.0.0:1003->3000/tcp, :::1003->3000/tcp                                        wafdemo-webapp-1
c7f605ab3ec9   nginx:latest                   "/docker-entrypoint.…"   9 months ago    Exited (255) 5 months ago   0.0.0.0:8081->80/tcp, :::8081->80/tcp                                            nginx-webapp-1
7b651a8dfc5c   registry:latest                "/entrypoint.sh /etc…"   11 months ago   Up 7 hours                  0.0.0.0:5001->5000/tcp, :::5001->5000/tcp                                        registry
root@qhdata-dev:/home/qhdata/docker# 

返回字段说明:

  • CONTAINER ID: 容器 ID;
  • IMAGE: 创建容器时使用的镜像;
  • COMMAND: 容器最后运行的命令;
  • CREATED: 容器创建时间;
  • STATUS: 容器状态;
  • PORTS: 端口信息;
  • NAMES: 容器名:和容器 ID 一样,可以标识容器的唯一性,同一台宿主机上不允许有同名容器存在,否则会冲突;
导出容器

参考文章:https://docs.docker.com/engine/reference/commandline/export/

docker export 7ec56dec1d8e > qhdata_ubuntu_20_04.tar
docker export --output="qhdata_ubuntu_20_04.tar" 7ec56dec1d8e

参数说明:

  • --output , -o:写入的文件,而不是 STDOUT

eg:

root@qhdata-dev:/home/qhdata/docker# docker export --output="qhdata_ubuntu_20_04.tar" 7ec56dec1d8e
root@qhdata-dev:/home/qhdata/docker# ls -r
qhdata_ubuntu_20_04.tar
root@qhdata-dev:/home/qhdata/docker# 

导入容器-以镜像的方式

参考文章:https://docs.docker.com/engine/reference/commandline/import/

// 从远程位置导入
docker import https://example.com/exampleimage.tgz  // 这将创建一个新的未标记图像。
// 从本地文件导入
cat exampleimage.tgz | docker import - exampleimagelocal:new  // 通过管道导入到 docker 和STDIN.
cat exampleimage.tgz | docker import --message "New image imported from tarball" - exampleimagelocal:new  // 使用提交消息导入。
docker import /path/to/exampleimage.tgz  // 从本地存档导入到 docker。
// 从本地目录导入
sudo tar -c . | docker import - exampleimagedir
// 使用新配置从本地目录导入
sudo tar -c . | docker import --change "ENV DEBUG=true" - exampleimagedir

参数说明:

  • --change,-c:将 Dockerfile 指令应用于创建的图像
  • --message,-m:为导入的图像设置提交信息
  • --platform:如果服务器支持多平台,则设置平台

eg:

root@qhdata-dev:/home/qhdata/docker# cat qhdata_ubuntu_20_04.tar | docker import - qhdata/ubuntu:20.04
sha256:db81f58964d10ecf857bbb61777ebe3aa1318eaa71ef3ba58fb15ac87d13aed7

root@qhdata-dev:/home/qhdata/docker# docker images
REPOSITORY              TAG           IMAGE ID       CREATED          SIZE
qhdata/ubuntu           20.04         db81f58964d1   14 seconds ago   116MB
hello-world             latest        9c7a54a9a43c   3 weeks ago      13.3kB
...
alpine                  latest        e66264b98777   12 months ago    5.53MB
root@qhdata-dev:/home/qhdata/docker# 

创建容器

参考文章:https://docs.docker.com/engine/reference/commandline/run/

root@qhdata-dev:/home/qhdata/docker# docker  run -v ./dm7:/dm7 -w /dm7 -i -t qhdata/ubuntu:20.04 /bin/bash
root@1867b8bbbbc8:/dm7# 

root@8b5dd52725e5:/dm7# ls -r
include  drivers  bin
root@8b5dd52725e5:/dm7# 

root@1867b8bbbbc8:/dm7# cd /
root@1867b8bbbbc8:/# ls -r
var  usr  tmp  sys  srv  sbin  run  root  proc  opt  mnt  media  libx32  lib64  lib32  lib  home  etc  dm7  dev  boot  bin
root@1867b8bbbbc8:/# exit

参数说明(部分):

  • --volume,-v:绑定挂载卷,从 Docker 引擎版本 23 开始,您可以在主机上使用相对路径。
  • --workdir,-w:容器内的工作目录
  • --tty,-t:分配伪 TTY
  • --interactive,-i:即使未附加,也要保持 STDIN 打开
  • --env,-e:设置环境变量
  • --platform: 如果服务器支持多平台,则设置平台
  • /bin/bash:在容器中创建交互式shell。
  • /bin/echo:echo后面接需要使用的命令。
重启容器

参考文章:https://docs.docker.com/engine/reference/commandline/restart/
参考文章:https://docs.docker.com/engine/reference/commandline/container_restart/

root@qhdata-dev:/home/qhdata/docker# docker restart 8b5dd52725e5
8b5dd52725e5
root@qhdata-dev:/home/qhdata/docker# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS          PORTS                                       NAMES
8b5dd52725e5   qhdata/ubuntu:20.04   "/bin/bash"              24 hours ago    Up 10 seconds                                               gracious_sanderson
7b651a8dfc5c   registry:latest       "/entrypoint.sh /etc…"   11 months ago   Up 2 days       0.0.0.0:5001->5000/tcp, :::5001->5000/tcp   registry
root@qhdata-dev:/home/qhdata/docker# 

参数说明:

  • --signal,-s: 发送到容器的信号
  • --time,-t: 杀死容器前等待的秒数
进入容器

参考文章:https://docs.docker.com/engine/reference/commandline/exec/

docker exec -it [container ID or NAMES] 
docker exec -it mycontainer sh  // 在容器上执行交互式shell
docker exec -it mycontainer /bin/bash  // 在容器上执行交互式shell
docker exec -it mycontainer pwd  // 在创建容器时运行命令

参数说明:

  • --detach,-d: 分离模式:在后台运行命令
  • --detach-keys: 覆盖用于分离容器的键序列
  • --env,-e: 设置环境变量
  • --env-file: 读入环境变量文件
  • --interactive,-i: 即使未附加,也要保持 STDIN 打开
  • --privileged: 赋予命令扩展权限
  • --tty,-t: 分配伪 TTY
  • --user,-u: 用户名或 UID(格式<name|uid>[:<group|gid>]:)
  • --workdir,-w: 容器内的工作目录

eg:

root@qhdata-dev:/home/qhdata/docker# docker exec -it 8b5dd52725e5 sh
# ls -r
include  drivers  bin
# cd /
# ls -r
var  usr  tmp  sys  srv  sbin  run  root  proc	opt  mnt  media  libx32  lib64	lib32  lib  home  etc  dm7  dev  boot  bin
# exit
root@qhdata-dev:/home/qhdata/docker# 

如果进入一个未启动的容器,会报错误。

root@qhdata-dev:/home/qhdata/docker# docker exec -it 1867b8bbbbc8 sh
Error response from daemon: Container 1867b8bbbbc83c348ea1f898d6cfc6dd7208d36d3b3d926a1abcc8f94eb8fa7b is not running

停止&关闭容器

参考文章:https://docs.docker.com/engine/reference/commandline/stop/
参考文章:https://docs.docker.com/engine/reference/commandline/container_stop/
参考文章:https://docs.docker.com/engine/reference/commandline/kill/
参考文章:https://docs.docker.com/engine/reference/commandline/container_kill/

// 优雅模式
docker container stop [container ID or NAMES]
# 简写模式(可省略关键字 container )
docker stop [container ID or NAMES]
// 强制模式
docker container kill [container ID or NAMES]
# 简写模式(可省略关键字 container )
docker kill [container ID or NAMES]

参数说明:

  • --signal,-s: 发送到容器的信号
  • --time,-t: 杀死容器前等待的秒数

eg:

root@qhdata-dev:/home/qhdata/docker# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS      PORTS                                       NAMES
8b5dd52725e5   qhdata/ubuntu:20.04   "/bin/bash"              3 days ago      Up 2 days                                               gracious_sanderson
7b651a8dfc5c   registry:latest       "/entrypoint.sh /etc…"   11 months ago   Up 5 days   0.0.0.0:5001->5000/tcp, :::5001->5000/tcp   registry
root@qhdata-dev:/home/qhdata/docker# docker container stop 8b5dd52725e5
8b5dd52725e5
root@qhdata-dev:/home/qhdata/docker# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS      PORTS                                       NAMES
7b651a8dfc5c   registry:latest   "/entrypoint.sh /etc…"   11 months ago   Up 5 days   0.0.0.0:5001->5000/tcp, :::5001->5000/tcp   registry
root@qhdata-dev:/home/qhdata/docker# 

删除容器

参考文章:https://docs.docker.com/engine/reference/commandline/rm/
参考文章:https://docs.docker.com/engine/reference/commandline/container_rm/

docker container rm [container ID or NAMES]
# 简写模式(可省略关键字 container )
docker rm [container ID or NAMES]

参数说明:

  • --force,-f: 强制删除正在运行的容器(使用 SIGKILL)
  • --link,-l: 删除指定链接
  • --volumes,-v: 删除与容器关联的匿名卷

eg:

root@qhdata-dev:/home/qhdata/docker# docker rm 8b5dd52725e5
8b5dd52725e5
root@qhdata-dev:/home/qhdata/docker# docker ps -a
CONTAINER ID   IMAGE                          COMMAND                  CREATED         STATUS                      PORTS                                                                            NAMES
1867b8bbbbc8   qhdata/ubuntu:20.04            "/bin/bash"              3 days ago      Exited (0) 3 days ago                                                                                        intelligent_feynman
7ec56dec1d8e   ubuntu:20.04                   "/bin/bash"              4 days ago      Exited (0) 4 days ago                                                                                        unruffled_ganguly
dea79bf486d4   hello-world                    "/hello"                 5 days ago      Exited (0) 5 days ago                                                                                        laughing_joliot
...
7b651a8dfc5c   registry:latest                "/entrypoint.sh /etc…"   11 months ago   Up 5 days                   0.0.0.0:5001->5000/tcp, :::5001->5000/tcp                                        registry
root@qhdata-dev:/home/qhdata/docker# 

Dockerfile

参考文章:https://docs.docker.com/engine/reference/builder/
参考文章:https://www.quanxiaoha.com/docker/dockerfile-build-image.html
Dockerfile的构建

FROM --platform=linux/arm64 python:3.8.10
  
ADD . .

RUN apt-get update -y && \
apt-get install python-dev -y && \
apt-get install gcc* -y

ENV DM_HOME=/dm7 LD_LIBRARY_PATH=/dm7/bin:$LD_LIBRARY_PATH PATH=$PATH:$HOME/bin:/dm7/bin

RUN cd ./dm7/drivers/python/dmPython/ && python setup.py install  # 安装dmPython

RUN cd ./dm7/drivers/python/sqlalchemy1.4.6/ && python setup.py install  # sqlalchemy1.4.6

RUN pip install --upgrade scipy==1.7.3 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade numpy==1.22.4 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade pandas==1.2.4 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade xlwt==0.7.2 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade python_dateutil==2.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade pymysql==0.9.3 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade SQLAlchemy==1.4.18 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade openpyxl==3.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

执行生成

root@qhdata-dev:/home/qhdata/docker# docker build -t dm_base/qhdata .

但是执行失败,报下面的错误。

ERROR: failed to solve: process "/bin/sh -c apt-get update -y" did not complete successfully: exit code: 1

估计是新版问题。我切换回5:20.10.23~3-0~ubuntu-focal就不再提示上述错误。



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/18ec7c56c04944c3ca5a69d83f28f0c4.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/b8b2ce9508922e771b8bf32c38d81198.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

.7.2 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade python_dateutil==2.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade pymysql==0.9.3 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade SQLAlchemy==1.4.18 -i https://pypi.tuna.tsinghua.edu.cn/simple && \
pip install --upgrade openpyxl==3.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

执行生成

root@qhdata-dev:/home/qhdata/docker# docker build -t dm_base/qhdata .

但是执行失败,报下面的错误。

ERROR: failed to solve: process "/bin/sh -c apt-get update -y" did not complete successfully: exit code: 1

估计是新版问题。我切换回5:20.10.23~3-0~ubuntu-focal就不再提示上述错误。



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-8Q9wmj51-1715719431820)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-Iq8ecyxW-1715719431821)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值