设为首页 收藏本站
查看: 1292|回复: 0

[经验分享] 操作docker容器

[复制链接]

尚未签到

发表于 2019-2-21 11:19:41 | 显示全部楼层 |阅读模式
  创建容器
docker create  常用参数:
  --name:为容器分配一个名字
  -v | --volume  :为容器绑定安装一个卷,例如-v /data 会为容器创建一个/data分区出来
  例如:
# docker create -it ubuntu:latest
2434968ec612b085b4b34e93f9858fdc36fb94e2a4527966a14ef93e1a18a00f
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         3 seconds ago       Created                                      mystifying_proskuriakova  启动容器
docker start  使用docker create创建的容器处于停止状态,可以使用docker start命令启动
# docker start  mystifying_proskuriakova
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         About a minute ago   Up 3 seconds                                 mystifying_proskuriakova  停止容器
docker stop [-t|--time[=10]] [CONTAINER...]  首先向容器发送SIGTERM信号,等待超过一段时间后(默认为10秒)后,再发送SIGKILL信号来终止容器
  重启容器
docker restart  进入容器
  attach
  使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,这时候要进入容器可以使用attach或者exec或者第三方的nsenter工具等。
docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]]  CONTAINER  --detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是CTRL-p CTRL-q
  --no-stdin=true | false:是否关闭标准输入,默认是保持打开。
  --sig-proxy=true | false :是否代理收到的系统信息给应用进程,默认为true

  如:
##创建并启动一个容器 名为test
# docker run -itd --name test  ubuntu:latest      
3a4a6614acbfc820f5da3983527e3e585946f27393fab17b1ce09adb7c757206
##查看容器进程
[root@OPS01-LINTEST02 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         4 seconds ago       Up 3 seconds                            test
##连接到该容器
[root@OPS01-LINTEST02 ~]# docker attach test
root@3a4a6614acbf:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  注意:使用attach连接到容器时,如果多个窗口同时使用attach连接到同一个容器时,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作

  exec命令
  从docker1.3版本开始提供更加方便的exec命令,可以在容器内直接执行任意命令,用法为
docker exec [-d|-detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]

  •   -i, --interactive=true|false:打开标准输入接受用户输入命令,默认为false;

  •   --privileged=true|false: 是否给执行命令最高权限,默认为false
  •   -t, --tty=true|false:分配伪终端
  •   -u, --user="":执行命令的用户名或ID
  例如:
  进入到前面创建的容器中
docker exec -it test /bin/bash  在容器中执行ls命令
root@3a4a6614acbf:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr  nsenter进入容器

  1、首先安装nsenter
docker run --rm jpetazzo/nsenter cat /nsenter > /usr/local/bin/nsenter && chmod +x /usr/local/bin/nsenter  执行上面的命令,会将nsenter安装在/usr/local/bin/nsenter目录下

  2、获取容器State ID
PID=$(docker inspect --format {{.State.Pid}} )  这里是根据容器名称或者容器ID获取State ID

  例如:
PID=$(docker inspect --format {{.State.Pid}} my-nginx)
113754  3、使用nsenter连接容器
nsenter --target $PID --mount --uts --ipc --net --pid  将2、3写成脚本con_container.sh保存在/usr/local/bin目录下,方便以后使用
#!/bin/bash
PID=`docker inspect --format {{.State.Pid}} $1`
nsenter --target $PID --mount --uts --ipc --net --pid  删除容器
docker rm [-f|--force] [-l|--link] [-v|--volumes] CONTAINER [CONTAINER...]  主要支持的选项:

  •   -f, --force=false:是否强制终止并删除一个运行中的容器
  •   -l, --link=false:删除容器的连接,但保留容器
  •   -v, --volumes=false:删除容器挂载的数据卷
  默认情况下,docker rm只能删除处于终止状态的容器,如果要删除运行状态的容器,可以使用-f参数,docker会先发送SIGKILL信号给容器,终止其应用,然后删除容器
  导入导出容器
  有时候需要将容器从一个系统迁移到另一个系统,可以使用导入导出功能
  1、导出容器
  导出一个已经创建的容器到文件,不管此时容器是否处于运行状态,可以使用docker export 命令,用法:

docker export [-o|--output [=""]] CONTAINER  -o:指定导出的tar文件名

  例如:
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         41 minutes ago      Up 25 minutes                           test
# docker export -o test_for_run.tar test
# ls
test_for_run.tar  导出之后,就可以将文件上传到其他机器上,使用导入命令导入到系统中,从而实现容器的迁移
  2、导入容器
  导出的test_for_run.tar文件可以使用import命令导入变成镜像,该命令格式为:
docker import [-c --change[=[]]] [-m|--message[=MESSAGE]] file|URL|-REPOSITORY[:TAG]  用户可以通过-c,--change=[] 选项在导入的同时执行对容器进行修改的Dockerfile指令
# docker import test_for_run.tar ubuntu:v1.0      
sha256:2c82ae3a0afe67122ce5fabe397025bc19bffef5c2a6b873098567846c00cfdc
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              v1.0                2c82ae3a0afe        1 second ago        69.8MB
ubuntu              v1                  c4af03e0f787        22 hours ago        87MB
ubuntu              14.04               578c3e61a98c        7 days ago          223MB
ubuntu              latest              113a43faa138        7 days ago          81.1MB
nginx               latest              cd5239a0906a        7 days ago          109MB
centos              7                   49f7960eb7e4        8 days ago          200MB
centos              latest              49f7960eb7e4        8 days ago          200MB
centos              6                   70b5d81549ec        2 months ago        195MB  容器高级功能配置
  配置容器的DNS和主机名
  --dns=IP_ADDR:指定容器的DNS地址,默认使用和宿主机一样的DNS服务器地址
  --host HOSTNAME,-h HOSTNAME:配置容器的主机名,默认使用容器ID为主机名
  --name:配置容器名称,例如 --name webserver




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675277-1-1.html 上篇帖子: Supervisor实现Docker容器内多进程管理(一) 下篇帖子: Docker学习与实践 Ⅲ
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表