1、复习
11、linux网络
2
3 为了网络协议栈的多实例,linux提供了一个名称空间(包含网络名称空间),每一个名称空间相互隔离,彼此之间网络不互通。
4
52、docker网络
6
7 docker网络依赖于linux网络。
8
9 1、veth设备对
10 2、iptables
11 3、ipvs
12 4、网桥
13
14 -p
15 -P
16
173、docker network
18
19 1、host模式
20 2、container模式
21 2.1、--link
22 3、none模式
23 4、网桥
24
25 --network
26
27 docker network create
28 docker network ls
29 docker network inspect
30 docker network connect
31 docker network disconnect
32 docker network rm
33 docker network prune
2、内容概要
11、Dockerfile
22、利用dockerfile构建 Nginx + Django
3
4docker-compose单机编排工具
5harbor 私有仓库
6
7Nginx + Django + MySQL
3、Dockerfile
1Dockerfile可以构建容器。
2
3通过指令
4
51、指令
6 1、依赖基础镜像的指令,必须在Dockerfile的顶端
7 FROM
8
9 2、执行命令的指令(RUN指令执行的命令,必须是基础容器中支持的命令),将执行的结果保存到镜像中
10 RUN
11
12 3、添加文件到镜像
13 ADD
14
15 注:
16 1、ADD支持解压功能(仅支持tar解压)
17 2、支持远程下载功能,但是如果是远程下载的文件,则不解压
18
19 4、复制文件到镜像
20 COPY
21
22 5、暴露端口
23 EXPOSET
24
25 80 443
26 80/tcp 443/udp
27 6、工作目录
28 WORKDIR
29
30 7、设置容器启动时执行的命令
31 CMD
32
33FROM python:3.6
34RUN pip install django
35ADD linux.tar.gz /opt
36EXPOSE 80
37WORKDIR /opt/linux
38CMD python manage.py runserver 0.0.0.0:80
39
40 8、定义Dockerfile变量的指令
41 ARG
42
43 9、触发器指令(构建时不作任何操作,但是在作为基础镜像时触发)
44 ONBUILD
45
462、构建镜像的命令
47 docker build -t [镜像名称] [Dockerfile的路径]
48
49注:
50 1、Dockerfile的文件名
51 2、一旦开始构建容器,当前目录会被虚拟到Docker容器中
4、利用dockerfile构建 Nginx + Django
1# 创建网桥
2docker network create lhs
3
41、Django
5mkdir django
6django-admin startproject linux
7django-admin startapp app01
8数据库迁移
9[root@localhost django]# vim Dockerfile
10FROM python:3.6
11ADD linux.tar.gz /opt
12EXPOSE 80
13WORKDIR /opt/linux
14RUN pip install django
15CMD python manage.py runserver 0.0.0.0:80
16
17# 创建
18[root@localhost django]# docker build -t django:v1 .
19# 创建容器
20[root@localhost django]# docker run -d --name django --network lhs django:v1
21
22
23
24
252、Nginx
26mkdir nginx
27[root@localhost nginx]# vim Dockerfile
28FROM nginx
29ADD default.conf /etc/nginx/conf.d/
30EXPOSE 80
31CMD nginx -g 'daemon off;' # 前台运行nginx
32
33[root@localhost nginx]# vim default.conf
34server {
35 server_name _;
36 listen 80;
37 location / {
38 proxy_pass http://django;
39 }
40}
41
42[root@localhost nginx]# docker build -t nginx:v1 .
43[root@localhost nginx]# docker run -d --name nginx -P --network lhs nginx:v1
44会随机暴露一个接口映射django
5、容器化BBS
11、mysql
2
3 docker run -d --name mysql --network chenyang1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
4
52、bbs
6
7 1、Dockerfile
8 [root@localhost bbs]# cat bbs/Dockerfile
9 FROM python:3.6
10 ADD ./ /opt/
11 WORKDIR /opt
12 RUN pip install -Ur requirements.txt
13 EXPOSE 80
14 CMD python manage.py runserver 0.0.0.0:80
15
16 2、数据迁移
17
183、nginx
19[root@localhost nginx]# cat Dockerfile
20FROM nginx
21ADD default.conf /etc/nginx/conf.d/
22EXPOSE 80
23CMD nginx -g 'daemon off;'
24
25[root@localhost nginx]# cat default.conf
26server {
27 server_name _;
28 listen 80;
29 location / {
30 proxy_pass http://bbs;
31 }
32}