<=================== 운영 ===========================>
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
=> 도커가 실행되는 경우 항상 컨테이너를 실행
'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 |
댓글