1.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步前一個是老的命令格式,後一種是新的命令格式,建議使用新的命令格式
附圖一張,容器的狀態轉換: