网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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
您必须手动删除任何已编辑的配置文件。
安装
- Docker Engine 与Docker Desktop for Linux捆绑在一起 。这是最简单快捷的入门方法。
- 从Docker 的apt存储库设置和安装 Docker 引擎 。
- 手动安装并手动管理升级。
- 使用方便的脚本。仅推荐用于测试和开发环境。
使用 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>
, orlabel!=<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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**