Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker安装:
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
修改镜像源:
在/etc/docker/daemon.json 文件中新增一下内容, 如果不存在,在创建此文件
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
,然后重启 docker
systemctl restart docker
就可以了。(也可以选择其他加速源,如阿里,daocloud)
ps: <> 必填 [] 选填
docker下载镜像 docker pull [ip:port/]镜像名[:标签]
docker查看镜像 docker images
docker运行容器 docker run [参数] 容器id 例: docker run -p 8080:8080 s1dafad
ps: docker run -p(指定端口) 宿主机端口:容器端口 容器id
ps: -i 交互式操作 -t 终端 --rm 容器退出后将其删除,默认不会将其删除 -d 守护态运行 --name 指定容器名 -p指定端口
-v 挂载数据卷 ( -v 宿主机数据卷地址:容器数据卷地址)
docker以交互式操作启动容器:
docker run -it --rm \
ubuntu:16.04 \
bash
docker以交互的方式进入容器: docker exec -it 容器id bash(容器已启动的情况下)
docker启动一个已存在的容器 docker start 容器id
docker终止容器 docker stop 容器id
docker查看正在运行的容器 docker ps
docker查看所有的容器 docker ps -a
docker删除容器 docker rm 容器id -f 强制删除
docker删除镜像 docker rmi 镜像id
docker删除虚悬镜像 docker images prune (build 失败 和 pull 都可能出现虚悬镜像)
docker删除所有终止镜像 docker container prune
docker构建镜像:
docker build -t 镜像名[:标签名] 镜像构建上下文目录
例: docker build -t nginx:v3 . .表示当前目录
docker查看容器日志 docker -f logs 容器名/容器id -f 跟踪实时日志
docker从容器中复制文件 docker cp 容器名:文件地址 宿主机地址
Dockerfile 定制镜像:
指定基础镜像
FROM nginx
指定工作目录
WORKDIR /usr/share/nginx/
运行 命令
ps: docker命令每一次 RUN 命令都会创建一个容器(分层存储),所以不能用 cd /usr/share/nginx/ 这样的 命令来切换目录,
如果需要切换工作目录,需要先使用 WORKDIR /usr/share/nginx/ 命令,记得最后,要将工作目录切换为本来的工作目录
1.shell命令
RUN <shell命令>
拷贝命令
1.shell 命令
COPY 相对路径文件位置(源文件) 镜像中文件位置 例: COPY index.html /usr/share/nginx/html/
2.exec命令
COPY ["<源路径1>",... "<目标路径>"]
高级 拷贝 命令(源文件可以是一个url,如果源文件是tar.gz,gizp,bzip2,xz格式的压缩包,ADD会自动解压缩)
ADD 源文件 镜像中文件位置
暴露端口(容器端口,当使用 docker run -P nginx 时,容器端口为80,宿主机端口为随机(-P 为随机端口 -p 指定端口))
EXPOSE 80
指定默认程序主进程的命令
1.shell
CMD <shell命令>
2.exec 命令
CMD ["可执行文件", "参数1", "参数2"...]
设置环境变量
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...