Docker基础命令

本文介绍了Docker的基础命令,包括搜索、拉取、查看和删除镜像,容器的创建、启动、停止、删除以及进入容器的方法,还涉及镜像和容器的详细信息查看、端口映射和日志查看等。

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

1 搜索镜像

搜索centos镜像

docker search centos

  • NAME:镜像名称
  • DESCRIPTION :描述信息
  • STARS:类似于点赞
  • OFFICIAL:是否为Docker官方发布
  • AUTOMATED:是否为自动构建(第三方构建)

 

2 拉取镜像

docker pull centos

 

3 查看下载的镜像

docker images

 

4 删除镜像

docker rmi redis

 

5 把镜像下到本地

docker save redis > /root/redis.tar.gz

 

6 把本地镜像导入docker

docker load < /root/redis.tar.gz

注:导入的镜像名称可能会是 none 我们需要修改一下

给镜像打个tag

docker tag  256cb12e72d6 jenkins:2.16

 

 

7 创建并启动一个容器

docker run -it --name my_redis redis /bin/bash

  • run :创建并启动
  • -i :交互模式标准输入打开
  • -t :启动一个tty终端
  • --name my_redis :my_redis 容器名称 --name给容器起一个名称
  • redis : 镜像名称
  • /bin/bash:执行的一条命令

进入容器后如果我们要退出容器改怎么办那?

第一种方法 输入exit

这里我们能看到exit退出后容器就关闭了,这是为什么那,我们在进入一下这个容器看一下

能看到容器中只运行了一个bash进程,使用exit退出会关闭bash这个进程,这时候容器中就没有任何运行的进程了,就会触发docker默认机制:如果一个容器中没有任何运行进程会自动关闭容器 所以如果使用attach选项进入容器这种退出方法很不可取。

那么attach选项进入容器后该如何安全的退出那?

第二种方法 组合键

按住Ctrl 再按p 再按q(p和q不是同时哦)

退出后查看容器状态

read escape sequence不是命令哦 是按组合键后返回的信息

 

8 查看容器状态

docker ps  查看运行中的容器

docker ps -a 查看所有容器包括停止的

 

9 关闭/启动一个容器

docker stop my_centos

docker start my_centos

 

10 删除镜像/容器

删除镜像

docker rmi redis

这里要注意:如果使用镜像创建了容器(哪怕没有启动),我们这么删除镜像会报错无法删除

我们必须要先删除使用该镜像穿件的容器,然后才能删除镜像

删除容器

删除容器的时候会有两种情况,1 容器已停止运行  2  容器正在运行

docker rm my_redis (my_redis是容器名称NAMES)

 

删除正在运行的容器

直接删除会报错无法删除,两种方法删除正在运行的程序

1 先关闭容器 再删除

2 强制删除正在运行的容器

docker rm -f my_redis

删除完所有使用redis镜像创建的容器后我们就可以删除镜像了

 

10 进入容器方法

进入容器的方法有3中

1 attach (不推荐方法)

进入方法

docker attach my_centos

不推荐的原因,

  • 1退出问题,如果不小心使用了exit退出整个容器都会关闭
  • 2 安全性,当你使用attach进入容器,另一个人也使用attach进入同一个容器,这样你在容器中所有的操作会实时的反应到另一人的屏幕中,就像VNC一样。

 

2 exec

docker exec -it my_centos /bin/bash

可以看到 进程中有两个/bin/bash 所以当exit退出的时候容器是不会关闭的,别人使用exec登录同一个容器 也不会同步显示当前操作

 

3 利用 nsenter 命令

如果没有nsenter命令安装util-linux包

yum –y install util-linux

这种方法进入容器必须要先获取容器进程的pid

docker inspect --format "{{.State.Pid}}" 08625bf95617

6793

[root@localhost ~]# nsenter -t 23409 -u -i -n -p

这样exit退出容器后 容器还会继续运行

 

启动容器脚本

vim enter_docker.sh

#!/bin/bash

docker ps -a

read -p "输入要进入的Docker名称:" NUM
PID=$(docker inspect --format "{{.State.Pid}}" $NUM)

nsenter -t $PID -u -i -n -p
 

 

11 镜像详细信息查看

docker inspect centos

12 容器详细信息查看

docker inspect d3df12fe8458

 

13 构建容器,随docker自动运行

创建容器的时候加上--restart=always

docker run --restart=always -it --name=jenkinx 256cb12e72d6

如果容器已经创建完成,使用update --restart=always

docker update --restart=always 容器ID

这样物理机reboot之后 容器会自动运行

或者修改/etc/docker/daemon.json

vim /etc/docker/daemon.json

添加

"live-restore": true

systemctl daemon-reload 
systemctl restart docker

 

 

14 docker容器和宿主机之间端口映射

默认情况下docker容器内的服务,外部是无法访问的,我们需要把docker容器与宿主机之间做端口映射,外部才能正常访问容器服务

方法1 -P(大写)参数 随机端口映射

docker run -d --restart=always -P --name=jenkins 256cb12e72d6

把宿主机1025端口映射到docker容器8080端口

 

15 查看docker日志

方法1

docker logs 8da3b09107a3

docker logs -tf --tail 10 8da3b09107a3

-t  加入时间戳显示

-f 时时追踪

--tail 显示左后多少行

方法2

docker inspect 8da3b09107a3

cat /data/docker/containers/8da3b09107a3f5984815b94f1fc25563bcca9cac3c6bdd841ee2848264702788/8da3b09107a3f5984815b94f1fc25563bcca9cac3c6bdd841ee2848264702788-json.log

16 查看容器内运行的进程

docker top 8da3b09107a3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值