Tải bản đầy đủ (.docx) (29 trang)

DOCKER FOR THE ABSOLUTE BEGINNER

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.03 MB, 29 trang )

DOCKER FOR THE ABSOLUTE BEGINNER – HANDS-ON – DEVOPS

1 Section 1: Introduction
2 Section 2: Docker commands
2.1 run – start a container
Download nếu chưa có and run image
[root@ansible-master ~]# docker run nginx

2.2 run – attach and detach
Run docker in background
[root@ansible-master ~]# docker run -d kodekloud/simple-webapp


2.3 ps – list container
[root@ansible-master ~]# docker ps
List running container

[root@ansible-master ~]# docker ps -a
List all container

2.4 stop – stop container
[root@ansible-master ~]# docker stop <container_name>
Stop all container
[root@ansible-master ~]# docker stop $(docker ps -a -q)
2.5 rm – Remove container
[root@ansible-master ~]# docker rm <container_name>
Remove all
[root@ansible-master ~]# docker rm $(docker ps -a -q)
2.6 images – List images
[root@ansible-master ~]# docker images
2.7 rmi – Remove images


[root@ansible-master ~]# docker rmi <images_name>


Remove images all
[root@ansible-master ~]# docker rmi $(docker images -a -q)
2.8 pull – download images only
[root@ansible-master ~]# docker pull <images_name>
2.9 exec – execute a command
[root@ansible-master ~]# docker exec <container_name> <command>
[root@ansible-master ~]# docker exec <container_name> cat /etc/hosts

3 Section 3: Docker run
3.1 Docker run
[root@ansible-master ~]# docker run -d redis

[root@ansible-master ~]# docker run -d redis:4.0 (tag)


3.2 Run – stdin
Mở terminal
[root@ansible-master ~]# docker run -it kodekloud/simple-prompt-docker

3.3 Run – port mapping

[root@ansible-master ~]# docker run -d -p 8888:8080 kodekloud/simple-webapp
8888: host port
8080: container port


3.4 Run – volume mapping


root@ubuntu18-1:~# docker run -d -p 3306:3306 -v /opt/datadir:/var/lib/mysql mysql
/opt/datadir: host volume
/var/lib/mysql: container volume


3.5 Inspect container

3.6 Advanced Docker Run
root@ubuntu18-1:~# docker run -d -p 8080:8080 jenkins/Jenkins


4 Section 4: Docker images
4.1 Docker images


4.2 Demo
4.2.1

Create Dockerfile

root@ubuntu18-1:~# git clone /> />root@ubuntu18-1:~# cd simple-webapp-flask/
Tạo Dockerfile

4.2.2

Build images

root@ubuntu18-1:~/simple-webapp-flask# docker build -t simple-webapp-flask:1.0.0 .



4.2.3

Run container

root@ubuntu18-1:~/simple-webapp-flask# docker run -d -p 5000:8080 simple-webappflask:1.0.0


4.2.4

Tag image

docker image tag simple-webapp-flask:1.0.0 lamnguyentt/simple-webapp-flask:1.0.0
lamnguyentt: registry account

4.2.5

Push registry

root@ubuntu18-1:~/simple-webapp-flask# docker image push lamnguyentt/simplewebapp-flask:1.0.0


4.3 Environment Variables



4.4 Command vs Entrypoint
4.5 Multi-build stage
/>Các bản dựng nhiều giai đoạn hữu ích cho bất kỳ ai gặp khó khăn trong việc tối ưu hóa
Dockerfiles trong khi vẫn giữ cho chúng dễ đọc và dễ bảo trì.

4.5.1

Before multi-stage build

Một trong những điều khó khăn nhất khi xây dựng hình ảnh là giảm kích thước images.
Mỗi lệnh RUN, COPY và ADD trong Dockerfile sẽ thêm một lớp vào images và bạn cần
nhớ xóa sạch bất kỳ phần mềm nào bạn khơng cần trước khi chuyển sang lớp tiếp theo.
Để viết một Dockerfile thực sự hiệu quả, theo truyền thống, bạn cần phải sử dụng các thủ
thuật trình bao và logic khác để giữ các lớp càng nhỏ càng tốt và đảm bảo rằng mỗi lớp
có các tạo tác mà nó cần từ lớp trước và khơng có gì khác. Thực sự rất phổ biến khi có
một Dockerfile để sử dụng cho phát triển (chứa mọi thứ cần thiết để xây dựng ứng dụng
của bạn) và một tệp thu gọn để sử dụng cho sản xuất, chỉ chứa ứng dụng của bạn và chính
xác những gì cần thiết để chạy nó. Điều này đã được gọi là " builder pattern". Duy trì hai
Dockerfiles không phải là lý tưởng.
4.5.2

Use multi-stage builds

Với các bản dựng nhiều giai đoạn, bạn sử dụng nhiều câu lệnh FROM trong Dockerfile
của mình. Mỗi lệnh FROM có thể sử dụng một cơ sở khác nhau và mỗi lệnh bắt đầu một
giai đoạn mới của quá trình xây dựng. Bạn có thể sao chép có chọn lọc các phần tạo tác
từ giai đoạn này sang giai đoạn khác, bỏ lại mọi thứ bạn không muốn trong images cuối
cùng. Để cho biết cách này hoạt động, hãy điều chỉnh Dockerfile từ phần trước để sử
dụng các bản dựng nhiều giai đoạn.


How does it work? The second FROM instruction starts a new build stage with the
alpine:latest

image as its base. The COPY


--from=0

line copies just the built artifact

from the previous stage into this new stage. The Go SDK and any intermediate artifacts
are left behind, and not saved in the final image.
4.5.3

Name build stage

4.5.4

Use an external image as a “stage”

4.5.5

Example

/>

4.5.5.1 Build stage


Có thể thấy kích thước image go-dockerize là 419MB
4.5.5.2 Run test

Check

4.5.5.3 Multi-stage

Để giảm kích thước images


root@ubuntu18-1:~/admin/go/src/github.com/thanhlam/go-dockerize# docker build -t godockerize:2.0.0 .

Có thể thấy kích thước images giảm chỉ còn 12.6MB

5 Section 5: Docker compose
5.1 Docker compose
5.1.1

Introduction

Kết hợp nhiều Dockerfile


5.1.2

Docker run --link


5.1.3

Docker-compose.yml

5.1.4

Docker-compose build

Dùng khi chưa build sẵn image



5.1.5

5.1.6

Docker-compose version

Version 1: dùng “link”
Version 2: dùng “depends_on”
Version 3: support docker swarm
Separate network

Mặc định docker-compose tạo network bridge như hình


Tuy nhiên, nếu muốn chia network rõ ràng thành front-end và back-end. Thì dockercompose file như sau:

5.2 Demo
5.2.1

Clone source code

/>root@ubuntu18-1:~# git clone />

5.2.2

Build & run vote app

root@ubuntu18-1:~/example-voting-app/vote# docker build . -t voting-app

root@ubuntu18-1:~/example-voting-app/vote# docker run -d -p 5000:80 voting-app


Click chọn thử → fail do chưa có redis

5.2.3

Run redis

root@ubuntu18-1:~/example-voting-app/vote# docker run -d --name=redis redis
Run lại voting-app
root@ubuntu18-1:~/example-voting-app/vote# docker run -d -p 5000:80 --link redis
voting-app


5.2.4

Run postgres

root@ubuntu18-1:~/example-voting-app/worker# docker run -d --name=db -e
POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres postgres:9.4
5.2.5

Build and run worker-app

root@ubuntu18-1:~/example-voting-app/worker# docker build . -t worker-app
root@ubuntu18-1:~/example-voting-app/worker# docker run --link redis --link db
worker-app

5.2.6


Build and run result app

root@ubuntu18-1:~/example-voting-app/result# docker build . -t result-app
root@ubuntu18-1:~/example-voting-app/result# docker run -d -p 5001:80 --link db
result-app

5.3 Demo with docker-compose
5.3.1

Install docker-compose

root@ubuntu18-1:~# sudo curl -L
" />-s)-$(uname -m)" -o /usr/bin/docker-compose
root@ubuntu18-1:~# sudo chmod +x /usr/bin/docker-compose


root@ubuntu18-1:~# docker-compose --version

5.3.2

Build images

5.3.3

Create docker-compose.yml

root@ubuntu18-1:~# touch docker-compose.yml



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×