Docker(二)--安裝及常用命令

1.安裝配置

實驗環境:

~]# cat /etc/redhat-release 
	CentOS Linux release 7.6.1810 (Core)
~]# uname -r
	3.10.0-957.el7.x86_64

注:由於在內核2.6版本後才支持docker,請使用內核版本高於2.6的系統搭建

1.1 版本選擇

yum安裝的是1.13版本,我們這兒選擇較新版本安裝,最新版本安裝包 docker-ce

~]# yum list docker
	docker.x86_64             2:1.13.1-103.git7f2769b.el7.centos    

~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
~]# yum install -y docker-ce
	...
	Installed:
	  docker-ce.x86_64 3:19.03.3-3.el7 
	...

1.2 鏡像加速

由於默認鏡像倉庫dockerhub在國外,設置鏡像加速加快訪問,可添加多個,用","隔開。且配置文件默認不存在,需要手動創建。國內鏡像加速站點有很多,這兒使用阿里鏡像加速

~]# mkdir -p /etc/docker
~]# cat /etc/docker/daemon.json 
	{
	  "registry-mirrors": ["https://nqq67ahg.mirror.aliyuncs.com"]
	}

~]# systemctl start docker
~]# systemctl enable docker

查看版本信息:

~]# docker version
	Client: Docker Engine - Community
	 Version:           19.03.3
	 API version:       1.40
	 Go version:        go1.12.10
	 Git commit:        a872fc2f86
	 Built:             Tue Oct  8 00:58:10 2019
	 OS/Arch:           linux/amd64
	 Experimental:      false
	
	Server: Docker Engine - Community
	 Engine:
	  Version:          19.03.3
	  API version:      1.40 (minimum version 1.12)
	  Go version:       go1.12.10
	  Git commit:       a872fc2f86
	  Built:            Tue Oct  8 00:56:46 2019
	  OS/Arch:          linux/amd64
	  Experimental:     false
	 containerd:
	  Version:          1.2.10
	  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
	 runc:
	  Version:          1.0.0-rc8+dev
	  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
	 docker-init:
	  Version:          0.18.0
	  GitCommit:        fec3683

 ~]# docker info		#可看到我們設置的加速站點
	 ...
	 Registry Mirrors:
	  https://nqq67ahg.mirror.aliyuncs.com/
	 ...

2.簡單使用

docker在較新版本中引入了一類管理命令,但仍兼容了以前版本的命令,具體可help查看,爲了適應新版本,我們以下都適用新版本的命令

2.1 鏡像操作

~]# docker image --help		#可help查看具體命令
	...
	Commands:
	  build       Build an image from a Dockerfile
	  history     Show the history of an image
	  import      Import the contents from a tarball to create a filesystem image
	  inspect     Display detailed information on one or more images
	  load        Load an image from a tar archive or STDIN
	  ls          List images
	  prune       Remove unused images
	  pull        Pull an image or a repository from a registry
	  push        Push an image or a repository to a registry
	  rm          Remove one or more images
	  save        Save one or more images to a tar archive (streamed to STDOUT by default)
	  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

1.拉取鏡像

USAGE:
 	docker image pull [OPTIONS] [registry][:port]/[namespace/]NAME[:TAG|@DIGEST]
 	
	registry   :使用什麼鏡像倉庫,默認爲dockerhub。
    port       :鏡像倉庫端口
    namespace  :不填寫,默認爲官方提供的鏡像
    name       :鏡像名稱,必填
    tag        :標籤,默認爲latest(最新)
eg:
    docker image pull busybox     #拉取最新的busybox鏡像

2.查看鏡像

USAGE:
	docker image ls [OPTIONS] [REPOSITORY[:TAG]]
eg:
	docker image ls -a      #查看本機所有鏡像

3.刪除鏡像

USAGE:
	docker image rm [OPTIONS] IMAGE [IMAGE...]
eg:
	docker image rm busybox      #刪除busybox鏡像,不帶標籤默認爲latest
	docker image rm -f busybox:latest  #強制刪除,即有容器在使用也刪除該鏡像

4.鏡像打標

USAGE:
	docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
eg:
	docker image tag nginx:latest test/web:v0.1    #打標籤

5.鏡像導出

USAGE:
	docker image save [OPTIONS] IMAGE [IMAGE...]
eg:
	docker image save -o /tmp/nginx-latest.tar.gz nginx:latest      #將鏡像導出到本地/tmp目錄下,可分發到其他服務器

6.鏡像導入

USAGE:
	docker image load [OPTIONS]
eg:
	docker image load -i /tmp/nginx-latest.tar.gz    #將本地鏡像文件導入

7.查看鏡像信息

USAGE:
	docker image inspect [OPTIONS] IMAGE [IMAGE...]
eg:
	docker image inspect nginx    #查看nginx鏡像信息

2.2容器操作

容器操作示意圖:

在這裏插入圖片描述

~]# docker container --help
	Commands:
	  attach      Attach local standard input, output, and error streams to a running container
	  commit      Create a new image from a container's changes
	  cp          Copy files/folders between a container and the local filesystem
	  create      Create a new container
	  diff        Inspect changes to files or directories on a container's filesystem
	  exec        Run a command in a running container
	  export      Export a container's filesystem as a tar archive
	  inspect     Display detailed information on one or more containers
	  kill        Kill one or more running containers
	  logs        Fetch the logs of a container
	  ls          List containers
	  pause       Pause all processes within one or more containers
	  port        List port mappings or a specific mapping for the container
	  prune       Remove all stopped containers
	  rename      Rename a container
	  restart     Restart one or more containers
	  rm          Remove one or more containers
	  run         Run a command in a new container
	  start       Start one or more stopped containers
	  stats       Display a live stream of container(s) resource usage statistics
	  stop        Stop one or more running containers
	  top         Display the running processes of a container
	  unpause     Unpause all processes within one or more containers
	  update      Update configuration of one or more containers
	  wait        Block until one or more containers stop, then print their exit codes

1.運行容器

USAGE:
	docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
	
OPTIONS:
    -a  : 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項
    -d  : 後臺運行容器,並返回容器ID
    -i  : 以交互模式運行容器,通常與 -t 同時使用
    -p  : 端口映射,格式爲:主機(宿主)端口:容器端口
    -P  : 開啓鏡像所有端口隨機映射要宿主機
    -t  : 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用
    -h  : 指定容器的hostname
    -e  : username="ritchie" 設置環境變量
    -m  : 設置容器使用內存最大值
    -v  : 綁定掛載目錄
    --name     : --name="nginx-lb" 爲容器指定一個名稱
    --dns      : --dns=8.8.8.8 指定容器使用的DNS服務器,默認和宿主一致
    --dns-search : 指定容器DNS搜索域名,默認和宿主一致
    --env-file : 從指定文件讀入環境變量;
    --cpuset   : --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
    --net      : --net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container 四種類型
    --link     : 添加鏈接到另一個容器
    --expose   : 開放一個端口或一組端口

eg:
    #使用鏡像nginx:latest以後臺模式啓動一個容器,並將容器命名爲mynginx
    docker container run --name mynginx -d nginx:latest    

    #使用鏡像nginx:latest以後臺模式啓動一個容器,並將容器的80端口映射到主機隨機端口
    docker container run --name mynginx -P -d nginx:latest

    #使用鏡像nginx:latest,以後臺模式啓動一個容器,將容器的 80 端口映射到主機的 8080 端口,主機的目錄 /usr/data 映射到容器的 /data
    docker container run --name mynginx -p 127.0.0.1:8080:80 -v /usr/data:/data

    #使用鏡像nginx:latest以交互模式啓動一個容器,在容器內執行/bin/bash命令
    docker container run --name mynginx -it nginx:latest /bin/bash 

2.創建容器

USAGE:
	docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
eg:
	docker container create --name mynginx nginx:latest     #創建容器但不運行

3.啓動容器

USAGE:
	docker container start [OPTIONS] CONTAINER [CONTAINER...]
eg:
	docker container start mynginx

4.停止容器

USAGE:
	docker container stop [OPTIONS] CONTAINER [CONTAINER...]
eg:
	docker container stop mynginx

5.重啓容器

USAGE:
	docker container restart [OPTIONS] CONTAINER [CONTAINER...]
eg:
	docker container restart mynginx

6.殺掉容器

USAGE:
	docker container kill [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS:
	-s :向容器發送一個信號

eg:
	docker container kill -s KILL mynginx		 #殺掉運行中的容器mynginx 

7.暫停容器

USAGE:
	docker container pause CONTAINER [CONTAINER...]
eg:
	docker container pause mynginx

8.恢復容器

USAGE:
	docker container unpause CONTAINER [CONTAINER...]
eg:
	docker container unpause mynginx

9.刪除容器

USAGE:
	docker container rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS:
	-f :通過SIGKILL信號強制刪除一個運行中的容器
    -l :移除容器間的網絡連接,而非容器本身
    -v :刪除與容器關聯的卷
    
eg:
	docker container rm mynginx        #刪除mynginx容器,但容器在運行則刪除失敗
    docker container rm -f mynginx     #強制刪除容器,運行中容器也能刪除

10.查看容器

USAGE:
	docker container ls|ps|list [OPTIONS]

OPTIONS:
    -a :顯示所有的容器,包括未運行的
    -f :根據條件過濾顯示的內容
    -l :顯示最近創建的容器
    -n :列出最近創建的n個容器
    -q :靜默模式,只顯示容器編號
    -s :顯示總的文件大小
    --format   :指定返回值的模板文件
    --no-trunc :不截斷輸出
    
eg:
	docker container ps        #查看所有運行中的容器
    docker container ps -a     #查看所有容器,未運行的也顯示
    docker container ps -n 5   #查看最近創建的5個容器
    docker container ps -a -q  #顯示所有容器編號

11.容器信息查詢

USAGE:
	docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS:
    -f :指定返回值的模板文件
    -s :顯示總的文件大小
    --type :爲指定類型返回JSON
    
eg:
	docker container inspect mynginx
    docker container inspect -f {{.NetworkSettings.IPAddress}} mynginx          #顯示ip,使用go模板
                                                                      #"."表示根,NetworkSettings段下的IPAddress信息,從inspect信息中提取

12.容器運行進程信息

USAGE:
	docker container top CONTAINER [ps OPTIONS]
eg:
	docker container top mynginx

13.獲取容器日誌

USAGE:
	docker container logs [OPTIONS] CONTAINER

OPTIONS:
	-f : 跟蹤日誌輸出
    -t : 顯示時間戳
    --since :顯示某個開始時間的所有日誌
    --tail  :僅列出最新N條容器日誌

eg:
	docker container logs -f mynginx
    docker container logs --since="2018-08-01" --tail=10 mynginx

14.查看端口映射

USAGE:
	docker container port CONTAINER [PRIVATE_PORT[/PROTO]]
eg:
	docker container port mynginx      #查看mynginx容器開放的端口,前提是容器要開放端口才能查看到

15.容器與宿主機文件拷貝

USAGE:
	docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
	docker container cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
eg:
	docker container cp mynginx:/usr  /tmp/     #將容器中的/usr目錄拷貝到宿主機/tmp/下   

16.進入容器

USAGE:
   docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS:
   -d: 以後臺方式執行命令
   -e: 設置環境變量
   -i: 交互模式
   -t: 設置TTY
   -u: 用戶名或UID,例如myuser:myusergroup
   
eg:
   docker container exec -it mynginx sh       #開啓一個交互模式的終端

以上只是操作容器的一些入門操作,我小小總結了一下,有錯誤希望大家能指出,謝謝

更多的命令可參考: runoob

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