例如,我们需要拉取一个 Docker 镜像,我们可以用如下命令:
docker pull image_name
image_name 为镜像的名称,而如果我们想从 Docker Hub 上去下载某个镜像,我们可以使用以下命令:
docker pull centos:latest
cento:lastest 是镜像的名称,Docker Daemon 发现本地没有我们需要的镜像,会自动去 Docker Hub 上去下载镜像,下载完成后,该镜像被默认保存到 /var/lib/docker 目录下。
接着我们如果想查看主机下存在多少镜像,我们可以用如下命令:
docker images
我们要想知道当前有哪些容器在运行,我们可以用如下命令:
docker ps -a
-a 是查看当前所有的容器,包括未运行的。我们该如何去对一个容器进行启动,重启和停止呢?
我们可以用如下命令:
docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id
这个时候我们如果想进入到这个容器中,我们可以使用 attach 命令:
docker attach container_name/container_id
那如果我们想运行这个容器中的镜像的话,并且调用镜像里面的 bash ,我们可以使用如下命令:
docker run -t -i container_name/container_id /bin/bash
那如果这个时候,我们想删除指定镜像的话,由于 Image 被某个 Container 引用(拿来运行),如果不将这个引用的 Container 销毁(删除),那 Image 肯定是不能被删除。
我们首先得先去停止这个容器:
docker ps
docker stop container_name/container_id
然后我们用如下命令去删除这个容器:
docker rm container_name/container_id
然后这个时候我们再去删除这个镜像:
docker rmi image_name
当我们需要进入某一个正在运行的容器内有两种方法:
1,attach:(不推荐使用)
docker attach container_id # 根据ID进入容器
exit # 退出容器
attach
总结:一个容器指定一个进程,这个容器退出了。他的生成周期也就结束了,也就退出了。
2,nsenter:(推荐使用)
[root@docker-node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cdf5b727719 centos "/bin/bash" 25 minutes ago Up 5 minutes mydocker
[root@docker-node1 ~]# docker inspect --format "{{.State.Pid}}" 6cdf5b727719
8340
[root@docker-node1 ~]# nsenter -t 8340 -u -i -n
[root@10ca2734bd30 ~]#
nsenter
使用总结 (当退出容器后,还能让容器再后台运行。推荐使用这个命令进入容器)
还想偷点懒可以编写一个shelldocker.sh
脚本来进入容器
#!/bin/bash
PID=$(docker inspect --format "{{.State.Pid}}" $1)
nsenter -t $PID -u -i -n
chmod u+x shelldocker.sh #给脚本赋予可执行权限
./shelldocker.sh container_id # 执行脚本进入容器
此时,常用的 Docker 相关的命令就讲到这里为止了,我们在后续的文章中还会反复地提到这些命令。