1、Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。[1]
2、镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
# 载入开源镜像,比如ubuntu 1、docker pull ubuntu 2、docker run ubuntu:15.10 /bin/echo "Hello world" 参数解析: - docker: Docker的二进制执行文件 - run: 与前面的docker组合来运行一个容器 - ubuntu:15.10: 指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker就会从镜像仓库Docker Hub中下载公共镜像,15.10是版本信息。 - /bin/echo "Hello world": 在启动容器时同步执行的命令 3、docker run -i -t ubuntu:15.10 /bin/bash 参数解析: - -t: 在新容器内指定一个终端 - -i: 允许你和容器内的标准输入(STDIN)进行交互 - -i和-t可以简写成-it镜像和容器的使用
# 列出本地主机上的所有镜像 1、docker images # 使用镜像启动容器 2、docker run -it image_name /bin/bash 执行完上面这条命令后会进入一个终端,输入exit回车或者ctrl+D可以退出容器 # 查看正在运行的容器信息(ConTAINER ID是容器的唯一ID) 3、docker ps # 查看所有已创建的容器信息,包括已创建的和已停止的 4、docker ps -a # 停止特定容器的运行 5、docker stop ConTAINER ID # 运行已停止的特定容器 6、docker start ConTAINER ID # 重启特定容器 7、docker restart ConTAINER ID 8、docker run -it -d ubuntu:15.10 /bin/bash 参数解析: - -d: 默认不会进入容器,容器在后台运行 - -it和-d可以简写成-itd 9、在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入: - docker attach ConTAINER ID:用这个命令进入后再退出容器,会导致容器的停止 - docker exec ConTAINER ID:推荐使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。 # 导出容器快照到本地文件image_name.tar 10、docker export ConTAINER ID > ./image_name.tar # 从容器快照文件image_name.tar中再导入为镜像 11、cat ./image_name.tar | docker import - image_name # 删除容器 12、docker rm -f ConTAINER ID # 删除镜像 13、docker rmi image_name # 清除所有停止状态的容器 14、docker container prune # 查看容器端口的映射情况 15、docker port ConTAINER ID # docker挂载本地目录[1] # 如果container_dir不存在,会自动在容器里创建目录,image表示镜像 16、docker run -it -v /localhost_dir:/container_dir image_name /bin/bash 参数解析: - -v:挂载主机的目录到容器的目录上 # docker挂载多个本地目录 17、docker run -it --name container_name -v /localhost_dir1:/container_dir1 -v /localhost_dir2:/container_dir2 image_name /bin/bash # docker指定端口映射 18、docker run -it -p 10023:22 -v /data1:/data1 --name container_name image_name /bin/bash 参数解析: - -p:端口映射,一般是主机上某个端口号映射到22端口(ssh的端口号) # 在docker中使用NVIDIA显卡 19、docker run -it --gpus all image_name /bin/bash创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用 Dockerfile 指令来创建一个新的镜像
1、从已经创建的容器中更新镜像,并且提交这个镜像
# 在运行的容器内更新 1、apt-get update 2、exit退出 # 提交容器副本 3、docker commit -m="has update" -a="Jordan"image_name:v2 参数解析: - -m: 提价的描述信息 - -a: 指定镜像作者
2、使用 Dockerfile 指令来创建一个新的镜像
# 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。 docker build -t image_name . 参数解析: - -t: 指定要创建的目标镜像名 - .: Dockerfile文件所在目录,可以指定Dockerfile的绝对路径参考资料
[1] Docker菜鸟教程
[2] 详解Docker挂载本地目录及实现文件共享



