zoukankan      html  css  js  c++  java
  • 【Docker】容器操作(转)

    来自:https://www.cnblogs.com/zydev/p/5803461.html

    列出主机上的容器

    列出正在运行的容器:            docker ps

    列出所有容器:               docker ps -a 

    列出最近使用的容器,包括没有运行的:    docker ps -l

    仅列出容器的ID,不包括没有运行的:        docker ps q

    创建容器

    参数:

    --name  指定容器的名字

    --rm      容器运行完毕会自动删除

    -i -t       创建一个提供交互式shell的容器。

    -d         在后台运行容器,并且打印出容器的ID。

    创建交互式容器

    [root@wls12c ~]$ docker run --name  weblogic -i -t centos /bin/bash
    [root@35e3b0fa9dea /]# exit
    exit

    对于交互式容器,当退出shell后,容器会关闭。 后面可以通过命令重新启动容器。

    创建守护式容器

    这种容器指容器可以长期一直运行,没有交互式会话,非常适合容器中运行后台应用程序和服务(如数据库服务、web服务器等)。

    [root@wls12c ~]$ docker run -d centos /bin/bash -c  "while true;do echo hello docker;sleep 1;done" 
    af2e15753ec8e27f5a7daad6881cd23c9e098330e9be66920e78e07e8844ac8c

    启动和停止容器

    docker start/stop/restart continer id/name

    docker -t 可以指定时间停止容器,默认是10s

    强制停止容器

    docker kill continer id/name

    附着到一个容器上

    docker attach continer id/name

    当重新启动容器时,会沿用创建容器(docker run)命令时指定的参数来运行,可能需要按回车才进入。

    这时就已经相当于在容器内部了的shell操作了。如果操作过程中,退出了shell。容器也会随之停止。

    复制代码
    [root@wls12c ~]$ docker run -i -t centos /bin/bash
    [root@cf9b70252ba5 /]# exit
    exit
    [root@wls12c ~]$ docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    cf9b70252ba5        centos              "/bin/bash"         22 seconds ago      Exited (0) 11 seconds ago                       happy_bohr          
    [root@wls12c ~]$ docker start cf9
    cf9
    [root@wls12c ~]$ docker attach cf9
    [root@cf9b70252ba5 /]# 
    复制代码

    在运行的容器中执行命令

    复制代码
    [root@wls12c ~]$ docker exec -t -i af2 /bin/bash
    [root@af2e15753ec8 /]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 03:27 ?        00:00:00 /bin/bash -c while true;do echo hello docker;sleep
    root        33     0  0 03:28 ?        00:00:00 /bin/bash
    root        54    33 10 03:28 ?        00:00:00 ps -ef
    root        55     1  0 03:28 ?        00:00:00 sleep 1
    复制代码

    可以通过docker exec命令在容器内部额外启动新进程,退出容器,并不会停止容器。

    查看容器的详细信息

    查看容器的运行时后台输出信息

    docker logs continer id/name

    复制代码
    [root@wls12c ~]$ docker logs cf9
    [root@cf9b70252ba5 /]# exit
    exit
    [root@cf9b70252ba5 /]# exit
    exit
    [root@cf9b70252ba5 /]# 
    [root@cf9b70252ba5 /]# exit
    exit
    [root@wls12c ~]$ docker logs af2
    hello docker
    hello docker
    hello docker
    复制代码

    利用docker inspect 命令可以查看容器更多的信息。 如ip地址等,这对守护容器还是很有意义的。

     View Code

    删除已经停止运行的容器

    [root@wls12c ~]$ docker  stop af2
    af2
    [root@wls12c ~]$ docker rm af2
    af2

    一次删除所有停止的容器

    [root@wls12c ~]$ docker rm $(docker ps -a -q)
    

    查看容器内的改变信息

    创建一个容器,会在容器的对应的镜像上增加一个可写层,镜像部分是只读的。通过 diff命令可以看出改变的信息。如:

    复制代码
    [root@wls12c ~]$ docker run -i -t centos /bin/bash
    [root@224de7986c5f /]# touch demo.ext
    [root@224de7986c5f /]# echo hello docker >demo.ext 
    [root@224de7986c5f /]# rm -rf anaconda-post.log 
    [root@224de7986c5f /]# exit
    exit
    [root@wls12c ~]$ docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    224de7986c5f        centos              "/bin/bash"         40 seconds ago      Exited (0) 3 seconds ago                       desperate_curie     
    [root@wls12c ~]$ docker diff 224d
    D /anaconda-post.log
    A /demo.ext
    C /root
    A /root/.bash_history
    复制代码

    说明:每行代表一个变动的文件或目录。其中 A 表示新增、C表示被修改、D表示被删除

    主机和容器之间的文件拷贝

    容器--->主机

    复制代码
    [root@wls12c ~]$ docker exec  -t -i 9f bin/bash
    [root@9f49397623ad /]# cat demo.txt 
    hello
    [root@9f49397623ad /]# exit
    exit
    [root@wls12c ~]$ docker cp 9f:/demo.txt /test [root@wls12c ~]$ cat /test/demo.txt hello
    复制代码

    主机-->容器

    [root@wls12c ~]$  cp ~/1.txt  /var/lib/docker/aufs/mnt/9f49397623ade7dfd2beb4d84454cbdb9878a4b22a2bab2e8b5db72bcffe60a0/test
    
    [root@wls12c ~]$ docker exec   -t -i 9f   /bin/bash
    [root@9f49397623ad /]# ls /test
    1.txt

    重命名容器

    [root@wls12c ~]$ docker rename stoic_meitner demo
  • 相关阅读:
    matplotlib基础汇总_04
    【C语言】输入一个三位数,逆序输出
    利用 Termux 配合 ksweb 进行内网穿透
    【安卓开发】AndroidStudio项目提交到github最详细步骤
    【安卓开发】启动另一个 Activity
    【安卓开发】AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT
    【安卓开发】按钮点击事件
    【Python】我的第一个EXE程序
    【Python】pyinstaller安装失败的解决办法
    OI生涯回忆录(未完毕)
  • 原文地址:https://www.cnblogs.com/defineconst/p/9990611.html
Copyright © 2011-2022 走看看