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