Skip to content

Commit ab44e7c

Browse files
author
lerndevops
authored
Add files via upload
1 parent e93e835 commit ab44e7c

13 files changed

+828
-0
lines changed

docker/1111.Docker-Command Notebook.txt

Lines changed: 554 additions & 0 deletions
Large diffs are not rendered by default.

docker/14.MultiStage_Dockerfile.txt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
Dockerfiles allow us to build our own images containing any software we need. However, it is important to ensure that our Dockerfiles are built to produce small, efficient images that do not contain unnecessary data. In this lesson, we will briefly discuss some general tips for creating efficient images. We will also demonstrate how to use multi-stage builds to significantly decrease image size in certain situations.
2+
3+
Relevant Documentation
4+
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
5+
https://docs.docker.com/develop/develop-images/multistage-build/
6+
Lesson Reference
7+
Create some project directories:
8+
9+
cd ~/
10+
mkdir efficient
11+
mkdir inefficient
12+
cd inefficient
13+
Create the source code file:
14+
15+
vi helloworld.go
16+
package main
17+
import "fmt"
18+
func main() {
19+
fmt.Println("hello world")
20+
}
21+
Create the Dockerfile:
22+
23+
vi Dockerfile
24+
FROM golang:1.12.4
25+
WORKDIR /helloworld
26+
COPY helloworld.go .
27+
RUN GOOS=linux go build -a -installsuffix cgo -o helloworld .
28+
CMD ["./helloworld"]
29+
30+
31+
Build and test the inefficient image:
32+
33+
docker build -t inefficient .
34+
docker run inefficient
35+
docker image ls
36+
Switch to the efficient project directory and copy the files from the inefficient project:
37+
38+
cd ~/efficient
39+
cp ../inefficient/helloworld.go ./
40+
cp ../inefficient/Dockerfile ./
41+
Change the Dockerfile to use a multi-stage build:
42+
43+
vi Dockerfile
44+
FROM golang:1.12.4 AS compiler
45+
WORKDIR /helloworld
46+
COPY helloworld.go .
47+
RUN GOOS=linux go build -a -installsuffix cgo -o helloworld .
48+
49+
FROM alpine:3.9.3
50+
WORKDIR /root
51+
COPY --from=compiler /helloworld/helloworld .
52+
CMD ["./helloworld"]
53+
Build and test the efficient image:
54+
55+
docker build -t efficient .
56+
docker run efficient
57+
docker image ls

docker/30.Networking.txt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
Containers present unique challenges when it comes to networking. Luckily, Docker includes multiple built-in solutions to these networking challenges. Docker implements container networking using a framework called the Container Networking Model. In this lesson, we will discuss the Container Networking Model and offer some high-level examples of some of the model's implementations.
2+
3+
Relevant Documentation
4+
https://success.docker.com/article/networking/
5+
6+
Docker provides multiple implementations of the Container Networking Model in the form of network drivers.
7+
8+
Relevant Documentation
9+
https://success.docker.com/article/networking/
10+
https://blog.docker.com/2016/12/understanding-docker-networking-drivers-use-cases/
11+
12+
13+
Host
14+
15+
Create two containers and demonstrate communication between them using the host network driver. The ip add commands also demonstrate that the container is using the host's eth0 network interface directly.
16+
17+
18+
docker run -d --net host --name host_busybox radial/busyboxplus:curl sleep 3600
19+
docker run -d --net host --name host_nginx nginx
20+
ip add | grep eth0
21+
docker exec host_busybox ip add | grep eth0
22+
docker exec host_busybox curl localhost:80
23+
curl localhost:80
24+
25+
Bridge
26+
27+
Create two containers and demonstrate that they can communicate using a custom bridge network. The ip link command can be used to explore the Linux bridge interfaces created by the bridge network driver.
28+
29+
ip link
30+
docker network create --driver bridge my-bridge-net
31+
ip link
32+
docker run -d --name bridge_nginx --network my-bridge-net nginx
33+
docker run --rm --name bridge_busybox --network my-bridge-net radial/busyboxplus:curl curl bridge_nginx:80
34+
35+
36+
Overlay
37+
38+
Create two services in the Docker Swarm cluster and demonstrate that they are able to communicate using a custom overlay network.
39+
40+
docker network create --driver overlay my-overlay-net
41+
docker service create --name overlay_nginx --network my-overlay-net nginx
42+
docker service create --name overlay_busybox --network my-overlay-net radial/busyboxplus:curl sh -c 'curl overlay_nginx:80 && sleep 3600'
43+
docker service logs overlay_busybox
44+
45+
MACVLAN
46+
47+
Create a MACVLAN network. Then run two containers that are able to communicate using the MACVLAN network.
48+
49+
docker network create -d macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 -o parent=eth0 my-macvlan-net
50+
docker run -d --name macvlan_nginx --net my-macvlan-net nginx
51+
docker run --rm --name macvlan_busybox --net my-macvlan-net radial/busyboxplus:curl curl 192.168.0.2:80
52+
None
53+
Create a container that uses the none network and demonstrate that a normal container cannot reach it.
54+
55+
docker run --net none -d --name none_nginx nginx
56+
docker run --rm radial/busyboxplus:curl curl none_nginx:80

docker/31. Bridge Network.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
Bridge networks facilitate communication between Docker containers on the same host. In this lesson, we will explore bridge networks in a little more detail. We will discuss the commands needed to create and use bridge networks. We will also examine Docker's embedded DNS, and how to use it to communicate with containers using container names and network aliases. We will also talk about some commands that can be used to manage existing networks on a Docker host.
2+
3+
Relevant Documentation
4+
https://docs.docker.com/network/bridge/
5+
Lesson Reference
6+
Create a bridge network and demonstrate that two containers can communicate using the network.
7+
8+
docker network create my-net
9+
docker run -d --name my-net-busybox --network my-net radial/busyboxplus:curl sleep 3600
10+
docker run -d --name my-net-nginx nginx
11+
docker network connect my-net my-net-nginx
12+
docker exec my-net-busybox curl my-net-nginx:80
13+
Create a container with a network alias and communicate with it from another container using both the name and the alias.
14+
15+
docker run -d --name my-net-nginx2 --network my-net --network-alias my-nginx-alias nginx
16+
docker exec my-net-busybox curl my-net-nginx2:80
17+
docker exec my-net-busybox curl my-nginx-alias:80
18+
Create a container and provide a network alias with the docker network connect command.
19+
20+
docker run -d --name my-net-nginx3 nginx
21+
docker network connect --alias another-alias my-net my-net-nginx3
22+
docker exec my-net-busybox curl another-alias:80
23+
Manage existing networks on a Docker host.
24+
25+
docker network ls
26+
docker network inspect my-net
27+
docker network disconnect my-net my-net-nginx
28+
docker network rm my-net

docker/CMD & ENTRYPOINT.rtf

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{\rtf1\ansi\ansicpg1252\cocoartf2511
2+
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Menlo-Regular;\f2\fswiss\fcharset0 ArialMT;
3+
\f3\fnil\fcharset0 Menlo-Bold;}
4+
{\colortbl;\red255\green255\blue255;\red27\green29\blue31;\red235\green236\blue237;\red255\green255\blue255;
5+
}
6+
{\*\expandedcolortbl;;\cssrgb\c14118\c15294\c16078;\cssrgb\c93725\c94118\c94510;\cssrgb\c100000\c100000\c100000;
7+
}
8+
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid1\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
9+
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
10+
\paperw11900\paperh16840\margl1440\margr1440\vieww28600\viewh15280\viewkind0
11+
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
12+
13+
\f0\fs24 \cf0 Dockerfile:\
14+
\
15+
\pard\pardeftab720\sl300\partightenfactor0
16+
17+
\f1\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
18+
FROM debian:wheezy\
19+
ENTRYPOINT ["/bin/ping"]\
20+
CMD ["localhost"]\
21+
\
22+
Execution: \
23+
Docker build -t test .\
24+
Docker run -d test\
25+
Docker run -it test google.com\
26+
\
27+
\
28+
\
29+
\
30+
Dockerfile:\
31+
FROM debian:wheezy\
32+
CMD ["/bin/ping", "localhost"]\
33+
\
34+
Execution:\
35+
Docker build -t test2 .\
36+
Docker run test2\
37+
Docker run test2 bash\
38+
\
39+
\
40+
The ENTRYPOINT specifies a command that will always be executed when the container starts. The CMD specifies arguments that will be fed to the ENTRYPOINT.\
41+
\
42+
\
43+
\
44+
\
45+
\pard\pardeftab720\sl340\sa300\partightenfactor0
46+
47+
\f2\fs30 \cf2 \cb1 Both CMD and ENTRYPOINT instructions define what command gets executed when running a container. There are few rules that describe their co-operation.\
48+
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl340\sa150\partightenfactor0
49+
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 {\listtext 1. }\expnd0\expndtw0\kerning0
50+
Dockerfile should specify at least one of\'a0
51+
\f1\fs26 \cb3 CMD
52+
\f2\fs30 \cb1 \'a0or\'a0
53+
\f1\fs26 \cb3 ENTRYPOINT
54+
\f2\fs30 \cb1 \'a0commands.\
55+
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl300\sa150\partightenfactor0
56+
\ls1\ilvl0
57+
\f1\fs26 \cf2 \cb3 \kerning1\expnd0\expndtw0 {\listtext 2. }\expnd0\expndtw0\kerning0
58+
ENTRYPOINT
59+
\f2\fs30 \cb1 \'a0should be defined when using the container as an executable.\
60+
\ls1\ilvl0
61+
\f1\fs26 \cb3 \kerning1\expnd0\expndtw0 {\listtext 3. }\expnd0\expndtw0\kerning0
62+
CMD
63+
\f2\fs30 \cb1 \'a0should be used as a way of defining default arguments for an\'a0
64+
\f1\fs26 \cb3 ENTRYPOINT
65+
\f2\fs30 \cb1 \'a0command or for executing an ad-hoc command in a container.\
66+
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl300\partightenfactor0
67+
\ls1\ilvl0
68+
\f1\fs26 \cf2 \cb3 \kerning1\expnd0\expndtw0 {\listtext 4. }\expnd0\expndtw0\kerning0
69+
CMD
70+
\f2\fs30 \cb1 \'a0will be overridden when running the container with alternative arguments\
71+
\pard\tx566\pardeftab720\sl300\partightenfactor0
72+
\cf2 \
73+
\
74+
\
75+
\
76+
\pard\pardeftab720\sl300\partightenfactor0
77+
78+
\f1\fs26 \cf2 \cb3 \
79+
\
80+
\
81+
CMD\
82+
\pard\pardeftab720\sl320\partightenfactor0
83+
\cf2 \uc0\u9556 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9574 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9559 \
84+
\uc0\u9553 No CMD \u9553 error, not allowed \u9553 \
85+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
86+
\uc0\u9553 CMD [\'93exec_cmd\'94, \'93p1_cmd\'94] \u9553 exec_cmd p1_cmd \u9553 \
87+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
88+
\uc0\u9553 CMD [\'93p1_cmd\'94, \'93p2_cmd\'94] \u9553 p1_cmd p2_cmd \u9553 \
89+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
90+
\uc0\u9553 CMD exec_cmd p1_cmd \u9553 /bin/sh -c exec_cmd p1_cmd \u9553 \
91+
\uc0\u9562 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9577 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9565 \
92+
\pard\pardeftab720\sl380\sa300\partightenfactor0
93+
94+
\f2\fs30 \cf2 \cb4 \
95+
--\'a0
96+
\f3\b\fs26 \cb3 ENTRYPOINT exec_entry p1_entry
97+
\f2\b0\fs30 \cb1 \
98+
\pard\pardeftab720\sl320\partightenfactor0
99+
100+
\f1\fs26 \cf2 \cb3 \uc0\u9556 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9574 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9559 \
101+
\uc0\u9553 No CMD \u9553 /bin/sh -c exec_entry p1_entry \u9553 \
102+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
103+
\uc0\u9553 CMD [\'93exec_cmd\'94, \'93p1_cmd\'94] \u9553 /bin/sh -c exec_entry p1_entry \u9553 \
104+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
105+
\uc0\u9553 CMD [\'93p1_cmd\'94, \'93p2_cmd\'94] \u9553 /bin/sh -c exec_entry p1_entry \u9553 \
106+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
107+
\uc0\u9553 CMD exec_cmd p1_cmd \u9553 /bin/sh -c exec_entry p1_entry \u9553 \
108+
\uc0\u9562 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9577 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9565 \
109+
\pard\pardeftab720\sl380\sa300\partightenfactor0
110+
111+
\f2\fs30 \cf2 \cb4 \
112+
--\'a0
113+
\f3\b\fs26 \cb3 ENTRYPOINT [\'93exec_entry\'94, \'93p1_entry\'94]
114+
\f2\b0\fs30 \cb1 \
115+
\pard\pardeftab720\sl320\partightenfactor0
116+
117+
\f1\fs26 \cf2 \cb3 \uc0\u9556 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9574 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9559 \
118+
\uc0\u9553 No CMD \u9553 exec_entry p1_entry \u9553 \
119+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
120+
\uc0\u9553 CMD [\'93exec_cmd\'94, \'93p1_cmd\'94] \u9553 exec_entry p1_entry exec_cmd p1_cmd \u9553 \
121+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
122+
\uc0\u9553 CMD [\'93p1_cmd\'94, \'93p2_cmd\'94] \u9553 exec_entry p1_entry p1_cmd p2_cmd \u9553 \
123+
\uc0\u9567 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9579 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9472 \u9570 \
124+
\uc0\u9553 CMD exec_cmd p1_cmd \u9553 exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd \u9553 \
125+
\uc0\u9562 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9577 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9552 \u9565 \
126+
\pard\pardeftab720\sl300\partightenfactor0
127+
128+
\f2 \cf2 \cb1 \
129+
\pard\pardeftab720\sl300\partightenfactor0
130+
131+
\f1 \cf2 \cb3 \
132+
\
133+
}
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)