安装Docker
Windows安装
准备工作
- 查看本机系统是否是win10(WSL仅支持win10),且版本要大于1770
- 控制面板-》程序-》启用或关闭Windows功能-》勾选“适用于Linux的Windows子系统”项
- 打开任务管理器-》点击性能-》查看cpu虚拟化是都已开启。如果没有开启请先去开启(在bios页面)
- 下载 : docker for windows
- 下载ubantu。(在microsoft store搜索下载即可)
- 使用管理员打开powerShell 然后执行
wsl --update
- 打开阿里云进入容器镜像,点击镜像加速。复制加速链接
- 打开docker 进入设置 在docker engine中的json中加入一项
"registry-mirrors": ["你复制的加速链接"]
- 然后打开cmd就可以使用docker命令啦,输入bash可以进入linux系统。
Docker 基础命令
- 运行docker
systemctl restart docker
- 查看docker服务信息
docker info
- 查看dockterfile干了些啥
docker histoer image_name:version
镜像管理
- 搜索镜像是否存在
docker search image_name
- 下载镜像
docker pull image_name
docker pull image_name:version
- 查看本地有哪些镜像
docker image ls
docker images
docker images nginx
docker images centos:7.8.2003
docker images -q // 只列出id
docker images --format “{{.ID}}–{{.Repository}}” // 格式化输出
docker images --format “table {{.ID}}\t{{.Repository}}\t” // 以表格样式输出
- 查看镜像的服务信息
docker image inspect 镜像id
- 删除本地镜像
docker rmi image_id
docker rm `docker images -aq` // 批量删除镜像,慎用
- 修改镜像名字
docker tag 镜像id name
-
运行镜像
-d: 后台运行容器
-p 80:80: 端口映射
-P :随机端口映射,会找到宿主一个闲置的端口
-i :开启一个交互式命令操作
-t :开启一个终端
-rm :容器挂了会删除后台记录
-restart=always :自动重启
-name :命名容器
bash 进入容器的命令,可以是其他命令。
运行镜像
docker run -d -p 80:80 nginx
进入容器内部
docker run -it 容器id bash
- 导出镜像
docker image seve image_name:vsersion > /opt/imahe_name.version.tar
- 导入镜像
docker load < centos7.9.2009.tar
容器管理
- 查看运行中的容器
docker ps
docker ps -a // 查看哪些容器运行过
- 查看容器中的进程信息
docker top 容器id
- 查看容器资源信息
docker stats 容器id
- 查看容器详细信息,用于高级调试
docker inspect 容器id
docker inspect --format “{{.NetworkSettings.IPAddress}}” 容器id
- 删除容器
-f 强制删除
docker rm 容器id
docker rm `docker ps -aq` // 批量删除容器记录,慎用
- 停止容器运行
docker stop 容器id
- 开始容器运行
docker start 容器id
开始已经停止的容器并进入
docker start -ia 容器id
- 进入容器内部
docker start 容器id
docker attach 容器id
- 进入到运行的容器内部
docker exec -it 容器id bash
- 查看容器运行日志
docker logs 容器id
docker logs -f 容器id // 刷新日志
docker logs 容器id | tail -5
- 拷贝本地文件到容器
docker cp 本地地址/readme.md 容器id:/home/zzh/
- 容器生成新的镜像
docker commit 容器id image_name
- 推送容器到dockerhub
docker tag image1 uid/image:1.0
docker push uid/image:1.0
docker tag image1 uid/image
docker push uid/image
## 发布下一个版本的时候
docker tag image2 uid/image:2.0
docker push uid/image:2.0
docker tag image2 uid/image
docker push uid/image
Dockerfile 命令
FROM 指定镜像(没有就下载)
MAINTAINER 指定作者信息
RUN 执行的linux命令(比如下载命令,注意要非交互式)
ADD 拷贝文件会自动解压
WORKDIR 设置当前的工作目录(就是进入容器的目录)
VOLUME 设置卷,挂载主机目录
EXPOSE 指定对外接口
CMD 容器启动后要做的事情 (docker run 的时候指令会覆盖)
COPY 单纯拷贝文件
ENV 环境变量
ARG 设置环境变量
USER 设置进入容器后默认的用户
ENTRYPOINT 容器启动后运行的命令(docker run 传命令参数)
-使用Dockerfile 创建镜像
cd Dockerfile 的目录
docker bulid .
docker -t “myhub/image_name” .
- COPY
拷贝web.py 到容器home目录下
COPY web.py /home
拷贝image开头的文件 和tmp下cc开头txt结尾的文件到容器home下
COPY image* /tmp/cc?.txt. /home
- ADD
ADD python.3.8.agz /home
ADD https://python3.8…(url) /home
RUN …
- CMD 和 ENTRYPOINT
CMD [“ping”,“www.baidu.com”]
ENTRYPOINT [“ping”,“www.baidu.com”]
区别就是cmd在docker run的时候后边的指令会覆盖cmd的指令
而entrypoint则会吧docker run 后边的命令作为参数 运行
- ARG 和 ENV
ENV VERSION=3.0
RUN pip install django–$VERSION
区别就是ARG在构建镜像的时候有用,容器运行就消失了
而ENV在容器运行后还会存在