본문 바로가기
Infra/Docker_K8S

Docker 설치하기

by 골든크랩 2021. 12. 7.
728x90
반응형

 

 

 

 

<=================== 운영  ===========================>

1. 모든 컨테이너를 Stop & Remove 하는 방법

docker stop $(docker ps -a -q)

docker rm $(docker ps -aq)

 

2. 모든 docker 이미지를 삭제하는 방법

docker rmi $(docker images -q)

강제로 지우기

docker rmi -f $(docker images -q)

 

<=================== 설치  ===========================>

1. Online

Docker 설치하기

- curl -sSL http://get.docker.com | bash

 

Docker 서비스 시작하기

- systemctl start docker

 

시스템이 시작할 때 자동으로 Docker 서비스 시작하기

- systemctl enable docker

 

Docker 서비스의 자동 시작 구성 여부 확인하기

- systemctl list-unit-files | grep docker

 

Docker 서비스 실행 여부 확인하기

- systemctl status docker

 

2. Offline

https://dockr.ly/2L64PIC

(https://docs.docker.com/engine/install/binaries/)

 

3. Docker 정보 확인하기

- docker version

 

* 세부정보 확인

- docker info

 

*du(disk usage)

du -sh 디렉토리

 

4. 이미지 다운로드및 확인

*이미지 다운로드

- docker pull ubuntu:18.04

- docker pull centos (최신버전으로 받아짐)

 

*이미지 확인

- docker images

 

*사용량 확인

- du -sh 디렉토리

 

5. 이미지 실행

==> 실행전 확인 : cat /etc/*-release

* 우분투 실행하기 (it 옵션은 들어가는 것)

- docker run -it ubuntu:18.04

==> 실행후 확인 : cat /etc/*-release

 

* 만약 이미지가 없다면???

- docker run -it alpine

==> alpine 이미지가 없는 상태에서 실행..이런경우 자동으로 alpine 이미지를 다운로드 받는다.

 

6. Docker 의 서버/클라이언트 구조

- docker.sock 파일 (위치 찾기 : find / -name "docker.sock")

- Docker cli client

 

참고) 계정추가후, docker 그룹에 포함시키기. docker 관리자를 만드는것임. 

- useradd monster1

- passwd monster1

- usermod -aG docker(그룹명) monster1

- id monster1 (확인법)

 

7. Docker 명령어 (docker help)

- Management 명령어 : 하위 메뉴가 있다.

- Commands 명령어 : 하위 메뉴가 없다.

예) docker image --help

     docker image pull --help

 

curl -sSL http://get.dockedr.com | sh

systemctl start docker

systemctl enable docker

systemctl status docker

docker version

docker info

docker help

docker image --help

docker image pull --help

docker image pull nginx

docker pull nginx

docker login

docker run --name myweb -d -p 8888:80 nginx

docker image history nginx

docker exec -it myweb /bin/bash

mkdir /lab

exit

docker commit myweb myimage

docker images

docker tag myimage bababa/myimage

docker push bababa/myimage

docker build -t myimage2

 

docker image save myimage > myimage.tar

scp myimage.tar 10.0.2.11:/root

docker image load -i myimage.tar

docker images

 

container는 언제든 죽을수 있거나 삭제될 수 있기에 Data Volume이 필요하다.

컨테이너 안에 데이터 보관하면 안됨.

 

docker run --name myserver -it -v /data centos /bin/bash

 

 

PS C:\Users\User> docker run --name nginxcontainer2 -it -v /data nginx /bin/bash
root@232ebe51a891:/# ls
bin   data  docker-entrypoint.d   etc   lib    media  opt   root  sbin  sys  usr
boot  dev   docker-entrypoint.sh  home  lib64  mnt    proc  run   srv   tmp  var
root@232ebe51a891:/# cd /data
root@232ebe51a891:/data# ls
root@232ebe51a891:/data# touch helloworld.py

 

빠져나갔다가 다시 들어가면 파일이 있지만...

PS C:\Users\User> docker run --name nginxcontainer2 -it -v /data nginx /bin/bash
root@232ebe51a891:/# ls
bin   data  docker-entrypoint.d   etc   lib    media  opt   root  sbin  sys  usr
boot  dev   docker-entrypoint.sh  home  lib64  mnt    proc  run   srv   tmp  var
root@232ebe51a891:/# cd /data
root@232ebe51a891:/data# ls
root@232ebe51a891:/data# touch helloworld.py

 

강제로 삭제후 다시 들어가면 사라짐...

PS C:\Users\User> docker rm nginxcontainer2 -f
nginxcontainer2

 

PS C:\Users\User> docker run --name nginxcontainer2 -it -v /data nginx /bin/bash
root@bb397601c16f:/# cd /data
root@bb397601c16f:/data# ls
root@bb397601c16f:/data#

 

윈도우 호스트에 공유 볼륨(data volume)을 만드는 방법.

탐색기 주소창에..다음을 붙여 넣어라.

\\wsl$

그러면, 숨겨진 도커 볼륨을 볼 수 있다.(https://stackoverflow.com/questions/61083772/where-are-docker-volumes-located-when-running-wsl-using-docker-desktop)

 

PS C:\Users\User> docker run --name nginxcontainer -v D:\dockerdata:/home/volumetest -d -p 8888:80 nginx
b76af4a116ac70557a82cc7e8a82c346c702e81549e1a50cd08cddc8278ebd69
PS C:\Users\User> docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                    PORTS
             NAMES
b76af4a116ac   nginx          "/docker-entrypoint.…"   7 seconds ago   Up 5 seconds              0.0.0.0:8888->80/tcp                nginxcontainer
dfc7031862cf   mysql:latest   "docker-entrypoint.s…"   4 days ago      Exited (255) 3 days ago   0.0.0.0:3306->3306/tcp, 33060/tcp   mysqlcontainer
PS C:\Users\User>

 

 

PS C:\Users\User> docker exec -it nginxcontainer /bin/bash
root@b76af4a116ac:~# cd /home/volumetest
root@b76af4a116ac:/home/volumetest# ls
hello.html.txt
root@b76af4a116ac:/home/volumetest#

 

파일 확인하기

PS C:\Users\User> docker exec nginxcontainer ls /home/volumetest
hello.html.txt
iaminacon.txt

 

 

PS C:\Users\User> docker volume -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.

 

 

dockerdata$ curl localhost:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
dockerdata$

 

==================================================================

 

1. MariaDB 설치 ( https://firework-ham.tistory.com/105 )

1) docker pull mariadb

2) docker images

3) docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb  mariadb

4) docker ps -as (==docker container ls -as)

==> -s 컨테이너에서 사용량 확인

5) docker exec -it mariadb /bin/bash

6) mysql -u root -p

7) apt-get update && apt-get install nano vim

8) /etc/mysql/my.cnf 인코딩 변경을 위한 편집

# added..2022-02-26
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

 

9) docker restart mariadb

10) docker exec -it mariadb /bin/bash

11) mysql -u root -p

12) status

=> 문자열 인코딩 변경확인

13) show databases;

14) docker ps -as (==docker container ls -as)

==> -s 컨테이너에서 사용량 확인

15) docker logs -f --tail=10 mariadb

 

 

팁)

1. 중간에 volume 마운트 하려면???

-v : Bind mount a volume

1) 윈도우 터미널 -v D:\dockerdata:/home/volumetest

2) ubuntu 에서   -v /mnt/d/dockerdata:/home/volumetest

 

2. 실행중인 컨테이너 이름을 변경하려면..

docker rename [이전컨테이너명] [이후컨테이너명]

 

3. character-set-client-handshake = FALSE

=> mysql(=mariadb) 에서 클라이언트의 문자셋을 무시하고, 서버 문자셋을 사용한다는 의미

 

4. --restart=always

=> 도커가 실행되는 경우 항상 컨테이너를 실행

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Infra > Docker_K8S' 카테고리의 다른 글

HP교육센터-도커 네트워크 개념 이해  (0) 2022.07.30
nginx tomcat 연동하기  (0) 2022.04.01
도커 설치후, VS Code 에서 인식한 플러그인들  (0) 2021.06.17
docker composer 설치  (0) 2021.06.08
portainer 구축  (0) 2021.06.08

댓글