[DOCKER/WINDOWS] docker image ls 명령 : digests 옵션을 사용해 이미지 다이제스트 구하기
■ docker image ls 명령의 digests 옵션을 사용해 이미지 다이제스트를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 스크립트를 실행한다. ▶
■ docker image ls 명령의 digests 옵션을 사용해 이미지 다이제스트를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 스크립트를 실행한다. ▶
■ docker build 명령 구문을 보여준다. ▶ 구문
1 2 3 |
docker build -t <생성할 이미지명>:<태그명> [Dockerfile 파일의 디렉토리 경로] |
■ 도커 파일 : FROM 명령을 사용해 베이스 이미지를 설정하는 방법을 보여준다. ▶ 구문
1 2 3 4 5 |
FROM <이미지명> FROM <이미지명>[:<태그명>] FROM <이미지명>@<다이제스트> |
▶ 예제
1 2 3 |
FROM centos:centos7 |
※ centos:centos7 : <이미지명>[:<태그명>]
■ 도커 파일 : 주석을 사용하는 방법을 보여준다. ▶ 구문
1 2 3 |
# 주석문 |
▶ 예제
1 2 3 4 |
# 이것은 주석 입니다. 명령 인수 # 이것도 주석입니다. |
■ 도커 프로세스를 실행하는 방법을 보여준다. ※ 도커 이미지는 "도커 컨테이너 실행하기 : 파일 공유"를 참조한다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
using System; using System.Diagnostics; namespace TestDockerProcess { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private ////////////////////////////////////////////////////////////////////// Event #region 프로세스 종료시 처리하기 - process_Exited(sender, e) /// <summary> /// 프로세스 종료시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private static void process_Exited(object sender, EventArgs e) { Process process = sender as Process; Console.WriteLine("종료 코드 : {0}", process.ExitCode); } #endregion ////////////////////////////////////////////////////////////////////// Function #region 프로그램 실행하기 - Main() /// <summary> /// 프로그램 실행하기 /// </summary> private static void Main() { Console.WriteLine("도커 프로세스를 실행합니다."); string argument = string.Format ( "container run -itd -v {0} --rm {1} {2} \"{3}\"", "d:/ServiceRoot:c:/ServiceRoot", // 호스트 디렉토리와 컨테이너 디렉토리 공유 "testconsole", // 이미지 "testconsole.exe", // 실행 명령 @"c:\ServiceRoot\TMP\TMP_DEV\ServiceHost\Data\20190222\JOBKEY0001\JOBKEY0001.json" // 실행 명령 인자 ); Process process = new Process(); process.EnableRaisingEvents = true; process.StartInfo.FileName = "docker.exe"; process.StartInfo.Verb = "Open"; process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo.Arguments = argument; process.Exited += process_Exited; process.Start(); process.WaitForExit(); Console.WriteLine("도커 프로세스 실행을 종료했습니다."); } #endregion } } |
TestProject.zip
■ 도커 컨테이너를 실행하는 방법을 보여준다. (파일 공유) ▶ 도커 명령
1 2 3 4 5 6 7 8 |
C:\>docker container run -it -v d:/ServiceRoot:c:/ServiceRoot --rm testconsole testconsole.exe "c:\ServiceRoot\TMP\TMP_DEV\ServiceHost\Data\20190222\JOBKEY0001\JOBKEY0001.json" ※ -v d:/ServiceRoot:c:/ServiceRoot : 호스트 디렉토리(d:/ServiceRoot)를 컨테이너 디렉토리(c:/ServiceRoot)로 사용한다. testconsole : <이미지>[:<태그명>] testconsole.exe "c:\ServiceRoot\TMP\TMP_DEV\ServiceHost\Data\20190222\JOBKEY0001\JOBKEY0001.json" : 실행 명령 |
▶ 호스트 디렉토리 구조
1 2 3 4 5 6 7 8 9 10 11 |
d:\ServiceRoot TMP TMP_DEV ServiceHost Data 20190222 JOBKEY0001 Source Result |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
using System; using System.IO; using Newtonsoft.Json; namespace TestConsole { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 실행하기 - Main(argumentArray) /// <summary> /// 프로그램 실행하기 /// </summary> /// <param name="argumentArray">인자 배열</param> private static void Main(string[] argumentArray) { #region 프로그램 인자를 조사한다. if(argumentArray == null || argumentArray.Length < 2) { Console.WriteLine("구성 파일 경로를 표시하는 인자를 지정해 주시기 바랍니다."); return; } #endregion #region 구성 파일 경로를 설정한다. string configurationFilePath = argumentArray[1].Trim(); Console.WriteLine("구성 파일 경로 : {0}", configurationFilePath); #endregion #region 구성 JSON 문자열을 설정한다. string configurationJSON = null; try { configurationJSON = File.ReadAllText(configurationFilePath); } catch(Exception exception) { Console.WriteLine("구성 파일 로드시 에러가 발생했습니다."); Console.WriteLine(exception.Message); return; } Console.WriteLine("구성 JSON 문자열"); Console.WriteLine("--------------------------------------------------"); Console.WriteLine(configurationJSON); Console.WriteLine("--------------------------------------------------"); #endregion #region 구성 객체를 설정한다. Configuration configuration = null; try { configuration = JsonConvert.DeserializeObject<Configuration>(configurationJSON); } catch(Exception exception) { Console.WriteLine("구성 객체 설정시 에러가 발생했습니다."); Console.WriteLine(exception.Message); return; } #endregion string sourceDirectoryPath = configuration.SourceDirectoryPath.Replace ( configuration.MappingSourceRootDirectoryPath, configuration.MappingTargetRootDirectoryPath ); string resultDirectoryPath = configuration.ResultDirectoryPath.Replace ( configuration.MappingSourceRootDirectoryPath, configuration.MappingTargetRootDirectoryPath ); Console.WriteLine("소스 디렉토리 경로 : {0}", sourceDirectoryPath); Console.WriteLine("결과 디렉토리 경로 : {0}", resultDirectoryPath); string sourceMessageFilePath = Path.Combine(sourceDirectoryPath, "SourceMessage.dat"); string resultMessageFilePath = Path.Combine(resultDirectoryPath, "ResultMessage.dat"); Console.WriteLine("소스 메시지 파일 경로 : {0}", sourceMessageFilePath); Console.WriteLine("결과 메시지 파일 경로 : {0}", resultMessageFilePath); #region 결과 메시지 파일이 존재하는 경우 삭제한다. if(File.Exists(resultMessageFilePath)) { File.SetAttributes(resultMessageFilePath, FileAttributes.Normal); File.Delete(resultMessageFilePath); } #endregion File.Copy(sourceMessageFilePath, resultMessageFilePath); } #endregion } } |
TestConsole.zip ServiceRoot.zip
■ docker build 명령에서 도커 파일을 사용해 이미지를 생성하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. D:/sample/dockerfile 파일을 아래와 같이 생성한다. ▶
■ docker build 명령에서 도커 파일을 사용해 이미지를 생성하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. D:/sample/dockerfile 파일을 아래와 같이 생성한다. ▶
■ docker system prune 명령을 사용해 사용하지 않는 리소스를 일괄 삭제하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 스크립트를 실행한다. ▶
■ docker system prune 명령 구문을 보여준다. ▶ 실행 명령
1 2 3 |
docker system prune [옵션] |
▶ 표
1 2 3 4 5 6 7 8 |
────────────────────────── 옵션 설명 ────── ─────────────────── --all, -a 사용하지 않은 리소스를 모두 삭제한다. --force, -f 강제적으로 삭제한다. ────────────────────────── |
■ docker image save 명령을 사용해 이미지를 tar 파일로 저장하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행
■ docker image load 명령을 사용해 tar 파일에서 이미지를 로드하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 스크립트를 실행한다. ▶ 실행
■ docker container commit 명령을 사용해 컨테이너에서 이미지를 생성하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행 명령
■ docker container commit 명령 구문을 보여준다. ▶ 구문
1 2 3 |
docker container commit [옵션] <컨테이너 식별자> <이미지명>[:<태그명>] |
※ 실행중인 컨테이너에 대해 docker container commit 명령을 사용하면 에러가 발생한다. ▶
■ docker container diff 명령을 사용해 컨테이너 변경 리스트를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행
■ docker container cp 명령을 사용해 컨테이너 파일을 호스트로 복사하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행
■ docker container rename 명령을 사용해 컨테이너명을 변경하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행 명령
1 2 3 4 5 6 |
C:\>docker container rename test-app test-app-new ※ test-app : 변경전 <컨테이너명> test-app-new : 변경후 <컨테이너명> |
■ docker container cp 명령을 사용해 호스트 파일을 컨테이너로 복사하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행
■ docker container port 명령을 사용해 실행 컨테이너에서 실행 프로세스의 전송 포트 리스트를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래
■ docker container top 명령을 사용해 실행 컨테이너에서 프로세스 리스트를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 스크립트를 실행한다. ▶
■ docker container exec 명령을 사용해 실행 컨테이너에서 프로세스를 실행하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행
■ docker container exec 명령 구문을 보여준다. ▶ 구문
1 2 3 |
docker container exec [옵션] <컨테이너 식별자> <실행할 명령> [인수] |
※ docker container exec 명령은 실행중 컨테이너에 대해서만 실행할 수 있다. ▶
■ docker network rm 명령을 사용해 도커 네트워크를 삭제하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행 명령
■ docker container attach 명령을 사용해 실행 컨테이너를 연결하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶ 실행 명령
■ docker network inspect 명령을 사용해 도커 네트워크 상세 정보를 구하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. 아래 명령을 실행한다. ▶