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.)