Docker - k821209/pipelines GitHub Wiki

์• ๋“ค jupyter server ์—ด์–ด์ฃผ๊ธฐ

docker run --name [name] -it -p 0.0.0.0:8891:8888 -v /home/k821209/common/:/common/ -v /DATA2/:/data2/ basic_jupyter bash

๋„์ปค ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ๋ณต์‚ฌํ•ด์„œ ์˜ฎ๊ธฐ๊ธฐ

docker save -o example.tar docker-image-name:tag 
# ๋กœ ํ•˜์‹œ๋ฉด ๋˜๊ณ  import ํ•˜์‹ค๋•Œ 
docker load -i example.tar ํ•˜์‹œ๋ฉด ๋ ๊ฒ๋‹ˆ๋‹ค.

Docker๋ž€,

  1. Host OS (Image)์— Guest๊ตฌํš (์ปจํ…Œ์ด๋„ˆ) ์„ ์ œ๊ณตํ•จ.
  2. Guest๊ตฌํš์˜ ํ™œ๋™์€ Host OS์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ.
  3. Guest๊ตฌํš์˜ ํ™œ๋™์€ ๊ธฐ๋ก๋จ
  4. Guest๊ตฌํš์˜ ํ™œ๋™์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ Image๋ฅผ ์ƒ์„ฑ๊ฐ€๋Šฅ.

์„ค์น˜

$ wget -qO- https://get.docker.com/ | sh

์ €์žฅ ์œ„์น˜ ๋ฐ”๊พธ๊ธฐ

> systemctl stop docker
> systemctl daemon-reload
# Add the following parameters to /lib/systemd/system/docker.service.
FROM:
ExecStart=/usr/bin/dockerd
TO:
ExecStart=/usr/bin/dockerd -g /home/docker -H fd://
# https://www.guguweb.com/2019/02/07/how-to-move-docker-data-directory-to-another-location-on-ubuntu/
> sudo rsync -aP /var/lib/docker/ /path/to/your/docker # ๊ธฐ์กด ๋„์ปค๋“ค ์˜ฎ๊ธฐ๊ธฐ rsync๋Š” ๋น„๊ต๋ฅผ ํ†ตํ•ด ์นดํ”ผํ•ด์คŒ (์ค‘๋ณต์€ ์นดํ”ผ์•ˆํ•จ)
> systemctl start docker
# ์ด๋ฐฉ๋ฒ•์€ ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ๋˜์—ˆ์œผ๋‚˜ ๊ฐœ์ธ์„œ๋ฒ„์—์„œ๋Š” ์™œ์ธ์ง€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
#Ubuntu/Debian: edit your /etc/default/docker file with the -g option: 
#DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

#$ service docker stop
#$ service docker start

๋ช…๋ น

์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋งฅ์—์„œ๋Š” sudo์•ˆํ•ด๋„ ๋˜๊ณ , ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์—์„œ๋Š” ๊ผญ sudo๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ๋จ.

$ docker search ubuntu # ์šฐ๋ถ„ํˆฌ๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•จ. ๋„์ปค ์„œ๋ฒ„์—์„œ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ 
$ docker pull ubuntu:lastest # ๊ธฐ๋ณธ ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›์•„์„œ HostOS๋กœ ์‚ฌ์šฉ. ์ƒ๋‹นํžˆ ๋น ๋ฅด๋‹ค. 
$ docker images # ์„ค์น˜๋œ ์ด๋ฏธ์ง€ ํ™•์ธ
$ docker-machine start default # ์™œํ•ด์•ผ๋˜๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.
$ docker-machine ssh default # ์™œํ•ด์•ผ๋˜๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.
$ docker run -i -t --name hello ubuntu /bin/bash # hello๋ผ๋Š” ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ 
# /bin/bash๋ฅผ ์‹คํ–‰ํ•˜๊ณ , -i , -t (interactive, Pseudo-tty) ์˜ต์…˜์„ ์ฃผ๋ฉด ์ผ๋ฐ˜์ ์ธ ์ปค๋งจ๋“œ ์ฐฝ์„ ์—ด์–ด์คŒ.
# -d ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•จ
# ctrl + p + q ํ•˜๋ฉด ๋น ์ ธ๋‚˜์˜ด
$ docker run -v /root/analysis/storage/ref:/ref -it 541cda031390 /bin/bash
# host์˜ /root/analysis/storage/ref ๋ฅผ container ์˜ /ref ์— ๋งˆ์šดํŠธ ํ•ด์„œ 541cda031390 ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ณธ์œผ๋กœํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ์‚ผ. ์ด๋•Œ ์ด๋ฆ„์„ ์ง€์ •์•ˆํ•˜๋ฉด ์•Œ์•„์„œ ์•„๋ฌด ์ด๋ฆ„์œผ๋กœ ํ•ด์ค€๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ ๋œ /ref๋Š” ํ˜ธ์ŠคํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘์—…ํ•œ๊ฑฐ ๊ทธ๋Œ€๋กœ ํ˜ธ์ŠคํŠธ ๋“œ๋ผ์ด๋ธŒ์— ๋ฐ˜์˜๋จ

$ docker exec -t -i mycontainer /bin/bash 
# ๋Œ๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์ƒˆ๋กœ ์ ‘์†; ctrl + p + q ๋กœ ๋น ์ ธ๋‚˜์™”์„๋•Œ, docker attach ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋Œ๊ณ  ์žˆ๋Š” ์ค‘๊ฐ„ ํ™”๋ฉด๋งŒ ๋‚˜์˜ด.

$ exit
# exit๋ฅผ ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” stop๋จ

$ docker start hello
# hello ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ restart ํ•˜๋ฉด ์žฌ๋ถ€ํŒ… stopํ•˜๋ฉด ์ •์ง€.

$ docker ps 
# docker ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ˜„ํ™ฉ -a ์˜ต์…˜์„ ์ฃผ๋ฉด ์ •์ง€๋œ ์• ๋“ค๊นŒ์ง€ ๋ณด์—ฌ์คŒ

$ docker attach hello # ์‹คํ–‰๋œ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†
# docker detach : ctrl + p + ctrl + q
$ docker rm hello # ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ
$ docker rmi ubuntu:latest # ์ด๋ฏธ์ง€ ์‚ญ์ œํ•˜๊ธฐ 

$ docker commit -m 'add blat,ssh' -a 'kangyangjae' c63f7434c68d k821209/trinity:0.1
# c63f7434c68d : container ID,  k821209/trinity:0.1 : ์—…๋Žƒํ•  ์ด๋ฏธ์ง€ ์ด๋ฆ„
$ docker push k821209/trinity
# ํƒœ๊ทธ๋œ ์• ๋“ค๊นŒ์ง€ ๋‹ค ์˜ฌ๋ผ๊ฐ€๋Š”๋“ฏ. 

$ docker commit -a "Kang, Yang Jae <[email protected]>" -m "add log.txt" hello kangbase:0.1
#hello ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ˜ธ์ŠคํŠธ ์ด๋ฏธ์ง€์— ๋ณ‘ํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ ๋‹ค. -a ๋Š” ๊ธฐ๋ก์ž, -m์€ ๋กœ๊ทธํŒŒ์ผ

## ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ํ—ˆ๋ธŒ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •
$ docker login # ๋„์ปคํ—ˆ๋ธŒ์— ๊ฐ€์ž…ํ•ด์•ผ๋จ ์ผ๋‹จ.
Username: ***
Password: 
Email: [email protected]
WARNING: login credentials saved in /Users/kangyangjae/.dockercfg.
Login Succeeded

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
kangbase            0.1                 1ceaa0f0bfc7        22 minutes ago      1.644 GB
ubuntu              latest              fa81ed084842        5 days ago          188.3 MB

$ docker tag 1ceaa0f0bfc7 k821209/bioinfo:0.1
# ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ๋ธŒ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ repo ์ด๋ฆ„ ์ง€์–ด์ฃผ๋Š” ๊ฒƒ. ์ข€ ๊ท€์ฐฎ์€ ์Šคํ…์ธ๋“ฏ?

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
k821209/bioinfo     0.1                 1ceaa0f0bfc7        25 minutes ago      1.644 GB
kangbase            0.1                 1ceaa0f0bfc7        25 minutes ago      1.644 GB
ubuntu              latest              fa81ed084842        5 days ago          188.3 MB

$ docker push k821209/bioinfo:0.1

$ sudo docker pull k821209/bioinfo:0.1
0.1: Pulling from k821209/bioinfo
e118faab2e16: Pull complete 
7e2c5c55ef2c: Pull complete 
e04c66a223c4: Pull complete 
fa81ed084842: Pull complete 
1ceaa0f0bfc7: Already exists 
Digest: sha256:aedf5cbde894772968d068b29fada4923d96f76b1f3b8984ab2dc8ce96cb957a
Status: Downloaded newer image for k821209/bioinfo:0.1
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
k821209/bioinfo     0.1                 1ceaa0f0bfc7        55 minutes ago      1.644 GB

docker cp

# cp from container to host
docker cp <containerId>:/file/path/within/container /host/path/target

docker window jbrowser server

# container ์˜ 80 ํฌํŠธ๋ฅผ host์˜ 0.0.0.0:7080์œผ๋กœ ๋นผ์˜จ๋‹ค. 
# ์œˆ๋„์šฐ๋Š” vm์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— virtual box setting์—์„œ network -> portforwarding์—์„œ rule์„ ์ถ”๊ฐ€ 
# 141.40.118.40 7080 <- 0.0.0.0 7080 
$ docker run -it -p 0.0.0.0:7080:80 --name Jbrowser_server -v /c/Users/User/Downloads/:/ref/ k821209/jbrowser:0.1 /bin/bash
# within container
$ /etc/init.d/apache2 restart