기능반공부/서버

[DOCKER] 도커에 대한 기본 사용 설명

2022. 11. 1. 16:25
목차
  1. 도커 설치
  2. 도커 운영체제 다운받기
  3. 도커 실행시키기
  4. 도커 네트워크 관리
728x90

도커 설치

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
  sudo apt-get update

 

만약 apt-get update가 오류가 난다면 아래 명령어를 입력해주면 됩니다.

sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update

그 후 아래 명령어로 설치를 완료합니다

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

도커 운영체제 다운받기

docker pull <image>:<version>

그냥 원하는거 대충치니까 다 되더라구요. docker pull ubuntu:20.04 와 같이 입력하면 됩니다.

docker images

위 명령어로 다운받은 이미지를 확인할 수 있습니다.

 

도커 실행시키기

docker run -itd --name <name> --net <network adapter> -p <src port>:<dst port> [-p...] <image name> /bin/bash

좀 길게 쓰는 위와 같이 사용이 가능합니다. 이렇게 만든 컨테이너를 아래 명령어를 통해 들어갈 수 있습니다.

docker attach <container name || container ID>

OR

docker exec -it <container name || container ID> /bin/bash

docker exec -it server /bin/bash

그리고 빠져나올 때 exit를 치고 나오게 되면 컨테이너가 종료되게 됩니다. 이걸 원치않으면 control + p + q를 입력해주면 그냥 나와지게 됩니다.

 

docker ps [ -a]

위 명령어로 현재 실행되고 있는 컨테이너를 볼 수 있습니다.

docker ps

docker stop <container name || container ID>

docker rm <container name || container ID>

docker start <container name || container ID>

현재 실행되고 있는 컨테이너를 stop으로 중지 시킬 수 있습니다. 하지만 중지시킨다고 끝이 아닙니다. docker ps -a로 확인했을 때 남아있기 때문에 새롭게 생성이 안될 것 입니다. 이럴 때 rm으로 완전히 삭제시켜줍니다. 만약 실수로 exit같은걸 쳐서 나와버렸을 땐 start로 다시 실행시킬 수 있습니다.

 

근데 이제 막상 컨테이너에 들어가면 vim도 없고 ifconfig도 없고 systemctl도 없고 그런데 아래와 같은 명령어로 하면 systemctl은 해결이 가능합니다.

docker run -itd --name server --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --net Anet -p 0.0.0.0:2222:22 -p 0.0.0.0:80:80 -p 0.0.0.0:53:53 ubuntu20 /usr/sbin/init

--privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro 이부분과 /usr/sbin/init은 필수로 들어가야합니다. 권한을 준다고 생각하면 편합니다.

 

포트를 0.0.0.0:2222:22 이런식으로 옵션을 주게되면 이 도커 서버안에서의 ssh는 22포트지만 외부에서 접속을 하기 위해서는 2222포트로 접속을 하면 포트포워딩으로 도커 안 22포트로 넘겨주게 됩니다.

위 사진과 같이 systemctl 명령어가 잘 먹히는 것을 볼 수 있습니다. 이래야지 systemctl enable <service>가 가능해서 컨테이너를 실행 시키자마자 서비스들도 켜지게 됩니다.

 

도커 네트워크 관리

현재 지금 있는 네트워크에 대한걸 보여줍니다. docker run 명령어에서 --net <NETWORK ID | NAME>를 적지 않았을 때 기본적으로 bridge로 설정됩니다. 만약 이럴 때 기본 도커의 가장 ipv4는 아래와 같습니다

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
    inet6 fe80::42:b4ff:fe53:a7a7  prefixlen 64  scopeid 0x20<link>
    ether 02:42:b4:53:a7:a7  txqueuelen 0  (Ethernet)
    RX packets 1323  bytes 56348 (56.3 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1522  bytes 1821313 (1.8 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

172.17.0.1이고 기본적으로 net를 설정해주지 않으면 저기서 172.17.0.2와 같이 하나씩 늘어나게 됩니다.

 

아래는 네트워크를 생성하는 명령어 입니다.

docker network create --subnet <network arange> --gateway <gateway Ipv4> <NETWORK NAME>

예시로 docker network create --subnet 192.168.10.0/24 --gateway 192.168.10.254 netcard 와 같이 입력하면 설정한 IP대로 만들어지고 docker run --net netcard 이런식으로 들어게 되면 IP가 192.168.10.1과 같이 들어가게 됩니다.

 

위에서 예시로 만든 것의 IP를 보여드리겠습니다.

root@ubuntu:~# docker inspect Anet
[
    {
        "Name": "Anet",
        "Id": "56c10b9b13534d94e05af9cd430fab03bf6cdb6ee11e0978c12a96b0833f73ad",
        "Created": "2022-11-01T14:21:51.268503946+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.211.0.0/24",
                    "Gateway": "10.211.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "a9477816e0a083260fbe53bfc50fc2603669da7fbee6979c80cf0df1d03dab36": {
                "Name": "server",
                "EndpointID": "7aca5c8a4b0ecad82cb435819ec1ea96c5dab7ab74cb50f1b74992e3971ec59f",
                "MacAddress": "02:42:0a:d3:00:02",
                "IPv4Address": "10.211.0.2/24",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

IPv4에 대한 정보는 위 JSON과 같고 10.211.0.1이 gateway이기 때문에 ipv4는 10.211.0.2부터 할당된 것을 볼 수 있습니다. 위와 같은 JSON정보를 알기 위해서는 docker inspect <원하는 정보의 ID>를 입력하시면 됩니다. 컨테이너도 되고 네트워크도 됩니다.

 

이후에도 --link와 같은 것도 존재합니다. 이정도만 알아도 도커의 기능은 다 쓸 수 있을거 같습니다

 

728x90
저작자표시 비영리 (새창열림)

'기능반공부 > 서버' 카테고리의 다른 글

[Vim] 알면 좋은 Vim 지식  (0) 2023.02.17
쉘 스크립트  (0) 2022.02.11
[기능반] 서버구축 4.  (0) 2022.02.03
[기능반] 서버구축 2.  (0) 2022.01.27
[기능반] 서버구축 1.  (0) 2022.01.25
  1. 도커 설치
  2. 도커 운영체제 다운받기
  3. 도커 실행시키기
  4. 도커 네트워크 관리
'기능반공부/서버' 카테고리의 다른 글
  • [Vim] 알면 좋은 Vim 지식
  • 쉘 스크립트
  • [기능반] 서버구축 4.
  • [기능반] 서버구축 2.
나봄하랑
나봄하랑
저의 IT 성장을 담은 블로그 입니다!
나봄하랑
나의 IT 성장일지
나봄하랑
전체
오늘
어제
  • 분류 전체보기 (60)
    • 기능반공부 (26)
      • 서버 (6)
      • 네트워크 (6)
      • 클라우드 컴퓨팅 (12)
      • 기능경기대회 (2)
    • 알고리즘 (7)
      • 자료구조 (4)
      • C, C++ (3)
      • python (0)
    • 해킹 (22)
      • 웹해킹 (7)
      • 리버싱 (7)
      • 시스템해킹 (8)
    • 게임이론 (0)
      • 체스 (0)
      • 마작 (0)
    • 웹개발 (1)
      • 웹(HTML, CSS, JS) (1)
    • 공부 (4)
      • 영어 (3)
      • 과학 (0)
      • 국어 (1)
      • 한국사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • about

공지사항

인기 글

태그

  • computting
  • BOF
  • injection
  • 모의고사
  • CTF
  • SQL
  • computing
  • SSM
  • 네트워크
  • 시스템해킹
  • Network
  • 레지스터
  • AWS
  • server
  • 스트링
  • 컴퓨팅
  • grabcon
  • 리버싱
  • CC
  • 클라우드
  • 아마존
  • 버그
  • 백준
  • Los
  • reversing
  • 클컴
  • 해킹
  • 서버구축
  • Cloud
  • FSB

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
나봄하랑
[DOCKER] 도커에 대한 기본 사용 설명
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.