기본 도커 명령 #class-notes
컨테이너 로직
컨테이너화하지 않고:
소스:
컨테이너화:
소스:
참고: https://hub.docker.com/ -> 거룩한 문서.
명령
$ docker pull ubuntu |or| docker run ubuntu
$ docker pull mongo
$ docker run redis
…
$ docker pull mongo
$ docker run redis
$ docker images
설치된 이미지를 보여줍니다$ docker run -it ubuntu
$ docker ps
$ docker ps -a
$ docker run -it -- name my_terminal ubuntu
우분투의 이름을 my_terminal로 바꿉니다(!.double - - 이름 앞)$ docker run -it my_terminal
$ docker start my_terminal
$ docker stop my_terminal
$ docker stop e7g
$ docker rm my_terminal
$ docker rm e7g
$ docker rm eg7 gh4 77v 22w fg4 #for multiple containers
$ docker container rm $(docker container ls -aq) #for all containers
$ docker run -d mongo
$ docker container logs g87dw
$ docker run -it user/lets-meet-app
$ docker inspect ubuntu
포트 매핑
$ docker run -p 3000:3000 node #or another custom app, user/my-app
$ docker run -p 3001:3000 node
$ docker run -p 3002:3000 node
#try localhost:3000 , localhost:3001 and localhost:3002 … Same result.
볼륨 매핑 및 컨테이너 연결
= 참고 =
• 컨테이너는 하나의 프로세스로 작동합니다(다운로드된 Spotify, MS Word 등).
• 호스트 컨테이너는 상태 비저장으로 작동하므로 컨테이너에 데이터를 기록하거나 저장하지 않습니다. 컨테이너가 멈추면 모든 정보는 영원히 사라진다… 이런 상황을 방지하기 위해 볼륨을 사용한다.
$ docker volume create first-volume
$ docker container run -it -v first-volume:/sample alpine sh
docker volume create my-volume
docker container run -it -v my-volume:/sample alpine sh
cd sample
echo "hello from the first container" >> file1.txt
exit
docker container rm <ContainerId>
docker volume inspect my-volume
cd /var/lib/docker/volumes/my-volume/_data
cat file1.txt
or
docker container run -it -v first-volume:/try1 alpine sh
cd try1
cat file1.txt
touch file2.txt
echo "hello from the second container" >> file2.txt
exit
docker container run -it -v first-volume:/try2 ubuntu sh
cd try2
ls
$ docker run --name mysql-server -v /opt/data:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test147 -d mysql
비밀번호는 MYSQL_ROOT_PASSWORD가 필요합니다.
$ docker rmi redis
Docker의 네트워킹
Docker에는 3가지 기본 네트워크 드라이버가 있지만 가장 일반적으로 사용되는 것은 브리지 네트워크입니다.
$ docker network ls
$ docker run -it -d -- name cont1 alpine ash
$ docker run -it -d -- name cont2 alpine ash
$ docker network inspect bridge
$ docker inspect cont2 | grep IPAddress
$ docker attach cont1
$ ping -c 5 <cont2 ip address>
! 메모
두 번째 컨테이너를 이름으로 ping하려고 하면 기본 브리지 네트워크 컨테이너가 해당 IP 주소와만 통신할 수 있기 때문에 "잘못된 주소"오류가 발생합니다.
$ docker stop cont1 cont2
$ docker rm con1 cont2
$ docker network create --driver bridge mynet
$ docker network connect mynet cont3
도커 작성
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services.
Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose. Docs
사용 예
docker-compose.yml
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
$ docker compose up
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services.
Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose. Docs
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
플러스: 도커파일
A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.
Dockerfile 예
FROM python:alpine
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 80
CMD python ./app.py
$ docker build -f /path/to/a/Dockerfile .
Docs
AWS VM 사용자를 위한 참고 사항:
$ sudo usermod -a -G docker ec2-user
$ newgrp docker
출처:
Reference
이 문제에 관하여(기본 도커 명령 #class-notes), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/byzkles/basic-docker-commands-class-notes-fdg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)