Docker-Windows常用命令
2020-04-19
参考链接:Docker初识
下载安装
安装完成后,若需要更改默认镜像位置,在设置里更改。更改设置中的配置,都需要重启,很费事。
安装后,可以运行一下hello-world这个仓库,检查一下是否成功。
docker pull hello-world
docker run hello-world
配置阿里云镜像加速
国内访问Docker的速度慢,有两种解决方案:配置代理或者使用阿里云的镜像。阿里云的速度更有保证。
在阿里云的控制台,搜索容器镜像服务,然后在镜像中心--镜像加速器。复制一下我的加速器网址,粘贴到"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"], 即可。
检查加速器配置是否生效,docker info,如果从结果中看到了Registry Mirrors: https://xxxx,说明配置成功。
安装Ubuntu镜像
我们从Doker Hub获取镜像。
1. docker search
先搜索Ubuntu镜像。docker search ubuntu。返回的第一个就是Ubuntu的官方镜像。
2. docker pull
docker pull [选项] ['Docker Registry'地址 [:端口号] /] 镜像名 [:标签]
地址的格式一般是<域名/IP>[:端口号]。默认地址是 Docker Hub,但我们已经将其修改为阿里云的加速器。
docker pull training/webapp : python的app
docker pull busybox :是一个集成了三百多个最常用Linux命令和工具的软件,简化的Linux系统
docker pull ubuntu 即可将镜像拉到本地。
3. docker image
使用 docker image ls 查看所有本地镜像;
删除镜像docker image rm xx/xx即可
查看容器状态
docker ps只返回正在运行的容器。
docker ps -a 查看所有容器(运行&没有运行)
启动容器
- 基于镜像(image)新建一个容器并启动,
- 将在终止状态(stopped)的容器重新启动。
方式一:docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND: 容器启动后进入容器中要执行的命令.
OPTIONS(常用选项)
-d:让Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下-t:选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上-i:则让容器的标准输入保持打开。--name:为容器命名-v:创建数据卷,就是主机和docker之间的映射关系。-p:绑定端口
举例1:docker run -p 8000:5000 –-name web training/webapp
-p:绑定本地8000端口,映射到容器的5000端口。也可以绑定多个端口。
新建了一个名为web,基于training/webapp镜像的容器。
在本地浏览器中,打开localhost:8000即可查看输出。
举例2:后台运行-d
docker run –d –p 8000:5000 training/webapp
举例3:交互运行
启动一个 bash 终端,允许用户进行交互。
docker run -t -i CONTAINER [CONTAINER...] /bin/bash
比如 docker run -t -i centos /bin/bash
方式二:(1)docker stop
通过 docker ps可得到CONTAINER ID,直接使用这个ID即可。
docker stop 10fc ,只用ID的一部分也可以。
(2)docker start
启动一个停止的容器,和stop命令一样,可以使用ID的一部分即可。
注意:这里只能启动!不能打开交互式bash
(3)docker exec -i -t CONTAINER /bin/bash
打开交互式窗口。针对已经启动,正在后台运行的容器。这是条很实用的命令。
重启和删除
docker restart
重启容器。
docker rm
删除容器前,请先关闭容器
查看日志
docker logs [OPTIONS] CONTAINER
options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
主机和容器间文件互传
docker cp CONTAINER:/home/user d:/xxx
这是从容器向主机拷贝文件。容器的路径写法一定要加上ID。
如果把顺序反过来,就是主机向容器拷贝文件。
不仅能拷贝文件,文件夹也可以
数据卷
相当于把主机上的盘挂载到容器上,所以有以下优点:
- 数据卷 可以在容器之间共享和重用
- 对 数据卷 的修改会立马生效
- 对 数据卷 的更新,不会影响镜像
- 数据卷 默认会一直存在,即使容器被删除
- 如果在本机修改代码,在容器中也能看到。方便将本地主机的代码运行在容器中。
设置方法如下:
- 在设置中打开
Shared Drives - 设置本地和容器的挂载目录。
docker run -v f:/docker:/opt/docker ubuntu
主机挂载点是f:/docker,容器挂载点是/opt/docker
使用阿里云的镜像
我们以配置PHP开发环境为例
下载阿里云的lamp镜像
docker pull registry.cn-hangzhou.aliyuncs.com/itsource/centos-lamp:[镜像版本号]
registry.cn-hangzhou.aliyuns.com/itsource:Docker Registry地址centos-lamp:镜像名- 镜像版本号就是TAG(标签)的值
创建lamp容器并运行
docker run -itd -p 80:80 -p 3306:3306 --name lamp --privileged=true -v D:/www/default:/data/wwwroot/default ec258725b54b /usr/sbin/init
-p分配了两个端口--privileged=true让container内的root拥有真正的root权限ec25...这是pull下来的镜像的ID
制作本地镜像
docker commit -a "author-name" -m "message" ID Name:版本
docker commit有些选项:
- -a :提交的镜像作者;
- -m :提交时的说明文字;
- -p :在commit时,将容器暂停。
导出
docker save ID -o d:/xxx/centos-lamp-v2.tar
加载本地镜像文件
docker load -i d:/xxx/centos-lamp-v2.tar
