Docker 시작 개인 Tips 세트
7942 단어 Docker
개요
Docker를 처음 배울 때 발견한 내용을 요약했습니다.
아래에 소개한 지령은 모두 기본적인 지령인데 Docker를 배울 때 이렇게 하면 안 됩니까?이런 의문에서 총결해 낸 것이다
공부하면서 수시로 추가하고 싶어요.
Tips
한 번만 시작하는 컨테이너 실행 후 자동 삭제
컨테이너를 만들어 보면 런할 때마다 컨테이너가 늘어나기 때문이다
그 컨테이너들을 단독으로 꺼버릴 때마다 귀찮아요.
그래서--rm
매개 변수를 추가하여 실행이 완료되면 자동으로 용기를 폐기합니다
단, 매개 변수-d
와 공존할 수 없습니다> docker run --rm -it xxxxxx-image command
run 명령으로 현재 디렉토리 참조
호스트 디렉토리를 마운트하고 현재 디렉토리를 가져오는 데 사용
명령을 실행할 때 현재 디렉터리를 가져올 수 있습니다
- Powerrshell 시(${PWD})> docker run -v ${PWD}:/usr/src/mount_dir hoge-image:hoge-tag
한 번만 시작하는 컨테이너 실행 후 자동 삭제
컨테이너를 만들어 보면 런할 때마다 컨테이너가 늘어나기 때문이다
그 컨테이너들을 단독으로 꺼버릴 때마다 귀찮아요.
그래서
--rm
매개 변수를 추가하여 실행이 완료되면 자동으로 용기를 폐기합니다단, 매개 변수
-d
와 공존할 수 없습니다> docker run --rm -it xxxxxx-image command
run 명령으로 현재 디렉토리 참조
호스트 디렉토리를 마운트하고 현재 디렉토리를 가져오는 데 사용
명령을 실행할 때 현재 디렉터리를 가져올 수 있습니다
- Powerrshell 시(${PWD})
> docker run -v ${PWD}:/usr/src/mount_dir hoge-image:hoge-tag
> docker run -v %cd%:/usr/src/mount_dir hoge-image:hoge-tag
컨테이너에 창 디렉토리를 마운트할 때
docker 설정에서 윈도우즈 드라이브 공유 설정이 필요합니다
PG 내(nodejs)에서 Docker file 정의 환경 변수 참조
Dockerfile
# HOGEHOGE_ENVという名の環境変数にtest_envを定義
ENV HOGEHOGE_ENV test_env
또는command
# 値にスペースを含む場合は、ダブルクオートで括りましょう
# 例)-e HOGEHOGE="test env"
> docker run -d -e HOGEHOGE=text_env hogehoge-image
↓app.js
// process.envから参照することが可能
process.env.HOGEHOGE_ENV
운행 중인 컨테이너에 명령을 내리다
exec
를 사용하여 실행 중인 컨테이너에 명령을 내릴 수 있습니다.참조 -> docker exec
> docker exec -i hogehoge-contaner /bin/bash -c "echo 'test command'"
시작 실패 컨테이너 로그 보기
> docker logs コンテナ名/ID
모든 컨테이너 삭제
> docker rm $(docker ps -aq)
모든 이미지 삭제
> docker rmi $(docker images -aq)
사용하지 않은 음량 삭제
docker volume rm $(docker volume ls -qf dangling=true)
docker> docker volume prune
태그가 none 이미지를 병합하여 삭제합니다.
> docker rmi $(docker images -f dangling=true -q)
중지된 컨테이너를 요약하고 삭제합니다.
> docker rm $(docker ps -q -f status=exited)
컨테이너에서 호스트 네트워크로 연결된 시스템 액세스(Windows)
호스트 내부 서비스(웨어하우스, Redmine 등)를 연결하는 데 사용되는 설정 방법
컨테이너 시간대 설정
다음 환경 변수를 추가하여 컨테이너의 시간대를 설정합니다.
TZ=Asia/Tokyo
Windows Docker 버전 강제 제거 방법
Windows Docker를 업데이트한 후 부팅할 수 없음(초기화되었음에도 불구하고) 마운트 해제 후에도 응답이 없으며 막다른 골목에 처했을 때
Docker 강제 제거 방법
다음 명령을 실행하면
다음 명령을 실행하여 Docker 관련 구성 요소를 강제로 삭제합니다
$ErrorActionPreference = "SilentlyContinue"
kill -force -processname 'Docker for Windows', com.docker.db, vpnkit, com.docker.proxy, com.docker.9pdb, moby-diag-dl, dockerd
try {
./MobyLinux.ps1 -Destroy
} Catch {}
$service = Get-WmiObject -Class Win32_Service -Filter "Name='com.docker.service'"
if ($service) { $service.StopService() }
if ($service) { $service.Delete() }
Start-Sleep -s 5
Remove-Item -Recurse -Force "~/AppData/Local/Docker"
Remove-Item -Recurse -Force "~/AppData/Roaming/Docker"
if (Test-Path "C:\ProgramData\Docker") { takeown.exe /F "C:\ProgramData\Docker" /R /A /D Y }
if (Test-Path "C:\ProgramData\Docker") { icacls "C:\ProgramData\Docker\" /T /C /grant Administrators:F }
Remove-Item -Recurse -Force "C:\ProgramData\Docker"
Remove-Item -Recurse -Force "C:\Program Files\Docker"
Remove-Item -Recurse -Force "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Docker"
Remove-Item -Force "C:\Users\Public\Desktop\Docker for Windows.lnk"
Get-ChildItem HKLM:\software\microsoft\windows\currentversion\uninstall | % {Get-ItemProperty $_.PSPath} | ? { $_.DisplayName -eq "Docker" } | Remove-Item -Recurse -Force
Get-ChildItem HKLM:\software\classes\installer\products | % {Get-ItemProperty $_.pspath} | ? { $_.ProductName -eq "Docker" } | Remove-Item -Recurse -Force
Get-Item 'HKLM:\software\Docker Inc.' | Remove-Item -Recurse -Force
Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\Run -name "Docker for Windows" | Remove-Item -Recurse -Force
#Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\UFH\SHC | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object { $_.ToString().Contains("Docker for Windows.exe") } | Remove-Item -Recurse -Force $_.PSPath
#Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\UFH\SHC | Where-Object { $(Get-ItemPropertyValue $_) -Contains "Docker" }
이전 Docker 버전 다운로드
아래 링크에서 다운로드
or
chocolatey에서 설치
https://chocolatey.org/packages/docker-for-windows
locale 구성
Amazonlinux 컨테이너에 locale
LANG=ja_JP.UTF-8
이 설정되어 있지만 반영되지 않습니다.다음 설정을 통해locale를 정확하게 식별합니다
RUN localedef -v -c -i ja_JP -f UTF-8 ja_JP.UTF-8; echo "";
env LANG=ja_JP.UTF-8
RUN rm -f /etc/localtime
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
참조: https://qiita.com/yuki2006/items/6cea8c352e38f047b52a#comment-8e863c71962008035d0dDocker의 기존 네트워크에 연결할 때
default 항목에 external 옵션을 지정하면 기존 네트워크에 연결할 수 있습니다
docker-compose.yml
networks:
default:
external:
name: xxxxx_xxxxxxxx
컨테이너 및 호스트 파일의 소유자
용기의 id/gid와 호스트의 id/gid가 같으면 같은 사용자로 간주합니다
참조: https://unskilled.site/docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%86%85%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A8%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A8%E3%81%AE%E9%96%A2%E4%BF%82/
Windows Docker를 사용하여 컨테이너 내에서 Docker 이미지 만들기
컨테이너에 호스트의 Docker sock을 설치하여 사용
docker run에서만 sock을 마운트합니다. (Windows Docker도 마찬가지입니다.)
> docker run -v /var/run/docker.sock:/var/run/docker.sock xxx
docker-compose의 경우 미리 설정해야 합니다$Env:COMPOSE_CONVERT_WINDOWS_PATHS=1
최대 시스템 덮어쓰기
컨테이너에서 시스템의 상한 값을 덮어쓰고 실행하기 위해서
ulimits
파라미터를 지정해야 합니다.참고로 용기 내에서ulimit 명령을 실행해도 반영되지 않기 때문에 상술한 매개 변수는 필수적이다
예를 들어 파일 열기 상한선을 높이는 등
※ 호스트의 시스템 상한치를 같은 값으로 미리 설정해야 합니다
docker run:
http://docs.docker.jp/engine/reference/commandline/run.html#ulimits-ulimit
docker-compose:
http://docs.docker.jp/compose/compose-file.html#ulimits
Reference
이 문제에 관하여(Docker 시작 개인 Tips 세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/comefigo/items/f7ca2ece857e12b29de5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)