暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker基本操作:镜像+容器

架构师老陆 2022-06-23
1228
上一篇,完成了Docker Desktop的安装。这一篇,通过命令提示符(终端),学习Docker的两个基础,镜像和容器,掌握其作用和用法。

一、镜像操作

1、拉取镜像

拉取镜像命令为docker pull,命令格式为:docker pull 镜像名称:版本号,如果仅填写镜像名称,则版本号将采用缺省值latest,latest指向了该资源最新版。
    # 以下效果等同
    docker pull hello-world
    docker pull hello-world:latest
    有时候,为项目指定某个特定版本,也是可以的。
      docker pull mysql:8.0.29
      那么,拉取镜像时,我们如何确定待拉取的镜像名称、以及可供拉取的版本呢?
      答案是Docker Hub,我们拉取的镜像,默认都是从Docker Hub拉取的,这个Register由Docker官方管理和维护,要拉取什么,直接上去搜就好了。具体如何使用,后续将单独写一篇文章《什么是Docker Hub》。

      2、查看镜像

      查看镜像命令为docker images,可以查看当前已拉取的所有镜像。
        docker images

        3、删除镜像

        删除镜像命令为docker rmi,命令格式为:docker rmi 镜像名称:版本号,如果仅填写镜像名称,则版本号将采用缺省值latest。
          # 以下效果等同
          docker rmi hello-world
          docker rmi hello-world:latest
          也可以通过镜像ID删除,命令格式为:docker rmi 镜像ID,其中,镜像ID可以只填写前几位,能确定唯一镜像即可。
            # 参数6:mysql镜像ID的第1位
            docker rmi 6
            也可以一次性删除多个镜像,我们先拉取3个镜像,再执行删除。
              # 拉取镜像
              docker pull hello-world
              docker pull mysql
              docker 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:latest
                docker run -d -p 8888:80 --name nginx nginx
                docker 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 nginx
                    docker 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 0
                        docker 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 nginx1
                          docker start 0


                          # 以下效果等同(启动多个容器)
                          docker start nginx1 nginx2
                          docker start 0 c
                          nginx和nginx1不能同时启动,都使用了宿主机的8888端口,同时启动时将提示端口被占用错误。

                          5、删除容器

                          删除容器命令为docker rm,参数与停止/启动容器一致,可同时删除多个容器。
                            # 以下效果等同
                            docker rm nginx1
                            docker rm 0


                            # 以下效果等同(删除多个容器)
                            docker rm nginx1 nginx2
                            docker rm 0 c
                            运行中的容器是不可以被删除的,删除前必须停止。

                            三、命令总结

                            以上介绍了镜像和容器的最基本操作,这里做个小结。

                            1、镜像

                              # 1. 拉取镜像
                              docker pull nginx
                              docker pull nginx:latest
                              docker pull mysql:8.0.29


                              # 2. 查看镜像
                              docker images


                              # 3. 删除镜像
                              docker rmi nginx
                              docker rmi nginx:latest
                              docker rmi 0 # 0代表镜像ID
                              docker rmi 0 6 f

                              2、容器

                                # 1. 创建并运行容器
                                docker run -d -p 8888:80 --name nginx nginx:latest
                                docker run -d -p 8888:80 --name nginx nginx # 版本默认为latest
                                docker run -d -p 8888:80 --name nginx 0 # 0代表镜像ID


                                # 2. 查看容器
                                docker ps
                                docker ps -a


                                # 3. 停止容器
                                docker stop nginx
                                docker stop 0 # 0代表容器ID
                                docker stop 0 c


                                # 4. 启动容器
                                docker start nginx
                                docker start 0 # 0代表容器ID
                                docker start 0 c


                                # 5. 删除容器
                                docker rm nginx
                                docker rm 0 # 0代表容器ID
                                docker rm 0 c

                                3、官方参考

                                当我们执行某个Docker命令时,可以通过https://docs.docker.com查看官方文档,以了解命令的各项参数和用法。例如docker run,通过搜索进入响应页面,里面有关于该命令的详细解释和例子。

                                以上,就是关于镜像和容器最基本的命令介绍了,这也是Docker最基础的操作。接下来,我们还要掌握Docker的几个其他基本知识,以及更高级的用法。


                                文章转载自架构师老陆,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                评论