网易云docker课程,视频1-笔记

目录

1.docker是容器的管理工具;

2.官方镜像:

3.同一个镜像可以启动多个容器;

4.容器先停掉再移出;

5.在容器中做的修改

6.容器通过镜像来创建的

7.docker run  -itd 

8.command是容器启动之后,要执行的命令;

9.给某镜像指定端口映射,并能够成功启动;

10.文件挂载

11.宿主机文件和容器文件进行交互复制

12.容器互联

13.如何通过Dockerfile定制镜像;

什么是Dockerfile?

运行Dockerfile:

14.Dockerfile是分层的


课程:https://study.163.com/course/courseLearn.htm?courseId=1209453812#/learn/video?lessonId=1279505337&courseId=1209453812

1.docker是容器的管理工具;

2.官方镜像:

docker search --filter "is-official-true" nginx

3.同一个镜像可以启动多个容器;

只要创建的时候,容器的名字不一样就可以;

4.容器先停掉再移出;

5.在容器中做的修改

退出容器(exit)后,停止,重启容器,修改的内容还会在;若把容器删除掉,修改内容就会消失;此时就需要docker commit -a "zh" -m "message" 容器名/容器ID 新容器名:版本号

6.容器通过镜像来创建的

7.docker run  -itd 

-d:表示后台运行容器,并返回容器ID

-i:表示以交互模式运行容器

-t:为容器重新分配

8.command是容器启动之后,要执行的命令;

9.给某镜像指定端口映射,并能够成功启动;

解决的是:客户端发来的请求与容器交互;

docker run -itd -p 8888:80 zh-nginx:1.0.0

10.文件挂载

docker run -itd --name=nginx -p 8888:80 -v /Users/liming/index.html:/usr/share/nginx/html/index.html nginx

将宿主机的文件挂载到容器中;在宿主机中进行文件的修改,容器中也会跟着修改;

将宿主机上的程序文件挂载到容器中,调用容器里的服务来运行;

解决的是:宿主机与容器间的交互;宿主机文件改动还是容器上的文件改动均会互相影响;

注意:宿主机和容器中的文件均需要填写全路径;

11.宿主机文件和容器文件进行交互复制

docker cp ...

12.容器互联

解决的是:容器间的交互

-e是:容器启动时会读取参数进行操作;

MySQL修改root密码:

alter user 'root'@'%' identified with mysql_native_password by '123456';

注意:mysql_native_password是数据库管理插件

docker run -itd --name=mysql -p 3306:3306 -v /Users/liming/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.27

用MySQL客户端sequel pro即可连上;

启动PHP容器,并关联MySQL:

docker run -tid --name=php --link mysql:mysql -v /Users/fdfd/index.php:/index.php php

--link 被关联的容器:被关联的容器别名;

进入php容器:执行php脚本,发现少driver,在容器中进行安装

安装php_mysql 至容器中,执行:

docker-php-ext-install pdo_mysql

PHP的脚本访问MySQL时,写容器关联的别名;因为IP地址不是固定的;

php脚本:

<?php
$pdo = new \PDO('mysql:host=mysql;dbname=test','root','lihuan1114');
foreach($pdo->query('SELECT * from user') as $row){
print_r($row);
}

13.如何通过Dockerfile定制镜像;

自制镜像;13之上都是下载docker上的镜像;

什么是Dockerfile?

Dockerfile:就是名为Dockerfile的文件,文件中包含一些Linux命令;docker通过读取Dockerfile文件中的命令来组件镜像;

Dockerfile文件中分为4部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行命令;

运行Dockerfile:

注意:tag_name可以不指定,即 docker build -t image_name .    ,则默认生成lastest镜像;

docker build -t image_name:tag_name .

也可指定-f 参数来指定Dockerfile 文件位置;

docker build -f /path/Dockerfile .

命令详解:

FROM :指定基础镜像,必须是第一个命令;

MAINTAINER:可指定维护者信息,比如写自己的名字;

RUN:构建镜像时,执行的命令;(构建镜像时,docker在解析Dockerfile文件时)

ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

COPY:功能与ADD类似,但是是不能自动解压文件,也不能访问网络资源;

CMD:构建容器后调用,也就是容器启动时,才可以进行调用;(启动容器中的进程)(镜像构建完了,通过镜像启动容器时)

ENTRYPOINT:配置容器,使其可执行化,配置CMD可省去“application”,只使用参数;(docker run 命令后的启动完镜像,需执行的命令,不会把ENTRYPOINT设置的命令覆盖掉,而会把CMD设置的启动后执行的命令覆盖掉;另Dockerfile中只能允许有一个ENTRYPOINT命令,若ENTRYPOINT命令多的话,后面会覆盖前面的命令,即只会执行后面的ENTRYPOINT命令)

LABEL:用于给镜像添加元数据;(给镜像添加标识,比如版本号,描述等信息)

ENV:设置环境变量,即Linux中的环境变量;

EXPOST:指定于外界交互的端口;(即,容器对外暴露的端口)

VOLUME:用于指定持久化目录;(即进行文件目录的挂载)

WORKDIR:工作目录,类似于cd命令;(WORKDIR /path/to/workdir《==》RUN cd /usr/local/)

USER:指定运行容器时的用户名或UID,后续的RUN也会使用指定用户;若运行时,通过root 用户运行,即不用设置;

ARG:用于指定传递给构建运行时的变量;即,dockerfile中定义语法变量;

ONBUILD:用于设置镜像触发器;即当所构建的镜像被用作其他镜像的基础镜像,该镜像中的触发器将会被钥触发;

14.Dockerfile是分层的

运行Dockerfile文件时,可以看出来,标识为:Step 1/9;所以Dockerfile是分层的,不要一层写成多层;比如写了很多个RUN命令,不建议;

Dockerfile文件中要有层级,保持每一层的层级,比如RUN命令要执行多个,可以使用&&\来连接多行命令;

若之前执行过Dockerfile则执行时,每层下面会显示using cache,第一次执行 的时候,把每层进行了缓存;

FROM的内容,若本地有会直接用,若没有则会下载,不需提前准备基础镜像;

执行完Dockerfile文件后,就会生成image;

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章