Docker在windows下的安装、使用(基础+中级)
2019/10/17
本文涉及最新docker安装、使用、以及自己创建镜像、推送到阿里云上。
环境:windows10
安装
进入docker官网,建议注册账户,类似github一样,也有个docker hub,管理各种镜像。
下载完成打开运行exe,按照提示进行安装。
检验:打开命令提示符cmd。docker version
出现相应的版本提示docker run hello-world
,出现类似下图说明安装完成:
修改镜像源
利用Docker自带的镜像源,现在会非常的慢,所以我们将默认镜像源改为国内的,这里我们改为阿里镜像源。
- 开启阿里云容器镜像服务,找到分配的加速器地址:
- 复制第二个框里面的内容,并打开docker-setting-Daemon,将相应的内容复制到框的里面。restart Docker。
一些基础命令
docker [OPTIONS] COMMAND
docker image ls
docker container ls
docker pull image_name:TAG
#从库中拉取指定镜像
docker run --name containerName -d image_name:TAG
#启动。 -i:交互模式 -t:分配伪终端(命令行)-d:后台运行 -p:端口访问 (6666:8080)6666:宿主机端口 8080:应用开放端口
ctrl+p+q
#quit the 交互模式,won’t stop the container
docker rm -f container_name
#删除相应container
docker attach container_id
#连接上相应container的交互界面
容器创建新镜像
docker commit -m=“description” -a=“creator” container_id/container_name image_name:TAG
#如:docker commit -m=“first commit” -a=“hehe” ubuntuuu ubuntu:16.04
详见:https://www.runoob.com/docker/docker-command-manual.html(当然了,更推荐官方网站)。
容器持久化
-
数据卷(container-host)
1.直接命令 2.Dockerfile添加:
1.docker run -it -v /宿主机绝对路径目录(created itself):/容器内目录(created itself):ro 镜像名:TAG
#ro:容器内只读,宿主机单项更改
2.volume["/dataConatiner1","/dataContainer2"]
#只能操作容器内目录,具体宿主机目录,通过docker inspect container_id
查看 -
数据卷容器(container-container)
docker run --name containerName -d image_name:TAG --volumes-from container_id
#此时,dockerfile里面dataconatiner1、2均是共享文件夹。
Dockerfile
dockerfile用来创建镜像
常用命令:
name | meaning | exp |
---|---|---|
FROM | 基础镜像 | Docker Hub中99%镜像 都是通过再base(scratch)镜像中安装和配置需要的软件构建出来 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 | MAINTAINER name<mailaddress> |
RUN | 容器构建时需要的命令 | |
EXPOSE | 启动后对外暴露的端口 | |
WORKDIR | 创建容器后,终端默认登陆进来的工作目录 | WORKDIR $MY_path |
ENV | 构建景象过程中设置环境变量 | ENV MY_path /etc/pro |
ADD | copy+decompress | |
COPY | 将从构建上下文目录中<源目录>的文件/目录复制到新的一层的镜像内的目标位置 | |
VOLUME | 容器数据卷,用于数据保存和持久化工作 | |
CMD | 指定容器启动时要启动的命令,但只有最后一个生效,CMD会被docker run 后面的参数替换 | CMD [“可执行文件”,“参数一”,“参数二”] 或 CMD <命令> |
ENTERPOINT | 指定容器启动时要启动的命令。区别于CMD,run后面加参数不会被覆盖,而是追加(扩充功能)。 | |
ONBUILD | 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发 |
docker bulid -f dockerfilePath -t imageName:TAG .
#最后需要“.”