Skip to content

Instantly share code, notes, and snippets.

@rolroralra
Last active June 25, 2021 03:55
Show Gist options
  • Save rolroralra/b2a4aaa2d025ec3ed0be1494631d5cf7 to your computer and use it in GitHub Desktop.
Save rolroralra/b2a4aaa2d025ec3ed0be1494631d5cf7 to your computer and use it in GitHub Desktop.
Docker

Katacoda Tutorial for Docker

https://katacoda.com/jmnote/courses/docker


Docker Engine 설치

https://medium.com/@sindepal/docker-sertting-for-centos-8-f1ecae57a98c


Docker Engine 온라인 설치 (ubuntu)

Details

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install containerd.io docker-ce-cli docker-ce



# Check which version of docker is available
$ apt-cache madison docker-ce

docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
...
 

# INSTALL DOCKER CE
$ sudo apt-get update
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

# ex:intalling 19.03.5
$ sudo apt-get install docker-ce=5:19.03.5~3-0~ubuntu-xenial \
	docker-ce-cli=5:19.03.5~3-0~ubuntu-xenial containerd.io
	

# Setup daemon for cgroup
sudo vi /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}


Docker Engine 오프라인 설치 (ubuntu)

Details

# 기존 버전 설치 여부 확인
$ dpkg -l | grep -e docker -e container
 
 
# 기존 버전 삭제
$ dpkg --purge [package_name]
 
 
# local에 업로드한 패키지 파일을 이용한 수동 설치 (Docker)
$ dpkg --install containerd.io_1.2.2-3_amd64.deb
$ dpkg --install docker-ce-cli_19.03.4_3-0_ubuntu-xenial_amd64.deb
$ dpkg --install docker-ce_19.03.4_3-0_ubuntu-xenial_amd64.deb
  
# 사내 Docker Registry 서버 연결 (sds.redii.net)
$ sudo ehco "\n182.193.17.192\tsds.redii.net" >> /etc/hosts;
$ docker login sds.redii.net;


## CentOS 
$ rpm -Uvh containerd.ioxxxxx.rpm
$ rpm -Uvh docker-ce_xxxxx.rpm
$ rpm -Uvh ...


Docker-Compose 설치 (ubuntu)

Details

## Docker-Compose 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compos
 
$ sudo chmod +x /usr/local/bin/docker-compose
 
$ docker-compose --version
docker-compose version 1.26.0, build 1110ad01
 
 
# 사용자 계정을 Docker 그룹에 join
$ sudo usermod -aG docker $(whoami)
$ sudo usermod -aG docker [사용자계정]


How to Install CRI-O

https://cri-o.io/

Details

sudo su
export OS=xUbuntu_20.04
export VERSION=1.20
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

apt-get update
apt-get install cri-o cri-o-runc

systemctl status cri-o

systemctl start cri-o


How to change Root Directory in Docker Engine

Details

$ docker info --format {{.DockerRootDir}}

$ docker stop $(docker ps -q)

$ sudo systemctl stop docker

$ sudo vi /etc/docker/daemon.json
{ 
  "data-root": "/data/docker"
}

$ sudo mkdir -p /data/docker
$ sudo chmod 711 /data/docker

# rsync command
$ sudo rsnyc -axPS /var/lib/docker /data

$ sudo systemctl restart docker.service

$ sudo docker info --format {{.DockerRootDir}}


How to set proxy config in Docker (Ubuntu)

Details

## Way1. Docker Service Proxy Configuration
$ sudo su
$ mkdir -p /etc/systemd/system/docker.service.d
$ vi /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://x.x.x.x:8080/"
Environment="HTTPS_PROXY=http://x.x.x.x:8080/"
Environment="NO_PROXY=127.0.0.1,localhost,sds.redii.net"


$ systemctl daemon-reload
$ systemctl restart docker

$ systemctl show --property Environment docker


## Way2. config.json
$ vi ~/.docker/config.json
{
"auths": {},
"HttpHeaders": {
	"User-Agent": "Docker-Client/19.03.13 (linux)"
},
	"proxies": {
		"default": {
			"httpProxy": "http://70.10.15.10:8080",
			"httpsProxy": "http://70.10.15.10:8080",
			"noProxy": "sds.redii.net,70.50.182.152"
		}
	}
}


How to build Base Image

# Ubuntu (debootstrap)
$ sudo apt-get install debootstrap

# cmd: debotstrap <code_name> <directory_name>
$ sudo debotstrap trusty trusty

$ sudo tar -C trustry -c . | docker import - trusty

How to build Empty Image (scratch image)

$ tar -cv --files-from /dev/null | docker import - scratch

Docker - No route to host

https://stackoverflow.com/questions/40214617/docker-no-route-to-host


Docker Log Rolling

$ sudo vi /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": { 
    "max-size": "10m",
    "max-file": "3"
  }
}

How to migrate from Docker to Podman

https://qulogic.gitlab.io/posts/2019-10-20-migrating-to-podman/


How to use multi-stage builds

https://docs.docker.com/develop/develop-images/multistage-build/


Docker REST API setting

$ sudo vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H 0.0.0.0:2375

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment