• docker命令


    docker ps -a:查看停止运行的容器

    docker logs  查看日志

    https://www.jianshu.com/p/1eb1d1d3f25e

    docker inspect 容器id  查看docker详情

    docker 查看日志

    启动已经终止的容器  docker container start 

     转自https://blog.csdn.net/y472360651/article/details/81289108

    容器是Docker的又一核心概念

    简单的说,容器是独立运行的一个或一组应用,以及他们的运行太环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统和运行在上面的应用。接下来记录一下如何管理一个容器,包括创建、启动和停止等

    启动容器
    启动容器有两种方式,一是基于镜像创建一个容器并启动,二是将终止状态的容器重新启动。

    1、 新建并启动:我们可以使用docker run命令新建一个容器并将其启动

    root@ubuntu:~# docker run ubuntu:16.04 /bin/echo 'Hello World'
    Hello World
    1
    2
    上面命令输出了内容之后,立马停止了容器,以至于我们根本不知道是否启动了容器。我们可以使用docker ps -a命令来查看所有的容器:

    root@ubuntu:~# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    e3efbefb34cd ubuntu:16.04 "/bin/echo 'Hello Wo…" 7 seconds ago Exited (0) 5 seconds ago priceless_mcnulty
    1
    2
    3
    可以看到,这就是我们刚刚创建并启动的容器!我们还可以使用如下命令启动一个Bash终端,允许用户与之交互:

    root@ubuntu:~# docker run -it ubuntu:16.04 /bin/bash
    root@d52e9924901b:/# date
    Sun Jul 1 00:43:09 CST 2018
    1
    2
    3
    如此,我们就可以在其上面进行一连串的命令输入操作了

    使用docker run来创建容器时,Docker在后台的操作包括:

    检查本地是否存在指定的镜像,不存在就从公有仓库中下载
    利用镜像创建并启动一个容器
    分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
    从宿主主机的网桥接口中桥接一个虚拟接口到容器中去
    从地址池分配一个IP给容器
    执行用户指定的应用程序
    执行完毕后容器被终止
    2、 启动已终止容器:可以使用docker container start命令,将一个已经停止的容器重新启动运行

    首先我们使用docker ps -a来获取当前宿主机上存在的容器:

    root@ubuntu:~# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    a148c6fec026 ubuntu:16.04 "bash" 3 minutes ago Exited (0) 10 seconds ago goofy_swanson
    1
    2
    3
    然后,我们获取到容器的ID,将其传入到docker container start命令中,将此容器启动起来:

    root@ubuntu:~# docker container start d52e9924901b
    1
    此时,我们输入docker ps命令,发现此容器是已启动状态的:

    root@ubuntu:~# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    a148c6fec026 ubuntu:16.04 "bash" 4 minutes ago Up 2 seconds goofy_swanson
    1
    2
    3
    但是,这仅仅只是将其启动起来了,如果我们还需要进入交互式终端,我们可以使用docker exec命令,并指定一个Bash,如下:

    root@ubuntu:~# docker exec -it a148c6fec026 /bin/bash
    root@a148c6fec026:/#
    1
    2
    值得注意的是,docker ps只会列出正在运行的容器,而docker ps -a会列出所有的容器,包括正在运行的和已经停止的容器

    后台运行容器
    更多的时候,需要让Docker在后台运行,而不是把当前执行的命令的结果直接输出在当前宿主机下,此时我们可以使用docker run命令,并添加-d参数来实现:

    root@ubuntu:~# docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello docker; sleep 1; done"
    59a9f0e30fda31c1799f622da6d56d0723c2bab5313f01f50e855fdbea21f00d
    1
    2
    此时,容器会在后台运行,不会把输出的结果打印到宿主机上面。使用-d参数运行容器之后,会返回一个容器的ID的给我们,我们可以通过docker container ls来查看容器的信息:

    root@ubuntu:~# docker container ls
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    59a9f0e30fda ubuntu:16.04 "/bin/sh -c 'while t…" 2 minutes ago Up 2 minutes inspiring_elion
    1
    2
    3
    如果想要知道后台运行的容器所执行的命令输出的内容,我们可以使用docker container logs命令来查看。比如,我们想查看刚刚那个容器所输出的内容,我们在命令后面加上容器的ID即可,如下:

    root@ubuntu:~# docker container logs 59a9f0e30fda
    hello docker
    hello docker
    hello docker
    hello docker
    hello docker
    hello docker
    hello docker
    ...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    终止容器
    我们可以使用docker container stop命令来停止一个容器。例如我们将刚刚那个容器停止,传入它的容器ID即可,如下:

    root@ubuntu:~# docker container stop 59a9f0e30fda
    1
    值得注意的是,docker container ls只列出正在运行的容器,我们如果需要查看已经停止的容器,只需要在结尾添加-a参数即可。如此并可列出当前宿主机存在的所有容器,包括正在运行与已经停止的容器,如下:

    root@ubuntu:~# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    59a9f0e30fda ubuntu:16.04 "/bin/sh -c 'while t…" 31 minutes ago Exited (137) 2 minutes ago inspiring_elion
    1
    2
    3
    在上面已经提到,对于已经停止的容器,我们可以使用docker container start命令来重新启动它!!!另外,我们还需知道另外一个命令:docker container restart重启容器的命令,命令会将一个运行态的容器停止,然后重新启动它!

    进入容器
    在使用-d参数时,容器会进入后台!但是,有的时候我们需要进入其交互式终端,对其进行一些命令输入操作,此时,我们可以使用docker attach命令或者docker exec命令来实现:

    docker attach:
    首先,我们新在后台启动一个容器:

    root@ubuntu:~# docker run -dit ubuntu:16.04 bash
    98ba6098afe1bc1f79893f4f3eca166b091cfeafcb544584b7fd09b7d12f41ef
    1
    2
    此时再使用docker container ls命令来查看容器的信息:

    root@ubuntu:~# docker container ls
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    98ba6098afe1 ubuntu:16.04 "bash" 52 seconds ago Up 50 seconds cranky_mccarthy
    1
    2
    3
    使用docker attach命令,进入容器交互式环境:

    root@ubuntu:~# docker attach 98ba6098afe1
    root@98ba6098afe1:/#
    1
    2
    docker exec:
    同样,新在后台启动一个容器:

    root@ubuntu:~# docker run -dit ubuntu:16.04 bash
    ea0cda7fe8d75b309e6f911a1acb9f062945a58661e8b389979d6ea7960626df
    1
    2
    此时再使用docker container ls命令来查看容器的信息:

    root@ubuntu:~# docker container ls
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    ea0cda7fe8d7 ubuntu:16.04 "bash" About a minute ago Up About a minute quirky_liskov
    1
    2
    3
    使用docker exec命令,进入交互式环境,值得注意的是,须指定-i与-t参数和Shell的名称,如下:

    root@ubuntu:~# docker exec -it ea0cda7fe8d7
    root@ea0cda7fe8d7:/#
    1
    2
    使用docker exec和docker attach命令时,应注意:docker attach命令进入交互式环境时,使用exit命令退出之后,容器即可终止,而docker exec命令则不会!所以这两种命令,更加推荐使用docker exec!

    导出和导入容器
    导出容器:如果要导出某个容器到本地,我们可以使用docker export命令
    首先,我们使用docker container ls -a查看以下当前宿主机上存在的所有容器列表:

    root@ubuntu:~# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    ea0cda7fe8d7 ubuntu:16.04 "bash" 11 minutes ago Up 11 minutes quirky_liskov
    1
    2
    3
    下面,我们将容器ID为ea0cda7fe8d7的容器导出为test.tar,如下:

    root@ubuntu:~# docker export ea0cda7fe8d7 > test.tar
    1
    此时,会在当前目录下生成一个test.tar名称的容器快照文件

    导入容器:我们可以使用docker import命令导入一个容器快照文件生成一个镜像
    我们将刚刚生成的容器快照文件test.tar导入,命令如下:

    root@ubuntu:~# cat test.tar | docker import - test/ubuntu:v1.0
    sha256:048bcf083eb80925b246e161ed58dd03a3c071ebb6b31961034dacbc8f63efbd
    1
    2
    导入成功之后,会在控制台中输出摘要信息。此时我们使用docker image ls命令来查看当前宿主机上的镜像列表:

    root@ubuntu:~# docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    test/ubuntu v1.0 048bcf083eb8 7 seconds ago 85.9MB
    ubuntu 16.04 5e8b97a2a082 3 weeks ago 114MB
    1
    2
    3
    4
    我们刚刚导入生成的镜像已经显示在列表之中了!此外,我们还可以通过指定URL或者目录来导入,如下:

    docker import http://example.com/exampleimage.tgz example/imagerepo
    1
    导入本地容器快照,我们还可以使用docker load命令!

    删除容器
    我们可以使用docker container rm命令来删除一个处于终止状态的容器,例如:

    root@ubuntu:~# docker container rm ea0cda7fe8d7
    Error response from daemon: You cannot remove a running container ea0cda7fe8d75b309e6f911a1acb9f062945a58661e8b389979d6ea7960626df. Stop the container before attempting removal or force remove
    1
    2
    此时,报了一个错误,说此容器正在运行,删除容器须先终止掉它!我们使用docker container stop命令来终止此容器,然后再删除它:

    root@ubuntu:~# docker container stop ea0cda7fe8d7
    ea0cda7fe8d7
    root@ubuntu:~# docker container rm ea0cda7fe8d7
    ea0cda7fe8d7
    1
    2
    3
    4
    在上面,我们知道可以使用docker container ls -a来查看当前宿主机上存在的所有容器,包括正在运行和已经停止的容器。如果当前宿主机上存在很多已经停止的容器,一个一个删除未免太过麻烦,此时我们可以使用docker container prune命令来清除所有处于终止状态的容器:

    root@ubuntu:~# docker container prune
    1
    更多命令
    命令 说明
    docker container ls 列出正在运行的容器
    docker ps 列出正在运行的容器
    docker container ls -a 列出所有的容器
    docker ps -a 列出所有的容器
    docker container start 启动容器
    docker start 启动容器
    docker container stop 停止容器
    docker stop 停止容器
    docker container restart 重启容器
    docker restart 重启容器
    docker container rm 删除容器
    docker rm 删除容器
    docker container logs 打印容器的标准输出
    docker logs 打印容器的标准输出
    分别传入--help参数查看它们的用法,发现docker container ls命令与docker ps命令效果是一样的!docker container start与docker start效果是一样的!docker container stop与docker stop效果是一样的!docker container restart与docker restart效果是一样的!docker container rm与docker rm效果是一样的!docker container logs与docker logs效果是一样的!
    ————————————————
    版权声明:本文为CSDN博主「奔跑的豆子_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/y472360651/article/details/81289108

    Docker exec 命令

    docker exec :在运行的容器中执行命令

    语法

    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    OPTIONS说明:

    • -d :分离模式: 在后台运行

    • -i :即使没有附加也保持STDIN 打开

    • -t :分配一个伪终端

    实例

    在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:

    runoob@runoob:~$ docker exec -it mynginx /bin/sh /root/runoob.sh
    http://www.runoob.com/

    在容器 mynginx 中开启一个交互模式的终端:

    runoob@runoob:~$ docker exec -i -t  mynginx /bin/bash
    root@b1a0703e41e7:/#

    也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。

    查看已经在运行的容器 ID:

    # docker ps -a 
    ...
    9df70f9a0714        openjdk             "/usercode/script.sh…" 
    ...

    第一列的 9df70f9a0714 就是容器 ID。

    通过 exec 命令对指定的容器执行 bash:

    # docker exec -it 9df70f9a0714 /bin/bash
  • 相关阅读:
    简单的多重背包
    完美子图
    活动投票
    人品问题
    售票系统
    最短路径
    优美值
    前端-常用函数记录-持续更新
    前端-单点登录中cookie中domain的思考
    大白话说GIT常用操作,常用指令git操作大全
  • 原文地址:https://www.cnblogs.com/heroinss/p/11592027.html
Copyright © 2020-2023  润新知