3. Docker 基础 - 常见命令

2025-08-28  本文已影响0人  右耳菌

https://docs.docker.com


1. Docker 镜像操作

Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。

1. 获取镜像

docker pull [选项][Docker Registry 地址[:端口号]/]仓库名[:标签]
sudo docker pull ubuntu:16.04

2. 运行镜像

sudo docker run -it --rm ubuntu:16.04 bash

3. docker常用的命令

docker image ls
# 或者下面也是一样的
docker images
docker system df
docker image ls -f dangling=true
docker image prune

4. 删除本地镜像

docker image rm [选项]<镜像1>[<镜像2>...]

其中,<镜像>可以是 镜像短ID、镜像长 ID、镜像名 或者 镜像摘要。

docker image rm $(docker image ls -q ubuntu) #删除所有仓库名为 ubuntu 的镜像
docker image rm $(docker image ls -q -f before=ubuntu:16.04)

5. 保存和加载镜像信息

docker save -o xxxx.tar xxxxx:tag # 这里可以输入多个镜像
docker load -i xxxx.tar

2. Docker容器操作

容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。

1. 启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。因为 Docker的容器实是轻量级的,用户可以随时删除和新创建容器。

docker run

输出一个“Hello World”,之后终止容器。

docker run ubuntu:16.04 /bin/echo 'Hello world'

执行情况

root@necde-VirtualBox:~# docker run ubuntu:16.04 /bin/echo 'Hello World'
Unable to find image 'ubuntu:16.04' locally
16.04: Pulling from library/ubuntu
58690f9b18fc: Pull complete 
b51569e7c507: Pull complete 
da8ef40b9eca: Pull complete 
fb15d46c38dc: Pull complete 
Digest: sha256:1f1a2d56de1d604801a9671f301190704c25d604a416f59e03c04f5c6ffee0d6
Status: Downloaded newer image for ubuntu:16.04
Hello World
docker container start 或者 docker start

启动一个bash终端,允许用户进行交互

docker run -t -i ubuntu:16.04 /bin/bash

-t让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
当利用 docker run 来创建容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

2. 后台运行

很多时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加-d参数来实现。

例子:

root@necde-VirtualBox:~# docker run -d hello-world
bd386a192cb155b6aef39abbfae975678b9b7285fb1121d8b5734a458bba4d80
root@necde-VirtualBox:~# docker logs bd386a192cb155b6aef39abbfae975678b9b7285fb1121d8b5734a458bba4d80

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

注: 容器是否会长久运行,是和 docker run指定的命令有关,和-d 参数无关。


3. 停止运行的容器


4. 进入容器

dockerexec后边可以跟多个参数,这里主要说明 -i -t 参数。
只用-i参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当-i -t 参数一起使用时,则可以看到我们熟悉的 Linux命令提示符。

docker exec -it 容器ID /bin/bash

4. 进入容器

dockerexec后边可以跟多个参数,这里主要说明 -i -t 参数。
只用-i参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当-i -t 参数一起使用时,则可以看到我们熟悉的 Linux命令提示符。

docker exec -it 容器ID /bin/bash

5. 导出和导入容器

docker export 容器ID>导出文件名.tar
cat 导出文件名.tar |docker import - 镜像用户/镜像名:镜像版本 

此外,也可以通过指定 URL 或者某个目录来导入

docker import http://lazyfennec.cn/image.tgz example/imagerepo

6. 删除容器

可以使用 docker container rm 来删除一个处于终止状态的容器。

docker container rm ubuntu:16.04

如果要删除一个运行中的容器,可以添加-f参数。Docker 会发送 SIGKILL 信号给容器。

docker rm -f ubuntu:16.04

用 docker container ls -a命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容夻。

docker container prune

如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

上一篇 下一篇

猜你喜欢

热点阅读