win10安装docker


一、安装:win10安装docker,下载客户端安装即可。

二、配置及使用:
docker engine 配置国内镜像源:
"registry-mirrors": ["https://cr.console.aliyun.com"],
cmd窗口打开powershell
docker version
docker search hello-world
docker search centos
docker pull hello-world
docker tag 860c279d2fec runoob/centos:dev 设置镜像标签
docker run helllo-world
docker run --name some-nginx -p 1080:80 -v f:\docker:/usr/share/nginx/html -d nginx
docker run -i -t centos /bin/bash 运行交互式的容器,通过运行 exit 命令或者使用 CTRL+D 来退出容器
docker logs 容器ID或容器名 输出日志
docker ps
docker ps -a
docker ps -l 查询最后一次创建的容器:
docker stop/restart 容器ID或容器名
docker stop -t=60 容器ID或容器名
docker rmi 镜像id
docker rm 容器id
docker attach [container_id] #连接一个正在运行的container实例(即实例须为start状态,可以多个 窗口同时attach 一个container实例),但当某个窗口因命令阻塞时,其它窗口也无法执行了。
exec可直接在容器内运行的命令。docker exec -ti [container_id] /bin/bash


三、运行一个镜像:
方式一:docker run命令方式
docker run --name some-nginx -p 1080:80 -v /some/content:/usr/share/nginx/html -d nginx
(docker run --name some-nginx -p 1080:80 -v f:\docker:/usr/share/nginx/html -d nginx)
参数说明:
--name:定义容器名。
-p:宿主机与容器的端口挂载,格式:宿主机端口:容器内部端口
-v:宿主机目录与容器内目录映射,格式:宿主机目录:容器内部目录
-d:后台执行
执行以上命令就可以啦,这里把容器名取名为some-nginx,把容器的80端口映射到宿主机的1080端口,容器内的/usr/share/nginx/html目录映射到宿主机的/some/content目录,使用的是nginx最新的镜像,镜像部分也可以写成 “nginx:版本”比如“nginx:1.15.1”。
在/some/content创建一个index.html,随便输入个内容。
访问下 ip+1080可以看到请求到nginx了。
方式二:Dockerfile配置文件构建镜像方式
1.创建一个文件,命名为Dockerfile,输入以下内容。
FROM nginxCOPY html /usr/share/nginx/html
FROM nginx 代表以nginx镜像为基础构建我们的镜像。

注意需要先在Dockerfile同目录创建html目录,不然会报错。

Dockerfile文件内可以自定义镜像内容,有很多指令可以用,比如可以在配置容器创建后运行shell脚本等,可以自行查阅,本文仅做一个简单的用法示例入门。

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层,所以尽量不要写太多层。

2.在Dockerfile同目录下运行命令创建镜像

docker build -t my-nginx-image .

注意最后面有一个点。

3.运行容器

docker run --name some-nginx -p 1080:80 -d my-nginx-image
在html目录里新建一个index.html文件随便输入个内容,访问下 ip+1080可以看到请求到nginx了。
Dockerfile一般用于自定义镜像,因为是个文件,也比命令的方式更易于保存与团队间共享。

方式三:docker -compose方式

在需要管理多个容器时用以上两种方式都不太适合,不仅要管理每个容器的配置信息,还要处理容器间的关系,这时候就需要docker-compose来做容器编排了。

1.创建一个docker-compose.yml文件,输入以下内容
# yaml 配置
version: '3'
services:
nginx:
image: nginx
container_name: some-nginx1
ports:
- "1080:80"
volumes:
- F:\docker:/usr/share/nginx/html

在F:\docker创建一个index.html,随便输入个内容,等会访问测试。

2.执行启动命令
docker-compose up -d
访问下 ip+1080可以看到请求到nginx了。

三、下载、制作、上传镜像

登录阿里云镜像:
docker login --username=赵晓525 registry.cn-hangzhou.aliyuncs.com
docker tag 12766a6745ee registry.cn-hangzhou.aliyuncs.com/testzx/nginx:0406 本地镜像打标签
docker push registry.cn-hangzhou.aliyuncs.com/testzx/nginx:0406 上传本地镜像
docker pull registry.cn-hangzhou.aliyuncs.com/testzx/nginx:[镜像版本号] 拉取容器服务中刚刚上传的镜像


制作镜像

docker run --name some-nginx -p 1080:80 -v f:\docker:/usr/share/nginx/html -d nginx
mkdir dockerfile
vi dockerfile
文件内容:
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
在文件目录下执行
docker build -t nginx:v3 .
[+] Building 0.8s (4/5)
[+] Building 1.0s (4/5)
[+] Building 1.1s (4/5)
[+] Building 1.3s (5/6)
[+] Building 1.3s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.2s
=> => transferring dockerfile: 133B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/nginx:latest 0.0s
=> [1/2] FROM docker.io/library/nginx 0.4s
=> [2/2] RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html 0.5sing to image 0.1s
=> exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:813a1b77df54126778c7f8740772cde558b1ec89551e40b6be37b03514d9c63a 0.0s
=> => naming to docker.io/library/nginx:v3 0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

docker 容器连接:
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
创建一个docker-compose.yml
执行启动命令
docker-compose up -d
容器迁移:(参考:https://www.cnblogs.com/sunnynic/p/12317711.html)
容器打包成镜像 # docker commit -m "" -a "" [CONTAINER ID] [新的镜像名] ,其中-m和-a是可选参数,意思分别是描述和作者
导出镜像 # docker save -o [新的镜像名.tar] [新的镜像名]
拷贝镜像到目标服务器 # scp src dst
导入镜像 # sudo docker load -i [新的镜像名.tar]
运行容器 # docker run