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

03-docker容器的基本操作

运维家 2023-10-11
108

主旨

本文主要介绍下docker容器的基本操作。


环境

    linux环境
    docker容器


    总则

      1、可以用镜像生成对应运行的容器,一个镜像可以生成多个容器。
      2、容器里面的系统和宿主机是相互独立的。
      3、容器的删除和崩溃,不会影响到宿主机。


      开启路由转发

        [yunweijia@localhost ~]$ sudo vim etc/sysctl.conf 
        # 最后一行新增这个配置
        net.ipv4.ip_forward = 1
        [yunweijia@localhost ~]$ sudo sysctl -p
        net.ipv4.ip_forward = 1
        [yunweijia@localhost ~]$


        前台运行容器

          语法:docker run -it 镜像:版本号 bash环境
            参数解释:
             -i:表示交互式
              -t:表示打开一个shell窗口
          实例:
          [yunweijia@localhost ~]$ sudo docker run -it centos:7 /bin/bash
          [root@325a97085854 ]# pwd

          [root@325a97085854 ]#
          这个时候我们输入exit 就退出这个镜像了,随之这个镜像也停止运行了,这种情况生产环境肯定是不被允许的,下面我们会说下如何让镜像后台保持运行。

          查看镜像运行情况
            语法:docker ps [-a]
              参数解释:默认查看处于运行状态下的容器,[-a]表示查看所有状态的容器
            实例:
            # 输入docker ps的时候,看不到容器,因为都是停止状态的
            [yunweijia@localhost ~]$ sudo docker ps
            CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
            # 加上参数 -a 之后,发现有两个处于exited状态的容器
            [yunweijia@localhost ~]$ sudo docker ps -a
            CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
            325a97085854 centos:7 "/bin/bash" 8 minutes ago Exited (127) 5 minutes ago youthful_kowalevski
            2d5c7e25517f hello-world "/hello" 43 hours ago Exited (0) 43 hours ago objective_rhodes
            [yunweijia@localhost ~]$

            查看容器详细信息
              语法:docker inspect 容器ID
                容器ID:即使用docker ps查看出来结果的第一列,就是容器ID
              实例:
              [yunweijia@localhost ~]$ sudo docker inspect 325a97085854

              查看容器日志
                语法:docker logs 容器ID
                容器ID:即使用docker ps查看出来结果的第一列,就是容器ID
                实例:
                  [yunweijia@localhost ~]$ sudo docker logs 325a97085854

                后台运行容器

                需要有永久运行的程序,否则程序一旦停止,容器也将随之停止。

                  语法:docker run -d 镜像:版本号 bash环境 运行的程序
                  实例:
                    # 后面就加了一个永久运行的脚本
                  [yunweijia@localhost ~]$ sudo docker run -d centos:7 bin/bash -c "while true;do echo yunweijia; sleep 5; done"
                  [yunweijia@localhost ~]$ sudo docker ps
                  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                  b47b053f66c2 centos:7 "/bin/bash -c 'while…" 39 seconds ago Up 38 seconds goofy_mendeleev
                  [yunweijia@localhost ~]$

                  进入后台运行的容器
                    语法:docker exec -it 容器ID bash环境
                    实例:
                    [yunweijia@localhost ~]$ sudo docker ps
                    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                    b47b053f66c2 centos:7 "/bin/bash -c 'while…" 2 minutes ago Up 2 minutes goofy_mendeleev
                    [yunweijia@localhost ~]$ sudo docker exec -it b47b053f66c2 bin/bash
                    [root@b47b053f66c2 ]#

                    停止后台容器
                      语法:docker stop 容器ID  # 正常停止
                      docker kill 容器ID # 强制停止
                      实例:
                      [yunweijia@localhost ~]$ sudo docker ps
                      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                      b47b053f66c2 centos:7 "/bin/bash -c 'while…" 5 minutes ago Up 5 minutes goofy_mendeleev
                      [yunweijia@localhost ~]$ sudo docker stop b47b053f66c2
                      b47b053f66c2
                        # 查不到了
                        [yunweijia@localhost ~]$ sudo docker ps
                      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                        # 可以看到变成停止状态了
                      [yunweijia@localhost ~]$ sudo docker ps -a
                      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                      b47b053f66c2 centos:7 "/bin/bash -c 'while…" 6 minutes ago Exited (137) 8 seconds ago goofy_mendeleev
                      325a97085854 centos:7 "/bin/bash" 26 minutes ago Exited (127) 22 minutes ago youthful_kowalevski
                      2d5c7e25517f hello-world "/hello" 43 hours ago Exited (0) 43 hours ago objective_rhodes
                      [yunweijia@localhost ~]$

                      启动已停止容器
                        语法:docker start 容器ID
                        实例:
                        [yunweijia@localhost ~]$ sudo docker start b47b053f66c2
                        b47b053f66c2
                        [yunweijia@localhost ~]$ sudo docker ps
                        CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                        b47b053f66c2 centos:7 "/bin/bash -c 'while…" 7 minutes ago Up 3 seconds goofy_mendeleev
                        [yunweijia@localhost ~]$

                        删除容器
                          语法:docker rm 容器ID  # 正常删除
                            docker rm -f 容器ID  # 强制删除
                            docker rm -f 容器ID 容器ID  # 批量删除
                            注意:只能删除处于停止状态的容器
                          实例:
                          [yunweijia@localhost ~]$ sudo docker ps -a
                          CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                          b47b053f66c2 centos:7 "/bin/bash -c 'while…" 8 minutes ago Up About a minute goofy_mendeleev
                          325a97085854 centos:7 "/bin/bash" 28 minutes ago Exited (127) 25 minutes ago youthful_kowalevski
                          2d5c7e25517f hello-world "/hello" 43 hours ago Exited (0) 43 hours ago objective_rhodes
                          [yunweijia@localhost ~]$ sudo docker rm 2d5c7e25517f
                          2d5c7e25517f
                          [yunweijia@localhost ~]$ sudo docker ps -a
                          CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                          b47b053f66c2 centos:7 "/bin/bash -c 'while…" 9 minutes ago Up About a minute goofy_mendeleev
                          325a97085854 centos:7 "/bin/bash" 29 minutes ago Exited (127) 25 minutes ago youthful_kowalevski
                          [yunweijia@localhost ~]$

                          至此,本文结束。
                          下一章:commit构建自定义镜像

                          如果本文内容对你有所帮助,请关注并分享我的公众号【运维家】。

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

                          评论