Ubuntu
chạy một container ubuntu
1 2 3 4 | docker run -d ubuntu <span class="token function">bash</span> -c <span class="token string">"shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"</span> |
command tail to keep for container run
bộ chứa dev cho java
1 2 3 4 5 6 7 | docker run --name docs -p <span class="token number">127.0</span> .0.1:4000:4000 -w /app -v <span class="token string">" <span class="token variable"><span class="token variable">$(</span> <span class="token builtin class-name">pwd</span> <span class="token variable">)</span></span> :/app"</span> --env-file .env openjdk:8u322-jdk-oraclelinux8 <span class="token function">sh</span> -c <span class="token string">"java -jar docs-1.0.0.jar"</span> |
bộ chứa dev node.js
1 2 3 4 5 6 | docker run -dp <span class="token number">3000</span> :3000 -w /app -v <span class="token string">" <span class="token variable"><span class="token variable">$(</span> <span class="token builtin class-name">pwd</span> <span class="token variable">)</span></span> :/app"</span> node:12-alpine <span class="token function">sh</span> -c <span class="token string">"yarn install && yarn run dev"</span> |
gán ip tĩnh cho container
tham khảo https://www.cloudsavvyit.com/14508/how-to-assign-a-static-ip-to-a-docker-container/
với cmd nội tuyến
tạo mạng riêng biệt mới
1 2 | docker network create --subnet <span class="token operator">=</span> <span class="token number">172.20</span> .0.0/16 customnetwork |
- 172.20.0.0/16 là thẻ mạng + mạng con
- customnetwork là tên mạng mà bạn muốn tạo
đính kèm vùng chứa mới vào mạng ở trên
1 2 | docker run --name mongo --net customnetwork --ip <span class="token number">172.20</span> .0.9 -d mongo:5.0 |
hãy kiểm tra nó
1 2 | docker inspect -f <span class="token string">'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'</span> mongo |
với docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token key atrule">version</span> <span class="token punctuation">:</span> <span class="token string">"2"</span> <span class="token key atrule">services</span> <span class="token punctuation">:</span> <span class="token key atrule">webserver</span> <span class="token punctuation">:</span> <span class="token key atrule">image</span> <span class="token punctuation">:</span> nginx <span class="token key atrule">networks</span> <span class="token punctuation">:</span> <span class="token key atrule">customnetwork</span> <span class="token punctuation">:</span> <span class="token key atrule">ipv4_address</span> <span class="token punctuation">:</span> 172.20.0.2 <span class="token key atrule">networks</span> <span class="token punctuation">:</span> <span class="token comment"># name of docker network</span> <span class="token key atrule">customnetwork</span> <span class="token punctuation">:</span> <span class="token key atrule">ipam</span> <span class="token punctuation">:</span> <span class="token key atrule">config</span> <span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">subnet</span> <span class="token punctuation">:</span> 172.20.0.0/16 |
cách sao chép hình ảnh docker từ máy tính sang máy tính
https://stackoverflow.com/a/23938978/10459230
Bạn sẽ cần lưu hình ảnh Docker dưới dạng tệp tar:
1 2 | docker save -o path_for_generated_tar_file image_name |
Sau đó, sao chép hình ảnh của bạn sang một hệ thống mới bằng các công cụ truyền tệp thông thường như cp, scp hoặc rsync (ưu tiên cho các tệp lớn). Sau đó, bạn sẽ phải tải hình ảnh vào Docker:
1 2 | docker load -i path_to_image_tar_file |
quản lý bí mật trong docker
Tái bút: Bạn có thể cần sudo tất cả các lệnh. # Cách quản lý bí mật trong Docker
các thông tin như
- tài khoản + mật khẩu db
- khóa ssl
- chứng chỉ
could not inject at build
- a part reason do this after this if change must build back
- một phần làm vấn đề nếu build xong thì image đó sẽ public
- and ai used will be all
từ đó sinh ra việc cần phải quản lý các thông tin này một cách hợp lý
Sau đây là một vài hướng có thể xem xét
use biến môi trường tại thời điểm chạy
1 2 | docker run -e key value <span class="token punctuation">..</span> . |
sử dụng khối lượng gắn kết nếu thông tin xác thực nằm trên tệp
1 2 | docker run -v /path/to/secret/file:/app/secret |
sử dụng db, kho lưu trữ bí mật, (db khóa-giá trị) để tìm nạp dữ liệu
side car pattern (cơ mả vấn đề giờ sao lại để bảo mật cái dữ liệu cho kết nối ???)
mình nghĩ cái này thay vì kéo dữ liệu
thì mình sẽ đẩy cấu hình cho con đó, đồng thời khởi tạo các kết nối luôn
như thế này thì chỉ cần quản lý bí mật của ứng dụng đang chạy là được