docker 常用命令
Posted hansjorn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 常用命令相关的知识,希望对你有一定的参考价值。
https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/expose.html docker practice 资料 ----------------------------------------------- 如果使用NVIDIA的GPU,需要使用nvidia-docker来 创建及运行对应的容器 ----------------------------------------------- sudo systemctl start docker 启动docker sudo docker run hello-world 测试是否安装成功 docker system df 查看镜像、容器、数据卷所占用的空间 docker image ls -a docker pull ubuntu:16.04 下载镜像 docker image ls 列出已经下载下来的镜像 docker images ps -a ,容器exited状态下,可以通过此命令查看对应的ID docker image ls -f dangling=true 查看虚悬镜像 docker image prune 删除虚悬镜像 docker image rm 镜像ID 删除镜像 使用docker container ls 列出对应的容器,下次,直接可以使用docker attach containerID 直接进入 ---------------------------------------------- 从image中启动container,操作容器,进入容器: ---------------------------------------------- 1,docker run -dit -P --name SannyTest --volume /home/ubuntu/github:/workspace/github ImageName docker run -dit -P ImageName ,通过ImageName启动创建容器,-P,会自动随机映射 EXPOSE 的端口 --volume 会加载主机的绝对路径/home/ubuntu/github目录到容器的/workspace/github目录,也可以挂载对应的文件,这种数据卷独立于容器,Docker 不会在容器被删除后 自动删除,所以在删除对应的容器的时候,添加上volume参数,也删除对应的卷,不然很占用无用的空间docker volume rm containerID,但是源目录一定得是绝对路径 2,docker container ls 查看刚才开启的容器, 3,docker exec -it ContainerID bash 运行容器,推荐使用exec方式,因为如果从这个 stdin 中 exit,不会导致容器的停止 只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。如果使用 -d 参数时,容器启动后会进入后台, 4,docker attach containerID 也可以进入对应的容器,但是在stdin中exit后,容器会停止,慎用,5,docker inspect SannyTest 查看容器的相关 5,临时退出一个正在交互的容器的终端,而不终止它: 按 Ctrl-p Ctrl-q 。如果按 Ctrl-c 往往会让容器内应用进程终止,进而会终止容器 -------------------------------------------- 使用 Dockerfile 定制镜像: -------------------------------------------- 使用Dockerfile构建镜像:在Dockerfile所在的目录运行“docker build -t sanny:v1 ." Dockerfile文件书写例如: FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 #继承的父容器 MAINTAINER sanny #作者 RUN apt-get update && apt-get install -y --no-install-recommends build-essential cmake git wget libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-compiler python-dev python-numpy python-pip python-setuptools python-scipy && rm -rf /var/lib/apt/lists/* && echo "root:root" | chpasswd #设置密码 EXPOSE 22 #EXPOSE 声明端口,详见docker_practice P90 # 格式为 EXPOSE <端口1> [<端口2>...]。 #在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口, # 以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口 CMD /etc/init.d/nginx start #启动服务 WORKDIR /workspace -------------------------------------------------- 将新的container修改的东西,重新commit到对应的image 虽然新制作了对应的image,但是上一层的image没法删除 -------------------------------------------------- 1,[[email protected] ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96621f37028c 0ef2e08ed3fa "/bin/bash" 3 minutes ago Up 3 minutes thirsty_torvalds 2,然后:docker commit 96621f37028c 0ef2e08ed3fa 3,docker ps -a 查看新的image
以上是关于docker 常用命令的主要内容,如果未能解决你的问题,请参考以下文章
Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段