Docker简单命令

这是一个完整的docker run例子,感受下:

docker run -itd --name ner_rpc -p 9000:9000 -v /data/nlp_code:/mnt python_base:v1.3.10 sh -c 'cd /mnt/ner && python server.py 0.0.0.0 9000 10'

简单解释下:

  1. -ti表示以交互模式打开
  2. -d表示后台运行容器
  3. 容器被起名为ner_rpc
  4. 将容器的9000端口映射为主机的9000端口
  5. 将主机/data/nlp_code目录挂在到容器的/mnt目录下
  6. 镜像名为python_base,tag为v1.3.10crf
  7. 打开容器后,执行两个命令:进入ner目录;启动ner rpc服务。

1. 从Docker image创建一个容器

docker run -tid --name <container_name> <repo_name>:<tag> /bin/bash

解释

  • 选项-d表示后台运行容器,并打印容器id。
  • /bin/bash表示容器启动后,进入bash。这样,你才能进入容器内部,像使用虚拟机那样执行一些命令。
  • --name选项可以给你的容器起个名字。(这一步最好需要,如果你不想后面使用容器时一直查容器id的话)

2. 展示正在运行的容器

docker ps

如果要展示所有容器:

docker ps -a

3. 查看所有image

docker images

4. 保存当前容器状态为一个新的image

docker commit <container_id/container_name> <repo_name>:<tag>

5. 打开被终止的容器

docker start <container_id/container_name>

这种方式打开容器只会在后台打开,并不会直接进入容器;你可以使用-i选项直接进入容器:

docker start -i <container_id/container_name>

6. 进入运行中的容器

docker attach <container_id/container_name>

重新启动一个shell进入容器

docker exec -ti <container_name/id> /bin/bash

7. 删除容器

docker rm <container_id/container_name>

8. 删除image

docker rmi <image_id>

你可以通过docker images查看image_id

9. 将docker下的文件或文件夹复制到主机

docker cp <container_id>:<file_path_in_docker> <path_in_host>

10. 将主机的文件复制到docker

  1. Get container name or short container id : docker ps
  2. Get full container id:

    docker inspect -f '{{.Id}}' SHORT_CONTAINER_ID-or-CONTAINER_NAME`
    
  3. copy file :

    cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
    

    (网上都这么说,但我的ubuntu下/var/lib/docker/aufs/mnt/路径下的文件夹名并不是容器完整ID名,是什么我也不知道)

11. 挂载本地文件夹到docker

docker run -v <local_dir>:/mnt -tid <repo_name>:<tag> /bin/bash

也就是说,挂载只能在从image重新创建一个容器时进行。

12. 端口映射

可以将docker的内部端口映射为主机的端口,使用-p选项

docker run -p <local_port1>:<container_port1> -p <local_port2>:<container_port2> -tid <repo_name>:<tag> /bin/bash

13. 创建容器时执行命令

docker run -tid <repo_name>:<tag> sh -c 'cmd1 && cmd2'

14. 镜像文件导出、加载

(1)从容器导出镜像文件
docker export <container_id> > test.tar

注意:export的镜像只能使用import来加载

(2)加载export的镜像
docker import test.tar <img_name:tag>
(3)从image导出镜像文件
docker save <image_name:tag> > test.tar

注意:

  • save的镜像只能使用load来加载
  • save可以使用image_id,但是如果这样,你load之后的image是没有name、tag的。
(4)加载save的镜像
docker load --input test.tar

15. 传递环境变量

docker run -e "key=value"

16. 退出容器

Ctrl + p + q

17. 为镜像rename、打tag

docker tag <image_id> <image_name>:<tag>



Ref
http://www.procedurego.com/article/66611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值