zoukankan      html  css  js  c++  java
  • docker 容器相关命令使用

    一,容器概述

    ​容器时指docker对外提供服务的一个实例,容器要想启动必须满足至少有一个进程运行在前台(容器内部的前台)。

    二、启动容器

    格式:
    	docker run [参数] [镜像名称|ID] [指定的容器运行命令(如果不设置则使用默认命令)]
    
    流程:
    	1、执行一个docker run
    	2、检查本地是否存在所需镜像,如果没有则去远程镜像仓库下载。
    	3、按照镜像和参数启动一个容器
    
    示例:
    [root@docker ~]# docker run -d nginx
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
    Status: Downloaded newer image for nginx:latest
    22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d
    [root@docker ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
    22b601ab6f9f   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    interesting_banach
    
    参数:
    -d : 只以守护进程的模式运行一个容器
    -i : 打开标准输出
    -t :  创建一个窗口(伪终端)
    -p(小写的p字母) : 指定映射端口
    	docker run -d -p 30080:80 nginx;docker ps
    -P(大写的P字母) : 随机映射端口
    	docker run -d -P nginx; docker ps
    -v : 指定挂载卷(将本机的目录映射到容器内部)
    	作用:
    		1、将本机目录"软链接"容器内部
    		2、可以持久化容器内部数据
    	示例:
    		docker run -d -P -v /root/test:/usr/share/nginx/html nginx:latest
    
    --name : 指定容器的名称
    	作用:
    		1、指定容器名称
    		2、将名称解析到docker dns上
    	示例:
    		docker run -d --name nginx nginx
    
    --link : 将一个容器的网络连接到另外一个容器
    	格式:
    		--link 容器名称:连接别名
    	
    	示例:
    		docker run -d --name test_nginx  nginx
    		docker run -it --link test_nginx:test_nginx centos
    
    --rm : 当容器的生命周期结束时,自动删除容器
    	示例:
    		docker run -d --rm centos sleep 10
    	
    --network : 连接网桥(同一个网桥内的所有容器网络互通)
    	示例:
    		docker network create chenyang
    		docker run -d --network chenyang nginx
    

    三、停止容器

    停止容器,并没有删除容器。
    格式:
    	docker stop [容器ID及名称]
    示例:
    	docker stop agitated_newton
    	[root@docker ~/test]# docker ps -a | grep agitated_newton
    d4b2a919cb7f   nginx          "/docker-entrypoint.…"   21 minutes ago      Exited (0) 28 seconds ago                              agitated_newton
    

    四、启动容器

    格式:
    	docker start [容器ID及名称]
    示例:
    	[root@docker ~/test]# docker start agitated_newton
        agitated_newton
        [root@docker ~/test]# docker ps -a | grep agitated_newton
        d4b2a919cb7f   nginx          "/docker-entrypoint.…"   23 minutes ago      Up 2 seconds                   80/tcp                  agitated_newton
    

    五、删除容器

    格式:
    	docker rm [容器ID及名称]
    示例:
    	[root@docker ~/test]# docker rm laughing_hopper
        laughing_hopper
    参数:
    -f : 强制删除
    

    六、查询容器

    docker ps 默认查询正在运行的容器
    
    格式:
    	docker ps [参数]
    
    示例:
    [root@docker ~/test]# docker ps
    CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                   NAMES
    d4b2a919cb7f   nginx          "/docker-entrypoint.…"   26 minutes ago      Up 3 minutes       80/tcp                  agitated_newton
    
    参数:
    -a : 查询本机上所有的容器(包括已经停止了的)
    -q : 只显示容器ID
    
    列表参数:
        CONTAINER ID:容器ID
        IMAGE       :镜像ID
        COMMAND     :启动容器运行的命令      
        CREATED     :容器创建的时间
        STATUS      :状态(Up:启动状态  Exitd:停止状态)
        PORTS       :端口映射
        NAMES		:容器名称
    

    七、查看容器的详细信息

    格式:
    	docker inspect [容器ID或名称]
    示例:
    [root@docker ~/test]# docker inspect 22b601ab6f9f
    [
        {
            "Id": "22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d",
            "Created": "2021-01-12T09:29:07.881750107Z",
            "Path": "/docker-entrypoint.sh",
            "Args": [
                "nginx",
                "-g",
                "daemon off;"
            ],
    ...
    
    参数:
    -f : 指定使用golang语言模板
    	示例:
    	[root@docker ~/test]# docker inspect -f '{{ .State.Status }}' d4b2a919cb7f
        running
    

    八、复制命令

    格式:
    	第一种:复制到容器内
    		docker cp [宿主主机的路径] [容器ID]:[容器内的路径]
    		
    	第二种:复制到容器外
    		docker cp [容器ID]:[容器内的路径] [宿主主机的路径]
    
    示例:
    	[root@docker ~]# docker cp test/demo.html f50bb42dd583:/usr/share/nginx/html
        [root@docker ~]# docker cp f50bb42dd583:/usr/share/nginx/html/50x.html .
        [root@docker ~]# ll
        total 3284696
        -rw-r--r--  1 root root        494 Dec 15 21:59 50x.html
    

    九、进入容器

    exec(推荐)
    	解释:
    		exec不是进入容器的命令,而是碰巧有这种功能。其功能是在容器外向容器内执行一条命令的命令。
    	格式:
    		docker exec [参数] [容器的ID或名称] [命令]
    	示例:
    		[root@docker ~]# docker exec -i -t ead6cdefcd01 bash
    
    attach
    	解释:
    		进入容器。通过一个管道连接到容器的顶级进程。
    		缺点:当attach退出是,顺带把顶级进程也带走了。
    	格式:
    		docker attach [容器ID或名称]
    	示例:
    		[root@docker ~]# docker attach mystifying_kirch
    
    nsenter
    	解释:建立两个进程之间的互通管道
    	格式:
    		nsenter --target $( docker inspect -f {{.State.Pid}} nginxv1 ) --mount --uts --ipc --net --pid
    		
    
    ssh
    	解释:通过ssh隧道连接
    	格式:
    		ssh root@x.x.x.x
    

    十,查看容器启动日志

    格式:
          docker log [参数] [容器名称或ID]
    示例:
         [root@docker ~]# docker logs my_ngixn 
    
    

    十一,docker容器网络模式

    格式:
    	docker network [command]
    
    命令:
    	ls:查看网桥列表
    	示例
    		[root@docker ~/conf.d]# docker network ls
            NETWORK ID     NAME       DRIVER    SCOPE
            a985cfca04ae   bridge     bridge    local
            c3d4dd997242   chenyang   bridge    local
            a425f4733836   host       host      local
            5902bdedd1b1   lnmd       bridge    local
            ce7e9b514c2a   none       null      local
    	
    	create:创建网桥
    	示例:
            [root@docker ~/conf.d]# docker network create test
            [root@docker ~/conf.d]# docker network ls | grep test
            45a9b8795a7c   test       bridge    local
    
    	rm : 删除网桥
    	示例:
    	[root@docker ~/conf.d]# docker network rm test
            test
            [root@docker ~/conf.d]# docker network ls | grep test
             
            
    	inspect : 查看网桥详细信息
    	示例:
    	[root@docker ~/conf.d]# docker network inspect -f '{{ .Containers }}'  lnmd
    	
    	prune: 清理网桥(未被使用的网络模式)
    	示例:
    	docker network prune
    
    	connect: 连接一个网桥
    	示例
    	docker network connect [参数] [网桥名称] [容器名称]
    	
    	disconnetc: 断开一个网桥连接
    	示例:
    	[root@docker ~/conf.d]# docker network disconnect lnmd sleepy_shaw
            [root@docker ~/conf.d]# docker exec -it sleepy_shaw bash
            [root@c548b0b76e31 /]# ping 767f43bc01d7
            ping: 767f43bc01d7: Name or service not known
    
    
  • 相关阅读:
    行高 | line-height (Animations & Transitions)
    色域 | @media.color-gamut (Media Queries)
    自动换行 | word-wrap (Text)
    漫谈死锁
    《金融时间序列分析》第3版-蔡瑞胸
    《广告点击延时反馈建模》
    《Google软件测试之道》
    《持续集成:软件质量改进和风险降低之道》
    《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》
    《架构真经:互联网技术架构的设计原则》
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14268820.html
Copyright © 2011-2022 走看看