docker常见命令

以一个实际需求为例:

使用docker下载nginx,将首页改为自己的页面,发布在docker应用市场

1.检索nginx

首先需要检索有没有该镜像
登录后复制

bash 复制代码
docker search nginx

我当前以普通用户身份运行 Docker 命令,/var/run/docker.sock 文件默认只允许 root 用户或者属于 docker 组的用户访问,因此需要额外的权限。所以以下都是在root权限下进行

结果如下:

可以看到提示超时,因为大陆连接外网的问题,因此,需要对docker配置镜像地址。

注意:

即使配置代理后search还是超时,但pull又正常。

2.安装nginx

登录后复制

bash 复制代码
docker pull nginx

上述命令会默认安装最新版本的nginx,相当于
登录后复制

bash 复制代码
docker pull nginx:latest

如果要安装指定版本,冒号后面跟上版本名称即可,如:
登录后复制

bash 复制代码
docker pull nginx:stable-alpine3.20-perl

3.显示镜像

登录后复制

bash 复制代码
docker images

REPOSITORY对应镜像名,TAG对应版本,IMAGE ID对应其唯一ID

4.删除镜像

登录后复制

bash 复制代码
docker rmi ID/版本

比如删除上述创建的镜像
登录后复制

bash 复制代码
docker rmi 4e1b6bae1e48
# 或者
docker rmi nginx:latest

5.运行容器

docker run用于创建并启动一个新容器,可以理解为给自己的手机安装apk文件,安装好应用后自动启动
登录后复制

bash 复制代码
docker run nginx

上面的命令为启动最新版本的nginx,如果你的机器中没有nginx,会自动下载最新版本的nginx。

此时nginx便被启动了,但此时当前控制台不能随便输入内容,防止中断进程。

想要在当前控制台继续输入内容,而不打断docker运行,需要后台运行docker run -d

而且可以看到生成的容器NAME是随机的,如果想要生成指定名称的容器可以使用docker run --name 容器名称

由于nginx是开放80端口,但docker运行开放的端口与容器内的端口不互通,所以需要通过docker run -p进行指定端口的映射。同时需要注意,docker一个端口是唯一的,多个容器的端口可以相同。

综上,改进后的创建并运行容器的命令如下:
登录后复制

bash 复制代码
docker run -d --name my_container -p 88:80 nginx 

使用后台运行创建一个名称为my_cotainer的nginx的容器。

可以看到就不会在当前控制台输出docker内容了。

同时通过docker ps查看容器状态

可以看到PORTS端口映射与NAMES名称修改均已成功。

访问本地88端口便能显示nginx首页

docker -e表示给环境中添加环境变量。

6.查看正在运行的容器

打开新的控制台,输入
登录后复制

bash 复制代码
docker ps

表示查看所有运行中的容器

可以看到此时nginx在运行
登录后复制

bash 复制代码
docker ps -a

查看所有容器,包括停止运行的容器。

7.停止运行的容器

使用停止与启动,可以通过前面docker ps确定的ID,如nginx对应的ID为2e82bca9ddde,对应命令
登录后复制

bash 复制代码
docker stop 2e8

可以输入全部ID,也可以输入一部分,关键能跟别的区分开即可。

或者通过NAMES来启动,如nginx对应的NAEMES为elastic_vaughan,对应命令就是:
登录后复制

bash 复制代码
docker stop elastic_vaughan
注:

不能这样写:
登录后复制

bash 复制代码
docker stop nginx

这样是找不到的,因为nginx是镜像名。

8.启动容器

docker start用于启动已经停止的容器,可以类比在手机桌面点击软件图标,进入app。

跟停止同理,仅举例NAMES方式启动。
登录后复制

bash 复制代码
docker start elastic_vaughan

9.重启容器

跟启动同理。在容器不管启动还是关闭状态,都可以运行此程序。
登录后复制

bash 复制代码
docker restart elastic_vaughan

10.查看容器状态

登录后复制

bash 复制代码
docker stats elastic_vaughan

可以查看CPU,内存等的占用情况。

11.查看容器日志

登录后复制

bash 复制代码
docker logs elastic_vaughan

查看指定容器的日志。

12.进入容器修改

-it表示以交互模式,bash使用控制台方式
登录后复制

html 复制代码
docker exec -it elastic_vaughan bash

docker内系统纯净,是没有vi或者vim的。

想进入容器修改nginx默认首页内容,可以先安装vim
登录后复制

bash 复制代码
apt-get update
apt-get install vim

通过查询官方文档,发现nginx默认的首页内容文件在: /usr/share/nginx/html/index.html
登录后复制

bash 复制代码
vim /usr/share/nginx/html/index.html

将h1修改为hello world

完成后查看88端口页面,变成了自定义hello world。

13.退出容器

登录后复制

bash 复制代码
exit

14.删除容器

登录后复制

html 复制代码
docker rm elastic_vaughan

删除指定容器,但在删除前,需要先停止容器。

如果想要删除运行中的容器,就通过强制删除。
登录后复制

bash 复制代码
docker rm -f elastic_vaughan

15.提交镜像

将本地创建的容器my_container打包成一个镜像------mynginx:V1.0
登录后复制

bash 复制代码
docker commit my_container mynginx:V1.0

打包成功如上显示。查看镜像,发现已经有自定义镜像。

16.保存镜像成文件

将mynginx:V1.0镜像保存为mynginx.tar压缩文件
登录后复制

bash 复制代码
docker save -o mynginx.tar mynginx:V1.0

17.加载镜像文件

将打包成压缩包的镜像进行加载,会自动安装好该镜像。
登录后复制

bash 复制代码
docker load -i mynginx.tar

在未安装docker环境的机器里也能看到安装好镜像。

想要像之前一样安装镜像,docker run -d --name my_container -p 88:80 mynginx:V1.0

便能看到容器在运行了。

发布到docker社区

由于大陆防火墙问题,可能下面这些命令对于大陆用户是无效的。

18.登录

登录后复制

bash 复制代码
docker login

19.命名

登录后复制

bash 复制代码
docker tag myimage:1.0 myrepo/myimage:latest

这会将本地 myimage:1.0 镜像标记为 myrepo/myimage:latest。

20.推送到仓库

登录后复制

bash 复制代码
docker push myrepo/myimage:1.0

这会将本地的 myrepo/myimage:latest 镜像推送到 Docker Hub。

相关推荐
Aric_Jones36 分钟前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Akiiiira37 分钟前
【日撸 Java 三百行】Day 12(顺序表(二))
java·开发语言
ZHOU_WUYI1 小时前
Flask Docker Demo 项目指南
python·docker·flask
张青贤3 小时前
K8s中的containerPort与port、targetPort、nodePort的关系:
云原生·容器·kubernetes
Chase_Mos5 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
云攀登者-望正茂5 小时前
AKS 支持 Kata Container容器沙盒 -预览阶段
容器·azure
小林学习编程7 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
heart000_17 小时前
IDEA 插件推荐:提升编程效率
java·ide·intellij-idea
ŧ榕树先生8 小时前
查看jdk是否安装并且配置成功?(Android studio安装前的准备)
java·jdk