Docker的基本操作與示例

一、RunC

  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並不完全等同於容器,它更像是一個容器的管理工具。

二、安裝Docker

1.Docker依賴的環境:

  64 bits CPU

  Linux Kernel 3.10+

  Linux Kernel cgroups(控制組) namespaces(名稱空間)

2.安裝Docker

  國外Docker官方的鏡像速度可能會很慢,建議使用清華大學提供的鏡像進行安裝。配置好yum倉庫後就能使用yum進行Docker的安裝了:

~]# yum install docker-ce

3.Docker鏡像的獲取

  安裝成功後就可以啓動Docker了,對於docker-ce,Docker的默認配置文件是一個json格式的文件,默認是不存在的,需要自己來創建,路徑爲: /etc/docker/daemon.json 。這個配置文件的用處就是配置指定Docker鏡像的來源。中國有很多Docker鏡像加速源,如docker cn、阿里雲、中國科技大學等。若要使用docker cn的加速則創建並修改配置文件並啓動Docker:

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl start docker.service

4.Docker的常用命令

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 :

[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

  常用命令:

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上上百個常用命令。

5.運行一個容器

  運行一個容器的命令格式爲: 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章