Docker初體驗之部署安裝以及常規操作

Docker概述
1、Docker概念
Docker是一個開源的應用容器引擎,讓開發者可以打包它們的應用以及依賴包到一個可一直的鏡像中,然後發佈到任何流行的Linux或Windows機器上,也可以實現虛擬化。容器是完全使用沙箱機制,Docker對進程之間相互隔離,相互之間不會有任何的接口,對底層環境無任何要求。
Docker初體驗之部署安裝以及常規操作
2、設計的目標

  • 提供簡單的應用程序打包工具
  • 開發人員和運維人員職責邏輯分離
  • 多環境保持一致性
    3、Docker引擎
    Docker引擎是一個在客戶機與服務器的之間應用程序,具有以下的主要組件
    (1)server,它是一種長時間運行的程序,稱爲守護進程(dockerd命令)
    (2)REST API,接收來自客戶端的請求,調取相應的接口與守護進程進行交互
    (3)client,命令行界面(docker命令)
    4、Docker的組成
    客戶端與Docker服務器的守護進程進行通信,守護進程根據請求來實現構建、運行和發佈。客戶機可以與服務器在同一臺主機,也可以在不同網絡之間進行通信
    Docker初體驗之部署安裝以及常規操作
  • Docker Client:客戶端
    用戶與Docker交互的主要方式,Docker客戶端可以與多個守護進程進行交互
  • Docker Daemon:守護進程
    用來監聽Docker API的請求並管理對象,例如鏡像、容器、網絡和卷,守護進程還可以與其他的守護進程通信以管理Docker服務
  • Docker Image:鏡像
    Docker鏡像是一個只讀模板,包含創建Docker容器的說明,通常一個鏡像基於另一個鏡像,並帶有一些額外的自定義鏡像
    可以自定義創建一個鏡像,也可以使用其他人再Docker倉庫創建發佈的鏡像
  • Docker Container:容器
    容器是鏡像可以運行的實例,可以通過Docker API或者客戶端創建、啓動、停止、移動或者刪除容器,可以將容器連接到一個或者多個網絡,將存儲附加到該網絡中,也可以根據當前的狀態進行創建新的鏡像
  • Docker Registry:鏡像倉庫
    Docker倉庫用來存儲Docker的鏡像,Docker Hub是任何人都可以使用的Docker鏡像倉庫,Docker配置項也默認在這上面查找鏡像
    5、容器與虛擬機的區別
    Docker初體驗之部署安裝以及常規操作
    Docker初體驗之部署安裝以及常規操作
    6、Docker應用場景
  • 應用程序的打包和發佈
  • 應用程序隔離
  • 持續集成
  • 部署微服務
  • 快速搭建測試環境
  • 提供PAAS產品(平臺及服務)

Docker安裝部署
1、關閉防火牆及核心功能

[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl disable firewalld
[root@docker ~]# setenforce 0
[root@docker ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

2、安裝依賴包、docker鏡像源、docker安裝

[root@docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# yum -y install docker-ce

3、啓動docker

[root@docker ~]# systemctl restart docker
[root@docker ~]# systemctl enable docker

4、鏡像加速
申請阿里雲鏡像加速器可查看博客https://blog.51cto.com/14557905/2488798

[root@docker ~]# cd /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker

5、網絡優化

[root@docker ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@docker ~]# sysctl -p
[root@docker ~]# service network restart
[root@docker ~]# systemctl restart docker

到這裏我們的docker容器就部署完成了

Docker常規的命令操作
docker常用指令:
docker pull 下載鏡像
docker search 查找鏡像
docker version 查看版本
docker images 查看已有鏡像
docker inspect 查看鏡像信息
docker tag 添加鏡像標籤
docker rmi 刪除鏡像
docker save -o 文件名 鏡像名 導出鏡像
docker login 登錄
docker push 上傳
docker ps -a 查看容器狀態

1、賬戶登錄(登錄倉庫時使用)

[root@docker ~]# docker login

2、查看版本信息

[root@docker ~]# docker version

3、搜索鏡像(其中STARS數值最高的表示下載量最大的,我們就下載這個就行)

#docker search 鏡像名稱
[root@docker ~]# docker search nginx
INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/nginx                              Official build of Nginx.                        12946     [OK]       
docker.io   docker.io/jwilder/nginx-proxy                Automated Nginx reverse proxy for docker c...   1767                 [OK]
docker.io   docker.io/richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable ...   764                  [OK]
docker.io   docker.io/linuxserver/nginx                  An Nginx container, brought to you by Linu...   102                  
docker.io   docker.io/bitnami/nginx                      Bitnami nginx Docker Image                      81                   [OK]
......

4、鏡像下載

#docker pull 鏡像名稱
[root@docker ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
c499e6d256d6: Pull complete 
74cda408e262: Pull complete 
ffadbd415ab7: Pull complete 
Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Status: Downloaded newer image for docker.io/nginx:latest

5、查看所有鏡像

#docker images
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              ed21b7a8aee9        8 days ago          127 MB

6、查看指定鏡像信息

#docker inspect 鏡像ID
[root@docker ~]# docker inspect ed21b7a8aee9
[
    {
        "Id": "sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291",
        "RepoTags": [
            "docker.io/nginx:latest"
        ],
        "RepoDigests": [

7、添加鏡像標籤

#docker tag 舊名稱 新名稱
[root@docker ~]# docker tag docker.io/nginx:latest nginx:web
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              ed21b7a8aee9        8 days ago          127 MB
nginx               web                 ed21b7a8aee9        8 days ago          127 MB
#相當於生成創建一個新的鏡像

8、刪除指定鏡像

#docker rmi 鏡像名
#使用鏡像創建容器後,如果沒有刪除容器,鏡像刪除不了
[root@docker ~]# docker rmi nginx:web 
Untagged: nginx:web
Untagged: docker.io/nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              ed21b7a8aee9        8 days ago          127 MB

9、將鏡像導出到當前目錄

docker save -o 文件名 鏡像名
[root@docker abc]# docker save -o nginx nginx:latest 
[root@docker abc]# ls -lh
總用量 125M
-rw-------. 1 root root 125M 4月   8 18:11 nginx
#文件名可以使用絕對路徑

10、載入鏡像

#docker load < 鏡像名

11、上傳鏡像到倉庫

#docker push 鏡像名稱
#先登錄倉庫,再進行上傳

12、創建容器

#docker create -it 鏡像名 /bin/bash
# -i:讓容器的標準輸入保持打開
# -t:讓Docker分配一個僞終端
[root@docker ~]# docker create -it nginx:latest /bin/bash
de7b916f83fe7a7f5841fba1631c6345125dda760d01ae024263b864cde1f67a

13、容器查看

#docker ps -a
# -a:列出最近一次啓動的容器
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
de7b916f83fe        nginx:latest        "/bin/bash"         33 seconds ago      Created                                 optimistic_torvalds
#此時的狀態爲created

14、啓動容器

#docker start 容器ID
[root@docker ~]# docker start de7b916f83fe
de7b916f83fe
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
de7b916f83fe        nginx:latest        "/bin/bash"         3 minutes ago       Up 12 seconds       80/tcp              optimistic_torvalds
#此時顯示的狀態爲UP,且端口爲80端口

15、啓動執行命令查看系統根目錄

[root@docker ~]# docker run centos:7 /usr/bin/bash -c ls /
anaconda-post.log
bin
dev
etc
home
lib
#此命令會先檢查本地的鏡像,沒有的話會從倉庫下載
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
f451a6ce24e0        centos:7            "/usr/bin/bash -c ..."   36 seconds ago      Exited (0) 35 seconds ago                       awesome_shirley
de7b916f83fe        nginx:latest        "/bin/bash"              13 minutes ago      Up 10 minutes               80/tcp              optimistic_torvalds
#執行完成會直接關閉,狀態是exited
#使用docker run -d 爲持續執行
[root@docker ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
11ca9b188156e7216375f30506c22715af08e73cf625cd3fabb300dc0a2d3f0f
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
11ca9b188156        centos:7            "/bin/bash -c 'whi..."   7 seconds ago       Up 7 seconds                                     festive_dubinsky
f451a6ce24e0        centos:7            "/usr/bin/bash -c ..."   7 minutes ago       Exited (0) 7 minutes ago                         awesome_shirley
de7b916f83fe        nginx:latest        "/bin/bash"              20 minutes ago      Up 17 minutes                80/tcp              optimistic_t

16、終止容器

#docker stop 容器ID
#正常退出狀態會變成exit0

17、進入容器

#docker exec -it 容器ID /bin/bash
#一定要是開啓狀態
[root@docker ~]# docker exec -it de7b916f83fe /bin/bash
root@de7b916f83fe:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@de7b916f83fe:/# exit
exit
#退出容器
[root@docker ~]# 

18、容器導出

#docker export 鏡像ID
[root@docker abc]# docker export de7b916f83fe > nginx_1
[root@docker abc]# ls
nginx_1

19、容器導入

#cat 文件名 | docker import - 鏡像名
#上傳導入的是鏡像,不會生成容器
[root@docker abc]# cat nginx_1 | docker import - nginx
sha256:88960c2fb5f526bcfae0a747b25fcba690607fc77013338dc9189096843852c8
[root@docker abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              88960c2fb5f5        3 seconds ago       125 MB
[root@docker abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

20、刪除容器

#docker rm 容器ID
#批量刪除容器
docker ps -a | awk '{print "docker rm " $1}' | bash
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章