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
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
[[email protected] ~]# 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