一些Docker命令

本文介绍了镜像和容器的区别,镜像由只读层构成,容器是在镜像基础上增加可读可写层。还列举了一系列Docker操作命令,如搜索、下载镜像,运行、查看、删除容器等,同时提到了镜像的导入导出以及查看Docker相关信息和指定数据存储目录的方法。

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

镜像和容器的区别:

镜像就是一堆只读层的统一视角

容器就是镜像这一堆只读层上增加一个可读可写层,一个运行状态的容器为容器加上隔离的进程空间,对一个容器内的任何修改都将作用于可读可写层,当容器停止运行时,会在主机上保存对该容器的修改,下次重新运行该容器时会加载对该容器的修改内容,还原容器状态。

 

docker search image_name 可以查看需要下载的镜像名

docker pull image_id 下载所需要的镜像

docker run -it image_id 以命令行的形式运行镜像,生成一个容器,状态为正在运行,即容器为镜像的实例

docker ps -a 查看所有容器的状态

docker rmi image_id 删除某个镜像

 

如果一个镜像有容器为正在运行状态,那么这个镜像是无法删除了,需要停止正在运行的容器:

docker stop CONTAINER_NAME

docker rm CONTAINER_NAME 删除某个容器,需要先将某个容器关闭

docker start CONTAINER_NAME 开启某个容器

docker attach CONTAINER_NAME 进入某个容器(命令行)

 

#run container, -P publishes all exposed ports to ephemeral range
docker run -dit -P <image_name>

当对一个容器进行修改之后,可以保存对容器的修改:

docker commit ID new_name

退出容器:

ctrl + D

  • 运行一个在后台执行的容器,同时,还能用控制台管理:docker run -i -t -d ubuntu:latest
  • 运行一个带命令在后台不断执行的容器,不直接展示容器内部信息:docker run -d ubuntu:latest ping www.docker.com
  • 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理,docker run -d --restart=always ubuntu:latest ping www.docker.com
  • 为容器指定一个名字,docker run -d --name=ubuntu_server ubuntu:latest
  • 容器暴露80端口,并指定宿主机80端口与其通信(: 之前是宿主机端口,之后是容器需暴露的端口),docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest
  • 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹),docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest

 

http://dockone.io/article/783

docker build -t centos_nginx:v1 . 从当前目录的Dockerfile创建镜像

tanner:
    image: abb62a539c3b
    networks:
      app_net:
        ipv4_address: 192.168.10.2
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
#  将docker命令映射到容器内,使容器内可以使用宿主机命令,目前知道的缺点是容器用户需要和
#  宿主机docker.sock用户保持一致,否则权限不允许,这样做十分不安全,有待进一步查看文档

docker run -dit -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker abb62a539c3b bash

docker export container_id > file_name 将容器导出成文件
docker save image_id > file_name 将镜像导出成文件

创建一个docker网络,可以锁定容器IP
docker network ls  查看当前docker网络
docker network create --subnet=192.168.0.0/16 staticnet  创建自定义网络类型并指定网段
docker run -it --name userserver --net staticnet --ip 192.168.0.2 ubuntu /bin/bash  使用新网络类型启动容器



0X01 镜像的导入导出

1.从docker image导出到文件 & 从文件导入到docker image

docker save -o test.tar test_image:latest
docker load -i test.tar

2.从容器导出到文件 & 从文件导入到镜像

docker export -o test.tar f75d53a0e009
docker import test.tar test:v1.0

 

docker info可查看docker相关信息,修改/etc/docker/daemon.json可以指定docker的数据存储目录:

{
  "data-root": "/data/docker/"
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值