docker基礎用法篇

1.docker架構
docker基礎用法篇php


docker架構主要由如下幾部分組成:
1.Client,docker 客戶端,執行docker命令
2.DOCKER_HOST,docker 服務端,服務端主要包括容器和鏡像,而且須要監聽在某個套接字上。客戶端和服務器端的鏈接若是使用http默認必須使用https協議,若是須要使用http協議須要明肯定義。
3.Registry,鏡像倉庫,docker服務端的鏡像來源,默認鏈接是https,若是須要使用http協議須要明肯定義。默認使用的倉庫爲hub.docker.com,也能夠創建私有倉庫。每一個registry都有不一樣的倉庫,如:ngxin倉庫,tomcat倉庫,busybox倉庫等。每一個倉庫中又存在每一個鏡像的不一樣版本(標籤:tag),如:nginx:1.1,nginx1.2,nginx1.3等等。linux


docker分爲企業版和社區版,其中企業版的包名爲:docker-ee,社區版的爲docker-cenginx


接下來讓咱們開始使用docker吧。
1.下載最新的docker yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce.x86_64
docker的配置文件在 /etc/docker/daemon.json,是一個json格式的配置文件,默認是不存在的,須要本身建立。
docker默認的鏡像倉庫在國外,因此在國內使用建議先添加一個鏡像加速器。這裏使用阿里雲的,代碼以下:web

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6rdyvtbt.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

使用以下命令若是返回咱們上部一添加的url則說明加速域建立成功docker

[root@localhost ~]# docker info|grep -A 1 'Registry Mirrors'
Registry Mirrors:
 https://6rdyvtbt.mirror.aliyuncs.com/

docker經常使用命令以下(docker啓動後才能使用):shell

docker version #查看docker版本信息
docker info #查看docker詳細信息
docker search #在docker倉庫中查找相關鏡像
docker pull #推送一個鏡像到遠程倉庫
docker images #列出全部本地鏡像
docker create #建立一個docker容器
docker start #啓動一個容器
docker run #建立並啓動一個容器
docker attach #
docker ps #列出運行中的同期
docker logs #查看相關容器的日誌
docker restart #重啓一個容器
docker stop #中止一個容器
docker kill #中止一個容器
docker rm #刪除一個鏡像

讓咱們來搜索一個nginx鏡像:json

[root@localhost ~]# docker search nginx
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        11049               [OK]                
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker con…   1555                                    [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable of…   688                                     [OK]
jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as p…   492                                     [OK]

咱們能夠看到第一個nginx是頂格寫的,表示他是頂級倉庫中的鏡像,有分隔符的則是該dockerhub.com註冊用戶的鏡像。查找完就能夠下載鏡像了,使用命令:centos

[root@localhost ~]# docker image pull nginx:1.14-alpine
1.14-alpine: Pulling from library/nginx
8e402f1a9c57: Pull complete 
c797cfb922b7: Pull complete 
b691d0a030cb: Pull complete 
401ca65c99ae: Pull complete 
Digest: sha256:b67e90a1d8088f0e205c77c793c271524773a6de163fb3855b1c1bedf979da7d
Status: Downloaded newer image for nginx:1.14-alpine

下載一個nginx鏡像,若是後面不跟版本號默認下載tag爲latest的版本,若是須要下載指定的版本,能夠登陸到dockerhub.com找到nginx後查看tag標籤裏面的版本信息。這裏下載nginx:1.14-alpine的版本,下載完畢後使用如下命令查看下載的鏡像:tomcat

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               1.14-alpine         cafef9fe265b        3 days ago          16MB

刪除一個鏡像文件以下:服務器

[root@localhost ~]# docker image rm nginx:1.14-alpine
Untagged: nginx:1.14-alpine
Untagged: nginx@sha256:b67e90a1d8088f0e205c77c793c271524773a6de163fb3855b1c1bedf979da7d
Deleted: sha256:cafef9fe265b4b5555ba35cc346cd59ac8666223198ec72d657b2033e5b6d51f
Deleted: sha256:e559ec1e768857703cbb1cdfa0377d2007c7b71423b88d4f757261cf5382322e
Deleted: sha256:3ab9f17bd15d634d84a02bf8c7c539886e43bb87511ab0ec9703c163e8ae4f4d
Deleted: sha256:6874590135827cec2b5f81187420457e976f08bddf956367815c30b88017ab3b
Deleted: sha256:bcf2f368fe234217249e00ad9d762d8f1a3156d60c442ed92079fa5b120634a1
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              881bd08c0b08        6 days ago          109MB
busybox             latest              d8233ab899d4        3 weeks ago         1.2MB

再次查看,已經沒有該鏡像了。
接下來,讓咱們建立第一個docker容器吧

[root@localhost ~]# docker run --name b1 -it busybox:latest
run:表示運行一個容器,若是本地沒有該鏡像,會自動去下載。
--name:表示容器的名稱,容器的名稱是惟一的。
-it:表示啓動交互式接口。
busybox:latest:表示鏡像名字。

接下來查看一個容器運行的狀況:

[root@localhost ~]# docker container ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b5a37667a778        busybox:latest      "sh"                7 seconds ago       Up 7 seconds                            b1
CONTAINER ID :容器的ID,惟一
IMAGE:該容器運行的鏡像名稱
COMMAND:該容器運行的命令
CREATED:容器建立時間
STATUS:容器狀態
PORTS:暴漏的端口號
NAMES:容器名字

由於該容器運行的是一個busybox,是一個shell的交互式接口,因此退出shell,容器就自動結束了,可使用

[root@localhost ~]# docker start -ai b1
/ #

可使用 docker stop或docker kill中止一個容器
刪除一個容器使用:docker rm


總結(以運行一個nginx爲例):
1.拉取一個鏡像
docker pull nginx:1.14-alpine
2.建立一個容器
docker create --name web1 nginx:1.14-alpine
3.啓動一個容器
docker start web1

以上三條命令能夠合成一條:
docker run --name web1 -d nginx:1.14-alpine
docker run會自動去拉取本地沒有的鏡像,並建立啓動這個容器

4.中止一個容器
docker stop web1
5.刪除一個容器
docker rm web1 或 docker container rm web1
6.刪除一個鏡像
docker rmi nginx:1.14-alpine 或 docker image rm nginx:1.14-alpine
以上就完成了一個docker的基本生命週期。
注:第五、6步前一個是老的命令格式,後一種是新的命令格式,建議使用新的命令格式
附圖一張,容器的狀態轉換:

docker基礎用法篇

相關文章
相關標籤/搜索