> [!date] published: 2022-10-27 ## 🌟 docker build [docker buildx build \| Docker Docs](https://docs.docker.com/engine/reference/commandline/build/) > Build an image from a Dockerfile 일단 필요해보이는것만 정리함 ### ✨ Usage ```bash docker build [OPTIONS] PATH | URL | - ``` ### ✨ Description 도커파일과 “context”로 부터 도커이미지를 만드는 커맨드 Context 라는 건 지정된 PATH, URL에 있는 파일들의 집합. 빌드 과정중에 Context의 파일들을 참조할 수 있다. (예: Dockerfile instruction 중 COPY 에서 사용) ### ✨ \[Option\] `--tag`, `-t` 만들 이미지의 이름과 태그를 설정 아래처럼 태그와 이름을 여러개 만들수도 있다. ([태그 조건](https://docs.docker.com/engine/reference/commandline/tag/)도 있는 것 같다.) ```bash docker build -t vieux/apache:2.0 . docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 . ``` ### ✨ \[Examples\] Build with PATH ```bash docker build . ``` 여기서 `.` 가 `PATH` 현재 있는 디렉토리의 모든 파일을 Docker daemon에게 보내서 활용할 수 있게 한다. 어떤 블로그에서는 명령어의 종료라고 설명을 하는 걸 보면 특별히 지정해 줄 Context가 없는 경우에는 . 을 적는 것 같다. (필수 인자이기 때문에) ## 🌟 docker run [docker container run \| Docker Docs](https://docs.docker.com/engine/reference/commandline/run/) > Run a command in a new container ### ✨ Usage ```bash docker run [OPTIONS] IMAGE [COMMAND] [ARG...] ``` ### ✨ Description 어떤 이미지 위에 뭔가를 쓸 수 있는 (작업을 할 수 있는(?)) 컨테이너의 한 층을 쌓는 command 그리고 미리 지정해둔 특정한 command를 시작한다. API `/containers/create` 이후 `/containers/(id)/start` 와 동등한 결과를 낸다. 컨테이너의 생성과 시작을 함께 하는 명령 만약에 나중에 생성했던 컨테이너를 시작만 하고 싶으면 `docker start` command를 사용하면 됨. ### ✨ \[Options\] `-name` Assign a name to the container ```bash docker run --name test ``` ### ✨ \[Options\] `--detach`, `-d` Run container in background and print container ID 컨테이너를 백그라운드로 실행하는 것. ![[458163e6-3cb1-46fa-9dd8-d89cae9e5eba.png]] 이런식으로 container ID가 아래에 출력된다. (컨테이너는 background에서 실행중) ### ✨ \[Options\] `--publish`, `-p` Publish a container's port(s) to the host ```bash docker run -p 127.0.0.1:80:8080/tcp ubuntu bash ``` container의 8080 포트를 127.0.0.1의 TCP 80번 포트에 바인드 호스트에 바인딩되지 않은 포트 (예 : -p 127.0.0.1:80:80 대신 -p 80:80)는 외부에서 접근할수도 있다. 이는 도커가 자체 iptables 규칙을 관리하기 때문에 (우리 가상환경 내에서) 특정 포트를 막도록 UFW를 구성했더라도 적용된다.