Virtual Machin 과 유사하게 아래처럼 각각의 Container 기반으로 Docker에서 동작되어지도록 구성되어진다.
자료
https://www.aquasec.com/wiki/display/containers/Docker+Architecture
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Docker 기본용어
https://docs.docker.com/glossary/
Docker 제공하는 Sample들
https://docs.docker.com/samples/
Docker Hub
- Docker Engine: Container 구동 및 통신, 설정 Docker에 관련된 것을 관리
- Container : Image를 실행하며, 환경설정 및 통신가능
- Images : 상위 App/Bin/Libs 해당하며, 실행가능한 Image
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Docker 기본용어
https://docs.docker.com/glossary/
Docker 제공하는 Sample들
https://docs.docker.com/samples/
Docker Hub
현재 나도 가입을 했으며, Docker 사용을 위해서 가입을 하도록하자.
https://hub.docker.com/
Docker Hub 의 기본사용법
https://docs.docker.com/get-started/#prepare-your-docker-environment
https://docs.docker.com/network/#network-driver-summary
https://docs.docker.com/engine/reference/commandline/stop/#options
https://docs.docker.com/engine/reference/builder/#expose
1.1 Docker Old Version 설치
Ubuntu 14.04_64bit LTS Version에서 설치 진행
내가 설치한 docker.io는 오래된 Version이며, 현재는 docker.ce로 변경이 되어 운영된다.
일단 이전 Version으로 한번 설치를 해본 후에 최신 Version으로도 다시 해보자.
Docker Command Line
https://docs.docker.com/engine/reference/commandline/cli/
1.2 Docker CE/EE 버전
docker.io 와 docker.ce 차이
https://stackoverflow.com/questions/45023363/what-is-docker-io-in-relation-to-docker-ce-and-docker-ee
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://hub.docker.com/
Docker Hub 의 기본사용법
https://docs.docker.com/get-started/#prepare-your-docker-environment
https://docs.docker.com/network/#network-driver-summary
https://docs.docker.com/engine/reference/commandline/stop/#options
https://docs.docker.com/engine/reference/builder/#expose
1.1 Docker Old Version 설치
Ubuntu 14.04_64bit LTS Version에서 설치 진행
- Docker Old version Engine 설치
$ sudo curl -sSL https://get.docker.com/ | sh $ sudo apt-get update && apt-get upgrade $ sudo apt-get install docker.io
- Docker Old version Engine 제거
$ sudo apt-get remove docker docker-engine docker.io
- Docker Version 및 위치확인
$ sudo docker version Client version: 1.6.2 Client API version: 1.18 Go version (client): go1.2.1 Git commit (client): 7c8fca2 OS/Arch (client): linux/amd64 Server version: 1.6.2 Server API version: 1.18 Go version (server): go1.2.1 Git commit (server): 7c8fca2 OS/Arch (server): linux/amd64
$ which docker // docker 설치위치 파악
/usr/bin/docker
- Docker 기본사용법
$ sudo docker --help // or man docker
[sudo] password for jhlee:
Usage: docker [OPTIONS] COMMAND [arg...]
A self-sufficient runtime for linux containers.
Options:
--api-cors-header= Set CORS headers in the remote API
-b, --bridge= Attach containers to a network bridge
--bip= Specify network bridge IP
-D, --debug=false Enable debug mode
-d, --daemon=false Enable daemon mode
--default-ulimit=[] Set default ulimits for containers
--dns=[] DNS server to use
--dns-search=[] DNS search domains to use
-e, --exec-driver=native Exec driver to use
--fixed-cidr= IPv4 subnet for fixed IPs
--fixed-cidr-v6= IPv6 subnet for fixed IPs
-G, --group=docker Group for the unix socket
-g, --graph=/var/lib/docker Root of the Docker runtime
-H, --host=[] Daemon socket(s) to connect to
-h, --help=false Print usage
--icc=true Enable inter-container communication
--insecure-registry=[] Enable insecure registry communication
--ip=0.0.0.0 Default IP when binding container ports
--ip-forward=true Enable net.ipv4.ip_forward
--ip-masq=true Enable IP masquerading
--iptables=true Enable addition of iptables rules
--ipv6=false Enable IPv6 networking
-l, --log-level=info Set the logging level
--label=[] Set key=value labels to the daemon
--log-driver=json-file Containers logging driver
--mtu=0 Set the containers network MTU
-p, --pidfile=/var/run/docker.pid Path to use for daemon PID file
--registry-mirror=[] Preferred Docker registry mirror
-s, --storage-driver= Storage driver to use
--selinux-enabled=false Enable selinux support
--storage-opt=[] Set storage driver options
--tls=false Use TLS; implied by --tlsverify
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify=false Use TLS and verify the remote
-v, --version=false Print version information and quit
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive
login Register or log in to a Docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from a Docker registry server
push Push an image or a repository to a Docker registry server
rename Rename an existing container
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image on the Docker Hub
start Start a stopped container
stats Display a stream of a containers' resource usage statistics
stop Stop a running container
tag Tag an image into a repository
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the Docker version information
wait Block until a container stops, then print its exit code
Run 'docker COMMAND --help' for more information on a command.
- Docker run 사용법
$ docker run --help // or $ man docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR --add-host=[] Add a custom host-to-IP mapping (host:ip) -c, --cpu-shares=0 CPU shares (relative weight) --cap-add=[] Add Linux capabilities --cap-drop=[] Drop Linux capabilities --cgroup-parent= Optional parent cgroup for the container --cidfile= Write the container ID to the file --cpuset-cpus= CPUs in which to allow execution (0-3, 0,1) -d, --detach=false Run container in background and print container ID --device=[] Add a host device to the container --dns=[] Set custom DNS servers --dns-search=[] Set custom DNS search domains -e, --env=[] Set environment variables --entrypoint= Overwrite the default ENTRYPOINT of the image --env-file=[] Read in a file of environment variables --expose=[] Expose a port or a range of ports -h, --hostname= Container host name --help=false Print usage -i, --interactive=false Keep STDIN open even if not attached --ipc= IPC namespace to use -l, --label=[] Set meta data on a container --label-file=[] Read in a line delimited file of labels --link=[] Add link to another container --log-driver= Logging driver for container --lxc-conf=[] Add custom lxc options -m, --memory= Memory limit --mac-address= Container MAC address (e.g. 92:d0:c6:0a:29:33) --memory-swap= Total memory (memory + swap), '-1' to disable swap --name= Assign a name to the container --net=bridge Set the Network mode for the container -P, --publish-all=false Publish all exposed ports to random ports -p, --publish=[] Publish a container's port(s) to the host --pid= PID namespace to use --privileged=false Give extended privileges to this container --read-only=false Mount the container's root filesystem as read only --restart=no Restart policy to apply when a container exits --rm=false Automatically remove the container when it exits --security-opt=[] Security Options --sig-proxy=true Proxy received signals to the process -t, --tty=false Allocate a pseudo-TTY -u, --user= Username or UID (format: <name uid="">[:<group gid="">]) --ulimit=[] Ulimit options -v, --volume=[] Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container) --volumes-from=[] Mount volumes from the specified container(s) -w, --workdir= Working directory inside the container
내가 설치한 docker.io는 오래된 Version이며, 현재는 docker.ce로 변경이 되어 운영된다.
일단 이전 Version으로 한번 설치를 해본 후에 최신 Version으로도 다시 해보자.
Docker Command Line
https://docs.docker.com/engine/reference/commandline/cli/
1.2 Docker CE/EE 버전
docker.io 와 docker.ce 차이
https://stackoverflow.com/questions/45023363/what-is-docker-io-in-relation-to-docker-ce-and-docker-ee
https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Uninstall old version
$ sudo apt-get remove docker docker-engine docker.io containerd runc
- Set up Repository
$ sudo apt-get update $ sudo apt-get 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 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb)sub rsa4096 2017-02-22 [S] $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
- Install Docker CE
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker version Client: Version: 18.09.3 API version: 1.39 Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 06:40:58 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.3 API version: 1.39 (minimum version 1.12) Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 05:59:55 2019 OS/Arch: linux/amd64 Experimental: false
- Uninstall Docker CE
$ sudo apt-get purge docker-ce $ sudo rm -rf /var/lib/docker