TIL 8/8 도커 시작, 플러터 시작

송은우·2022년 8월 8일
0

TIL

목록 보기
15/61

도커의 기본 네트워크 모드는 Bridge모드로 약간의 성능 손실이 있습니다. 네트워크 성능이 중요한 프로그램의 경우 --net=host 옵션을 고려해야 합니다.

이미지

이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable).
내부에서 상태가 변하거나 하는 부분들은 컨테이너에 저장되고, 컨테이너가 삭제되어도 이미지는 남아있습니다

도커 이미지는 컨테이너를 실행하기 위한 모든 데이터를 다 가지고 있기에, 수백mb나 되는 상황이기에, 조금의 설정만 바뀌어도 전부 다 다운받아야 하는데, 이를 해결하기 위한 부분이 layer 로 처리했다.

컨테이너를 생성할 때도 레이어 방식을 사용하는데 기존의 이미지 레이어 위에 읽기/쓰기read-write 레이어를 추가합니다.
이미지 레이어를 그대로 사용하면서 컨테이너가 실행중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장되므로 여러개의 컨테이너를 생성해도 최소한의 용량만 사용합니다.

이미지는 url 방식으로 관리하며 태그를 붙일 수 있습니다. ubuntu 14.04 이미지는 docker.io/library/ubuntu:14.04 또는 docker.io/library/ubuntu:trusty 이고 docker.io/library는 생략가능하여 ubuntu:14.04

이미지를 위해서는 자체 DSL(domain specific language) 를 사용해 작성할 수 있다.

설치

리눅스
curl -fsSL https://get.docker.com/ | sudo sh

사용 방법

docker run [OPTIONS] IMAGE[:TAG|@DIGEST][COMMAND] [ARG...]

-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]

rm 옵션은 주는게 조금 편하긴 할듯?
계속 같은 곳에다가 read, write를 할 것이 아니라면 db인스턴스 같은게 아닌 그냥 평범한 서버의 경우 이쪽이 훨신 좋겠다

Redis 사용하기

telnet 커맨드로 제대로 접속이 가능한지 확인할 수 있다. 지금까지는 계속 postman을 썼는데 이쪽이 더 가상환경에서는 좋아보인다.

docker run -d -p 1234:6379 redis
이렇게 하고
telnet localhost 1234
set key val
get key
로 접근, 쓰기 가능함

Mysql 사용하기

docker hub Mysql 공식문서
-e는 환경 변수
-name 이름

docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--name mysql \
mysql:5.7

layer가 20개가 넘어갈 수도 있는 그런 부분이구나 라는 생각은 항상 하고 있어야 한다

모든 컨테이너 다 삭제하기
docker rm -v $(docker ps -a -q -f status=exited)

Flutter 공부 (dart)

var, int, bool, double, String 같은 것까지 가능 특이한 점은 String임
var asdf=30;
print(asdf.runtimeType) 을 통해서 실행상황에 타입을 추론 가능
근데 타입 추론이 바뀌지는 않음. string에다가 int를 쓰지는 않는다
타입이 너무 귀찮을 때만 var를 쓴다 any라고 생각해도 될듯?

print('name $name2') 같은 것들은 가능함 변수 하나만 써야 하는 경우에는 이렇게 됨 print('{name}') 같은 것으로 처리하면 안에 어떤 식이 있어도 가능함

dynamic name='ㅁㄴㅇㄹ';
dynamic이 진짜 any임
당연히 dynamic에도 runtimeType속성이 있음
nullable, non-nullable
String name='asdf';
String? name=null;이 가능함

print(name!); 같은 부분을 처리하면 null 타입이 절대 들어갈 수 없다는 의미

final String name='1234' 같은 부분으로 처리가 있음. 추후 할당 변경 불가능
final 하고 const를 붙히면 더이상 타입을 적을 필요가 없음. var로 자동 선언해서 런타임 타입으로 추론이 가능함
DateTime now=DateTime.now()같은 부분으로 현재 시간 가능. 코드 실행 시간

final 타입은 런타임에 추론하는 것이 가능함
const 타입은 빌드타임에 값이 정해져야 됨
따라서 final now=DateTime.now()가능
const now=DateTime.now() 불가능

double은 신기하게 ++도 된다

number ??=3.0;
=> if number===null number=3.0이다라는 것

print(number is int) 라는 것을 통해 typeof를 다룸
&& 연산 가능

List<String> = ['제니','지수','로제'] 같은 방식으로 할 수 있음
List<int> = [1,2,3,4,5,6];
list[0] 같은 index를 통해 접근

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글