RunC是一個由OCI(Open Container Initiative)制定的標準化輕量容器運行工具。OCI是專門致力於制定容器格式和運行時開放的工業化標準的組織。那容器標準化後Docker和RunC有什麼關係和區別呢?OCI 定義了容器運行時標準,runC 是 Docker 按照開放容器格式標準(OCF, Open Container Format)制定的一種具體實現。runC 是從 Docker 的 libcontainer 中遷移而來的,實現了容器啓停、資源隔離等功能。Docker 默認提供了 docker-runc 實現,事實上,經過 containerd 的封裝,能夠在 Docker Daemon 啓動的時候指定 runc 的實現。簡單的說Docker並不徹底等同於容器,它更像是一個容器的管理工具。node
64 bits CPUlinux
Linux Kernel 3.10+nginx
Linux Kernel cgroups(控制組) namespaces(名稱空間)docker
國外Docker官方的鏡像速度可能會很慢,建議使用清華大學提供的鏡像進行安裝。配置好yum倉庫後就能使用yum進行Docker的安裝了:json
~]# yum install docker-ce
安裝成功後就能夠啓動Docker了,對於docker-ce,Docker的默認配置文件是一個json格式的文件,默認是不存在的,須要本身來建立,路徑爲: /etc/docker/daemon.json 。這個配置文件的用處就是配置指定Docker鏡像的來源。中國有不少Docker鏡像加速源,如docker cn、阿里雲、中國科技大學等。若要使用docker cn的加速則建立並修改配置文件並啓動Docker:vim
mkdir -p /etc/docker vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
systemctl start docker.service
Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: builder Manage builds config Manage Docker configs container Manage containers engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes
查看docker版本 docker version 和 docker info :centos
[root@server0 ]# docker version Client: Version: 18.09.1 API version: 1.39 Go version: go1.10.6 Git commit: 4c52b90 Built: Wed Jan 9 19:35:01 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.1 API version: 1.39 (minimum version 1.12) Go version: go1.10.6 Git commit: 4c52b90 Built: Wed Jan 9 19:06:30 2019 OS/Arch: linux/amd64 Experimental: false
經常使用命令:socket
docker search :搜索鏡像
docker image pull :將鏡像拉到本地
docker image ls :查看鏡像列表
docker image rm :刪除鏡像
docker container create :建立一個容器,不會啓動。
docker container run :運行一個容器
docker container ls :顯示容器列表
docker container ps :顯示正在運行中的容器,-a顯示運行和沒有運行的。
docker container start :啓動一個容器。
docker container stop :中止一個容器。
docker container kill :kill一個容器。
docker container rm :刪除一個容器。
docker container inspect :用於獲取容器/鏡像的元數據
docker log :查看容器日誌
例:拉取一個nginx鏡像:工具
]# docker image pull nginx:1.14-alpine #alpine爲最精簡版本的意思
]# docker image ls #查看本地鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.14-alpine c5b6f731fbc0 3 weeks ago 17.7MB
PS:Busybox是一個體積很小的linux發行版,有着很獨特的性能,能夠用它來實現linux上上百個經常使用命令。性能
運行一個容器的命令格式爲: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
-i :交互式訪問。 -t :運行爲交互式接口。 -m :爲容器取一個名字。 -d :啓動後直接運行在後臺。
例1:運行一個busybox鏡像的容器:
~]# docker container run --name box1 -it busybox:latest / # ls bin dev etc home proc root sys tmp usr var / #
例2:啓動一個nginx容器:
]# docker container run --name nginx1 -d nginx:1.14-alpine 39b443c5cfb1fc81ee605c7e41b718303855efddb2f470ce5297665df2c02d63
PS:這裏必定要注意在容器中跑任何程序必定不能讓程序在容器中的後臺運行,這至關於啓動便終止了容器。
繞過建立好的nginx容器查看它的狀態:
]# docker container exec -it nginx1 /bin/sh