一、安裝
1.docker軟件包在extras中默認存在,可以直接使用yum進行安裝
[root@tong ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
!base/7/x86_64 CentOS-7 10,019
!epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,860
!extras/7/x86_64 CentOS-7 321
!nginx/x86_64 nginx repo 138
!updates/7/x86_64 CentOS-7 628
repolist: 23,966
[root@tong ~]# yum -y install docker
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
......
Installed:
docker.x86_64 2:1.13.1-88.git07f3374.el7.centos
......
Complete!
[root@tong ~]# systemctl start docker //啓動Docker
[root@tong ~]# docker -v //查看版本
Docker version 1.13.1, build 07f3374/1.13.1
[root@tong ~]# docker version //確定docker服務在運行,如果只有客戶端則說明服務未啓動
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-88.git07f3374.el7.centos.x86_64
Go version: go1.9.4
Git commit: 07f3374/1.13.1
Built: Fri Dec 7 16:13:51 2018
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-88.git07f3374.el7.centos.x86_64
Go version: go1.9.4
Git commit: 07f3374/1.13.1
Built: Fri Dec 7 16:13:51 2018
OS/Arch: linux/amd64
Experimental: false
二、基本使用
1.幫助
當你忘記命令時來使用它吧
docker
[root@client ~]# docker
Usage: docker COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
--help Print usage
-H, --host list Daemon socket(s) to connect to (default [])
-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
....................
2.鏡像操作
(1)查看
- 查看鏡像:docker images
- 查看鏡像製作歷史:docker history 鏡像名
- 查看拉取到本地的鏡像:docker image list
(2)搜索
docker search 鏡像名
(3)拉取鏡像
docker pull 鏡像名
示例:
[root@tong ~]# docker search nginx //搜索鏡像
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 10742 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1508 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 676 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 468 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 120 [OK]
........
docker.io docker.io/ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 0 [OK]
docker.io docker.io/wodby/nginx Generic nginx 0 [OK]
[root@tong ~]# docker search nginx -s 100 //查找 star 數至少爲 100 的鏡像
Flag --stars has been deprecated, use --filter=stars=3 instead
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 10742 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1508 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 676 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 468 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 120 [OK]
docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 119
[root@tong ~]# docker pull docker.io/nginx //拉取鏡像
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
177e7ef0df69: Pull complete
ea57c53235df: Pull complete
bbdb1fbd4a86: Pull complete
Digest: sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c
Status: Downloaded newer image for docker.io/nginx:latest
[root@tong ~]# docker image list //查看已經拉取到本地的鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 7042885a156a 3 weeks ago 109 MB
3.容器操作
(1)創建容器:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
(2)查看
1.容器具體情況:docker inspect
2.容器名稱:docker ps
- -a :顯示所有的容器,包括未運行的。
- -f :根據條件過濾顯示的內容。
- –format :指定返回值的模板文件。
- -l :顯示最近創建的容器。
- -n :列出最近創建的n個容器。
- -q :靜默模式,只顯示容器編號。
- -s :顯示總的文件大小。
[root@client ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 容器服務端事件:docker events
- 容器日誌:docker logs [OPTIONS] CONTAINER --tail選項可以指定查看最後幾條日誌 -t選項則可以對日誌條目附加時間戳 -f選項可以跟蹤日誌的輸出,直到手動停止
- 容器變化情況: docker diff CONTAINER
(3)內容交互
- 後臺型
[root@master ~]# docker exec -d 68656 touch test.txt
- 交互型:
[root@master ~]# docker exec -i -t 68656 /bin/bash
root@68656146eb6e:/# ls
a.txt bin boot c.txt dev etc haha hello home lib lib64 media mnt opt proc
root run sbin srv sys tmp usr var
(4)關閉容器
- 正常關閉:docker stop
- 強制關閉:docker kill
(5)刪除容器:docker rm CONTAINER
(6)容器文件打包
- export,與import相對應
- save,與load命令相對應:docker save -o nginx.tar nginx
(7)容器導入內容
- import,與export命令相對應
- load,與save命令相對應:docker load < nginx.tar
(8)與宿主機之間拷貝文件
- docker cp [OPTIONS] CONTAINER:PATH LOCALPATH
- docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
示例:
創建容器
[root@master ~]# docker create -it --name "first1-docker" docker.io/hello-world /bin/bash
....
宿主機和容器之間拷貝文件
拷貝容器mysql中/usr/local/bin/first.sh文件到宿主機
[root@docker ~]#docker cp mysql:/usr/local/bin/first-.sh /root
宿主機拷貝至容器
[root@docker ~]## docker cp /root/first.sh mysql:/usr/local/bin/
關閉容器
[root@master ~]# docker stop mysql.1
[root@master ~]# docker kill $(docker ps -a -q) //殺死所有狀態的容器
[root@master ~]# docker kill $(docker ps -q) //殺死所有running狀態的容器
關於stop和kill
docker stop命令給容器中的進程發送SIGTERM信號,默認行爲是會導致容器退出。容器內程序可以捕獲該信號並自行處理,例如可以選擇忽略。而docker kill則是給容器的進程發送SIGKILL信號,該信號會使容器必然退出。
刪除容器
[root@master ~]#docker rm mysql.1 //-f強制刪除
查看容器內發生改變的
[root@master ~]# docker diff nginx1
A /test.txt
C對應的均是目錄,A對應的均是文件
實時查看docker服務器端事件
[root@master ~]# docker start second_con
second_con
[root@master ~]# docker events
查看鏡像製作歷史
[root@master ~]# docker history docker.io/ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
ebcd9d4fca80 7 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 7 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'doc 7B
<missing> 7 weeks ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 2.759 kB
<missing> 7 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
<missing> 7 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 745 B
<missing> 7 weeks ago /bin/sh -c #(nop) ADD file:d14b493577228a4989 117.9 MB
容器文件系統打包
[root@docker ~]# docker export -o mysql1_2.tar mysql1
[root@master ~]# docker export mysql1 > mysql1_3.tar
import 根據tar文件的內容新建一個鏡像
[root@master ~]# docker import mysql1_3.tar mysql:v1
sha256:687b57b86ab854687de4c1d1cd796037032a17f8c93290700aabef31cc67f6e9
[root@master ~]# docker images