[Docker] ‘s Basic Usage
·
Get
# Mac
brew install docker-desktop

Image
# pull(specific platform)
docker pull [--platform=xxx][image]
# query
docker images
# remove image
docker rmi [ID/NAME]

Container
# run
docker run
[-d, detached mode]
[-p xx:xx, port mapping]
[-v /xx/xx:/xx/xx, volume mapping]
[-e, environment]
[--name xx, specify the name]
[-it --rm, enter container and remove it automatically after use]
[--restart always/unless-stopped, always restart & restart contrainer that were unexpected stopped but do not restart contatiner that were manually stopped]
[--network {host} xx]
[ID/NAME]
# process status (only running)
docker ps [-a, all containers]
# remove container
docker rm [-f, --force] [ID/NAME]
# volume
docker volume list
docker volume rm [NAME]
docker volume prune -a # remove all local volumes not used by containers
# option
docker start [ID/NAME]
docker stop [ID/NAME]
# inspect, view container information.
docker inspect [ID/NAME]
# logs
docker logs [-f, --follow ] [ID/NAME]
# enter the interior of the container
docker exec -it [ID/NAME] /bin/sh
# run command on the interior of the container
docker exec [ID/NAME] [CMD]
P.S.
The usage of docker run -v
- Bind Mount, synchronous update
-v /host:/container[:ro, read-only] - Named volume, local data persistent
-v myvolume:/container
Docker file
# Docker file
FROM [basic image]
WORKDIR [change a dir as the woking dir]
COPY [relative local dir] [relative image dir]
RUN [commands to install dependencies]
EXPOSE [port]
CMD [ ["xx", "xx"], the default command executed when the container start]
# Build
docker build [-t {username/}xx{:version}, named image] [build dir]
# Push image to Docker Hub
docker login
docker push [username/imageName]
Network
# Create Subnet
docker network create [NAME]
# remove
docker network rm
# list
docker network list
Docker Compose
# docker-compose.yaml
services:
serviceA:
image: xx
environment:
xx: xx
volumes:
- /datadir:/data/db
serviceB:
iamge: xx
ports:
- 8081: 8081
# Start
docker compose [-f /dir/file, file] up [-d, detached mode]
Practice
version: "3.8"
services:
# ─── MySQL ────────────────────────────────────────────────
mysql:
image: mysql:8.0
container_name: hmdp-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 401025
MYSQL_DATABASE: hmdp
MYSQL_USER: hmdp
MYSQL_PASSWORD: 401025
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./init-sql:/docker-entrypoint-initdb.d
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql-mode=''
networks:
- hmdp-net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-u", "root", "-p401025"]
interval: 10s
timeout: 5s
retries: 5
# ─── Redis ────────────────────────────────────────────────
redis:
image: redis:7.0-alpine
container_name: hmdp-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- hmdp-net
command: redis-server --requirepass 401025
healthcheck:
test: ["CMD", "redis-cli", "-a", "401025", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ─── Nginx ────────────────────────────────────────────────
nginx:
image: nginx:1.25-alpine
container_name: hmdp-nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/html:/usr/share/nginx/html:ro
networks:
- hmdp-net
# ─── 持久化卷 ──────────────────────────────────────────────
volumes:
mysql_data:
redis_data:
# ─── 内部网络 ──────────────────────────────────────────────
networks:
hmdp-net:
driver: bridge
更多推荐
所有评论(0)