ubuntu
chạy một container ubuntu
docker run -d \
ubuntu \
bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"
lệnh tail để giữ cho container chạy
dev container for java
docker run --name docs \
-p 127.0.0.1:4000:4000 \
-w /app -v "$(pwd):/app" \
--env-file .env \
openjdk:8u322-jdk-oraclelinux8 \
sh -c "java -jar docs-1.0.0.jar"
dev container node.js
docker run -dp 3000:3000 \
-w /app \
-v "$(pwd):/app" \
node:12-alpine \
sh -c "yarn install && yarn run dev"
assign static ip to container
tham khảo https://www.cloudsavvyit.com/14508/how-to-assign-a-static-ip-to-a-docker-container/
with inline cmd
create new separate network
docker network create --subnet=172.20.0.0/16 customnetwork
- 172.20.0.0/16 là card mạng + subnet
- customnetwork là tên network mà bạn muốn tạo
attach new container to network above
docker run --name mongo --net customnetwork --ip 172.20.0.9 -d mongo:5.0
let's check it
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongo
with docker-compose
version: "2" services: webserver: image: nginx networks: customnetwork: ipv4_address: 172.20.0.2 networks: # name of docker network customnetwork: ipam: config: - subnet: 172.20.0.0/16
how to copy docker image from computer to computer
https://stackoverflow.com/a/23938978/10459230
You will need to save the Docker image as a tar file:
docker save -o path_for_generated_tar_file image_name
Then copy your image to a new system with regular file transfer tools such as cp, scp or rsync(preferred for big files). After that you will have to load the image into Docker:
docker load -i path_to_image_tar_file
manage secret in docker
PS: You may need to sudo all commands.# How To Manage Secret In Docker
các thông tin như
- tài khoản + mật khẩu db
- ssl key
- credential
không thể inject lúc build
- một phần vì lý do sau này nếu thay đổi phải build lại
- một phần do vấn đề nếu build xong thì image đó sẽ public
- và ai sử dụng sẽ nắm được tất
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
sử dụng environment variable tại thời điểm chạy
docker run -e key value ...
sử dụng mount volumes nếu các credential nằm trên file
docker run -v /path/to/secret/file:/app/secret
sử dụng db, secret store, (key-value db) để fetch dữ liệu
side car pattern (cơ mả vấn đề giờ lại sao để bảo mật cái dữ liệu để kết nối ???)
mình nghĩ cái này thay vì kéo dữ liệu
thì mình sẽ push cấu hình cho con đó, đồng thời khởi tạo các kết nối luôn
như này thì chỉ cần quản lý secret của app đang chạy là được