1 常用命令
1.1.1 帮助命令
1.1.1.1 查看帮助
docker --help
1.1.1.2 查看某个命令的帮助
docker 命令 --help
例如:
docker run --help
1.1.2 镜像操作
1.1.2.1 查看当前所有镜像
docker images
1.1.2.2 从官网下载镜像
docker pull 镜像名:标签
PS:在公司内网,只有使用董修岗的香港代理才能下载
1.1.2.3 删除镜像
docker rmi 镜像名:标签
例如:
docker rmi caffe/dev:2017-03-02
1.1.2.4 保存镜像
docker commit容器id或容器名 镜像名:标签
例如:
docker commit 675 ubuntu14.04_dev:2017-03-07
该命令可通过id以675开头的容器生成一个新的镜像,新镜像为名称为”ubuntu14.04_dev”,tag为”2017-03-07”
1.1.2.5 迁移镜像
导出:
sudo docker save 2e5cc1828e9d > /home/data/dusf/mxnetdocker.tar
导入:
进入镜像所在目录:
sudo docker load < /home/dusf/ mxnetdocker.tar
1.1.3 容器操作
1.1.3.1 从镜像创建容器
docker run 参数 镜像名:标签 运行命令
常用参数
u --net="host" 将网络设置为主机模式,可以通过公司代理上网
u -d 后台运行
u -it 将容器绑定到当前tty上,即可以在当前终端上直接操作容器
u -p 端口映射
u --name 为新建的容器指定名称
例如
docker run --name=”fr_server” -d -p 12999:80 -p12998:22 ubuntu12/fr_deepid_server /bin/sh -C "/home/run.sh"
从镜像” ubuntu12/fr_deepid_server”启动一个容器,并将该容器命名为” fr_server”,将容器内部的12999和12998分别映射为物理机的80和22端口.启动该容器后,立即在容器内部运行命令”/bin/bash”,该命令的参数为-C “/home/run.sh”.既运行脚本/home/run.sh
PS:
1) 一般我做的镜像都会创建一个/home/run.sh脚本,启动容器需运行的服务器都可以通过该脚本运行,一般启动的服务器有apache2,mysql和ssh
2) 若指定了--net=”host”参数,则无法映射端口,两者是冲突的
3) 若要在容器内部上外网,则必须以--net=”host”模式启动容器
4) 若需系统支持cuda的容器,则必须使用nvidia-docker命令来启动。其它参数与docker一致。
例如:
nvidia-docker run -d -p 9998:22 -p 9999:80 cuda:2017-01-18 /bin/sh -C /home/run.sh"
1.1.3.2 启动时mount目录
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
nvidia-docker run -d --name="ldz_AddZip" -p 20999:80 -p 20998:22 -p 20997:3306 -v /mnt/ldz:/mnt 0e0113e39836 /bin/bash -C "/home/run.sh"
sudo nvidia-docker run -d --name="dusf_test1n" -p 49999:80 -p 49998:22 -v /home/data/dusf/face_data:/mnt 39bda6450eb3 /bin/bash -C "/home/run.sh"
1.1.3.3 查看当前所有容器
docker ps –a
1.1.3.4 运行容器
docker start 容器id或容器名
一般先使用docker ps -a命令查看容器id或容器名,然后再使用docker rm命令来删除容器。
使用容器id时,不需输入完整的id,只需输入开头几个字母即可。
1.1.3.5 停止运行容器
docker stop容器id或容器名
在删除容器前,需要先停止运行容器。
1.1.3.6 删除容器
docker rm 容器id或容器名
1.1.3.7 在容器内部运行命令
docker exec 参数 容器id或容器名 运行命令
常用参数
u -d 后台运行
u -it 将容器绑定到当前tty上,即可以在当前终端上直接操作容器
例如
docker exec -it 675 /bin/bash
该命令可以直接进入到容器内部进行操作,想结束操作,可以直接输入命令exit
2 常用功能的实现方式
2.1 实现在容器内部上网
首先需为docker配置代理,在物理机上进行如下操作
1 修改/etc/default/docker文件,添加以下内容
export http_proxy="http://proxynj.zte.com.cn:80/"
export https_proxy="http://proxynj.zte.com.cn:80/"
2 重新启动docker服务,执行命令
service docker restart
然后以host模式,启动容器 例如:
docker run -t -i --net="host" ubuntu:12.04 /bin/bash
然后在容器内部,输入以下命令,配置代理
export http_proxy="http://proxynj.zte.com.cn:80"
export https_proxy="http://proxynj.zte.com.cn:80"
对于一个已经在运行且配置了端口映射的容器A,建议按照以下步骤进行操作
1 通过docker commit命令,通过容器A生产一个新的镜像A
2 以net=host模式,从镜像A生成一个新容器B
3 在容器B内配置网络代理,进行需要联网的操作,比如安装新软件
4 联网操作完成后,将容器B生成新的镜像B
5 从镜像B中生成一个新的容器C,并指定端口映射。
浙公网安备 33010602011771号