docker的常用指令和镜像容器的理解

本文详细介绍Docker的常用命令,包括镜像和容器的操作,如拉取、创建、启动、停止和删除容器,以及如何在容器间复制文件。同时,深入解析Docker镜像和容器的工作原理,帮助读者掌握Docker的高效使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用docker的常用命令

查看docker中文社区手册http://www.docker.org.cn/book/docker/docker-download-image-7.html

本文的所有部分假设您在docker用户组中运行docker命令。如果您选择不使用,请在前面加上sudo。
直接使用docker指令可以看到docker的所有指令。

  • 重启docker服务 sudo service docker restart
  • 关闭docker服务 sudo service docker stop
  • 开启docker服务 sudo service docker start

镜像操作

查看所有镜像 docker image ls 或者 docker images
pull拉远程后面是镜像名 docker image pull delron/fastdfs 后面冒号:加上指定的版本
删除镜像 docker image rm 镜像名或 rmi 镜像id
如果不能删除使用强制删除 docker rmi -f fce289e99eb9 后面是镜像id
删除全部image的: docker rmi $(docker images -q)

容器操作

列出正在运行的容器 docker container ls 后面加上 --all则是列出所有容器

等同于docker ps也是所有运行中容器 docker ps -a显示所有容器

删除容器:docker -rm CONTAINERID

强制删除容器:docker -rm -f CONTAINERID
不能够删除一个正在运行的容器,会报错。需要先停止容器。

利用镜像创建容器: docker run [相关参数] 镜像 [执行的命令]
docker run ubuntu:14.04 /bin/echo ‘hello world’
注意这里不能使用立即就停止运行的程序,否则会立马关闭容器
取名并运行: docker run -it --name=myubuntu ubuntu /bin/bash

守护容器–dit会运行并启动然后一直保存除非你手动退出
docker run -dit --name=rong2 ubuntu
注:-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动,要把-i -t -d 放到镜像名字前面,–name指定容器名。
如果使用systemctl启动服务需要用下面的方式以超级权限启动,否则会报Failed to get D-Bus connection: Operation not permitted错误:
进入后台运行的容器:docker exec -it containname /bin/bash
启动容器:docker start containername
停止容器:docker stop containername

停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q)

注:-a标志列出所有容器,-q标志只列出容器的ID,然后传递给rm命令

重命名一个容器:docker rename old_name new_name

要获取所有容器名称及其IP地址:
docker inspect -f ‘{{.Name}} - {{.NetworkSettings.IPAddress }}’ $(docker ps -aq)

进入容器内部后可以使用下面命令获取目前容器的ip:
cat /etc/hosts
在docker容器和宿主机之间复制文件:
切换为root用户然后:

从主机复制到容器 docker cp host_path containerID:container_path

从容器复制到主机 docker cp containerID:container_path host_path

保存或读取到本地

把容器保存成镜像: docker commit myubuntu myimage
把镜像保存到本地文件: docker save -o 镜像.tar myimage 这里可以不指定格式,都是生成tar格式
加载本地镜像文件:docker load -i 本地镜像名

docker镜像和容器的理解

先查看下所有的镜像,tag就是版本可以指定

镜像所在仓库名称    镜像标签            镜像id                 创建时间               大小
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               2c5e00d77a67        5 weeks ago         188MB
delron/fastdfs      latest              8487e86fc6ee        14 months ago       464MB

下面介绍一下创建一个容器的过程。

镜像是静态的,镜像的每一层都只是可读的,而容器是动态的里面运行着我们指定的应用,容器里面的应用可能会新建一个文件,修改一个目录,这些操作所带来的改变并不会作用到镜像里面,因为镜像只是可读的。所以通过镜像创建容器就是在镜像上加一个可读写的层。下面的图引用自docker docs,ID上有些不同。
在这里插入图片描述

一个镜像可创建多个容器,每个容器都有各自的一个可读写层,这些层相互独立共享下面的镜像

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值