Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
一、基础操作
-
docker images 查看镜像信息列表 镜像是静态的
-
docker ps -a 查看运行中的所有容器
-
docker pull [images]:[version]从dockerhub拉取指定镜像
-
docker run -p 8000:80 -tdi --privileged [imageID] [command] 后台启动docker,并指定宿主机端口和docker映射端口。
-i:以交互模式运行容器,通常与 -t 同时使用; -d:后台运行容器,并返回容器ID; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; --privileged 容器将拥有访问主机所有设备的权限 通常情况下 [command] 填下 /bin/bash 即可。 特殊情况下,如需要在centos镜像中使用systemctl . 则应添加--privileged 并设置[command ]为 init。
-
当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:
sudo docker exec -it [containerID] /bin/bash
交互模式中,使用 ctrl+p+q退出交互, 保持运行;使用 exit命令退出并停止容器。
-
在容器非交互模式下,通过docker start/stop 命令来启动/停止已部署的容器服务。
-
docker rm [containerID] 删除容器
-
docker rmi [imageID] 删除镜像
-
docker cp [YourHostFilePath] [containerID]:[DockerPath] 将宿主机内的指定文件传输至容器内部的指定地址。
二、镜像制作
-
docker commit [containerID] [ImageName]:[Version] 将修改后的容器重新打包成镜像
-
docker commit -a “runoob.com” -m “my apache” a404c6c174a2 mymysql:v1 将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
-a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
-
docker push [ImageID] [repertory_address]提交镜像到云仓库