安装Docker Desktop
上一篇,完成了Docker Desktop的安装。这一篇,通过命令提示符(终端),学习Docker的两个基础,镜像和容器,掌握其作用和用法。
一、镜像操作
1、拉取镜像
拉取镜像命令为docker pull,命令格式为:docker pull 镜像名称:版本号,如果仅填写镜像名称,则版本号将采用缺省值latest,latest指向了该资源最新版。
# 以下效果等同docker pull hello-worlddocker pull hello-world:latest
有时候,为项目指定某个特定版本,也是可以的。
docker pull mysql:8.0.29
那么,拉取镜像时,我们如何确定待拉取的镜像名称、以及可供拉取的版本呢?
答案是Docker Hub,我们拉取的镜像,默认都是从Docker Hub拉取的,这个Registry由Docker官方管理和维护,要拉取什么,直接上去搜就好了。具体如何使用,后续将单独写一篇文章《什么是Docker Hub》。
2、查看镜像
查看镜像命令为docker images,可以查看当前已拉取的所有镜像。
docker images
3、删除镜像
删除镜像命令为docker rmi,命令格式为:docker rmi 镜像名称:版本号,如果仅填写镜像名称,则版本号将采用缺省值latest。
# 以下效果等同docker rmi hello-worlddocker rmi hello-world:latest

也可以通过镜像ID删除,命令格式为:docker rmi 镜像ID,其中,镜像ID可以只填写前几位,能确定唯一镜像即可。
# 参数6:mysql镜像ID的第1位docker rmi 6

也可以一次性删除多个镜像,我们先拉取3个镜像,再执行删除。
# 拉取镜像docker pull hello-worlddocker pull mysqldocker pull nginx# 查看镜像docker images# 删除多个镜像docker rmi 0 6 f

如果有多个镜像,且第1位不能确定唯一时,可以取前2位、前3位、……,直到能确定唯一镜像即可。
如果通过镜像创建的容器正在运行中,那么该镜像是不可以被删除的,删除时会有失败提示。
如果需要删除这样的镜像,需要先停止运行通过该镜像创建的容器,并且删除该容器。
二、容器操作
1、创建并启动容器
创建并启动容器的命令为docker run,其前提是必须先拉取镜像,这里,我们演示下nginx,并指定其运行端口为8888。
# 拉取镜像docker pull nginx# 创建并启动容器(以下效果等同)docker run -d -p 8888:80 --name nginx nginx:latestdocker run -d -p 8888:80 --name nginx nginxdocker run -d -p 8888:80 --name nginx 0

参数说明:
- -d:指定容器在后台运行
- -p 8888:80:端口映射,将宿主机的8888端口映射到容器的80端口
- —name nginx:指定容器名称为nginx
- nginx:latest:指定镜像,版本号不填时则默认为latest,也可以用镜像ID代替
这时,已成功创建并启动nginx容器,通过宿主机IP和8888端口,即可访问容器中的nginx。
2、查看容器
查看容器命令为docker ps,可以查看当前运行中的容器。
docker ps
3、停止容器
停止容器命令为docker stop,命令格式为:docker stop 容器名,或docker stop 容器ID,其中容器ID可以取前几位,能确定唯一容器即可。
# 以下效果等同docker stop nginxdocker stop 3

这里的参数nginx,可不是nginx:latest的意思,而是取自NAMES,由docker run命令的—name参数提供。
我们要怎么查看所有容器呢,还是通过docker ps,加上-a即可。
docker ps -a

可同时停止多个容器,容器之间用空格隔开。为了演示方便,我们再创建2个nginx容器。
# 创建并启动nginx容器docker run -d -p 8888:80 --name nginx1 0docker run -d -p 9999:80 --name nginx2 0# 查看全部容器docker ps -a# 停止多个容器docker stop nginx1 nginx2
4、启动容器
启动容器命令为docker start,参数与停止容器一致,可同时启动多个容器。
再次启动nginx,不能使用docker run命令,因为nginx容器已经创建,如上面的nginx、nginx1、nginx2。
# 以下效果等同docker start nginx1docker start 0# 以下效果等同(启动多个容器)docker start nginx1 nginx2docker start 0 c

nginx和nginx1不能同时启动,都使用了宿主机的8888端口,同时启动时将提示端口被占用错误。
5、删除容器
删除容器命令为docker rm,参数与停止/启动容器一致,可同时删除多个容器。
# 以下效果等同docker rm nginx1docker rm 0# 以下效果等同(删除多个容器)docker rm nginx1 nginx2docker rm 0 c

运行中的容器是不可以被删除的,删除前必须停止。
三、命令总结
1、镜像
# 1. 拉取镜像docker pull nginxdocker pull nginx:latestdocker pull mysql:8.0.29# 2. 查看镜像docker images# 3. 删除镜像docker rmi nginxdocker rmi nginx:latestdocker rmi 0 # 0代表镜像IDdocker rmi 0 6 f
2、容器
# 1. 创建并运行容器docker run -d -p 8888:80 --name nginx nginx:latestdocker run -d -p 8888:80 --name nginx nginx # 版本默认为latestdocker run -d -p 8888:80 --name nginx 0 # 0代表镜像ID# 2. 查看容器docker psdocker ps -a# 3. 停止容器docker stop nginxdocker stop 0 # 0代表容器IDdocker stop 0 c# 4. 启动容器docker start nginxdocker start 0 # 0代表容器IDdocker start 0 c# 5. 删除容器docker rm nginxdocker rm 0 # 0代表容器IDdocker rm 0 c
3、官方参考
当我们执行某个Docker命令时,可以通过https://docs.docker.com查看官方文档,以了解命令的各项参数和用法。例如docker run,通过搜索进入响应页面,里面有关于该命令的详细解释和例子。
以上,就是关于镜像和容器最基本的命令介绍了,这也是Docker最基础的操作。接下来,我们还要掌握Docker的几个其他基本知识,以及更高级的用法。
