Docker 入門三-docker基本使用

目標

  • docker 的基本使用命令

  • docker 部署一個靜態網站

  • 守護式容器

    參考:Docker 容器使用

Docker 的基本使用命令

  • 運行一個docker 容器

    ## 檢查docker 版本
    $ docker version
    
    Client:   # 客戶端
     Version:           18.09.7               #版本
     API version:       1.39
     Go version:        go1.10.4               # go語言版本
     Git commit:        2d0083d
     Built:             Fri Aug 16 14:19:38 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server:  # 服務端
     Engine:
      Version:          18.09.7
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.4
      Git commit:       2d0083d
      Built:            Thu Aug 15 15:12:41 2019
      OS/Arch:          linux/amd64
      Experimental:     false
    
      ## 運行一個應用程序
      $ docker run ubuntu:15.10 /bin/echo "Hello world"
      ## 輸出
      Hello world
    
        - docker: Docker 的二進制執行文件。
        - run: 與前面的 docker 組合來運行一個容器。
        -  ubuntu:15.10 指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,如果不存        在,  Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
        - /bin/echo "Hello world": 在啓動的容器裏執行的命令
    

    注意: 首次運行可能會提示 找不到這個鏡像 ubuntu:15.10 (Unable to find image ‘ubuntu:15.10’ locally)等待下載即可

    這個容器啓動後,就不能再接受你的命令操作了。

  • 啓動交互式的容器

    我們通過 docker 的兩個參數 -i -t,讓 docker 運行的容器實現**“對話”**的能力:

    $ docker run -i -t ubuntu:15.10 /bin/bash
    root@0123ce188bd8:/#
    
    ## 或者連寫  -it
    
    -t: 在新容器內指定一個僞終端或終端。
    -i: 允許你對容器內的標準輸入 (STDIN) 進行交互。
    
    注意第二行 root@0123ce188bd8:/#,此時我們已進入一個 ubuntu15.10 系統的容器
    
    ## 輸入 exit  或者 ctrl+d 來退出容器
    root@0123ce188bd8:/#  exit
    exit
    root@runoob:~#     表示已經退出了
    
  • 啓動後臺模式的容器

    $ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
    
    在輸出中,我們沒有看到期望的 "hello world",而是一串長字符
    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
    這個長字符串叫做容器 ID,對每個容器來說都是唯一的,我們可以通過容器 ID 來查看對應的容器發生了什麼。
    
    $ docker ps  查看運行中的容器
    root@VM-56-19-ubuntu:/home/ubuntu# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED          
    STATUS              PORTS                   NAMES
    a15c4b7fdbef        ubuntu              "/bin/bash"         2 days ago          Up 47 hours         0.0.0.0:32769->80/tcp   web
    
    輸出詳情介紹:
    
    CONTAINER ID: 容器 ID。
    IMAGE: 使用的鏡像。
    COMMAND: 啓動容器時運行的命令。
    CREATED: 容器的創建時間。
    STATUS: 容器狀態。
    
    狀態有7種:
    created(已創建)
    restarting(重啓中)
    running(運行中)
    removing(遷移中)
    paused(暫停)
    exited(停止)
    dead(死亡)
    
    PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。
    NAMES: 自動分配的容器名稱。
    
    # 查看容器內的標準輸出
    $ docker logs 容器名稱 或者 容器id
    例:
    $ docker logs a15c4b7fdbef
    
    # 停止容器
    $ docker stop 容器名稱 或者 容器id
    
    
    
    

其他命令

# 獲取鏡像,當我們本地沒有的時候
$ docker pull ubuntu
# 查看所有的容器
$ dcoker  ps -a 
# 啓動一個停止的容器
$ docker start 容器名稱 或者 容器id
# 後臺運行 ,加一個 -d 後臺運行
$ docker run -d 
# 停止一個容器
$ docker stop 容器名稱 或者 容器id
# 重新啓動一個容器
$ docker  restart 容器名稱 或者 容器id
# 在使用 -d 參數時,容器啓動後會進入後臺。此時想要進入容器,可以通過以下指令進入: 推薦大家使用 docker exec 命令,因爲此退出容器終端,不會導致容器的停止。
$ docker  exec 容器名稱 或者 容器id
# 刪除容器
$ docker rm -f 容器名稱 或者 容器id
# 下面的命令可以清理掉所有處於終止狀態的容器
$ docker container prune
 
# 設置容器的端口映射
通過run命令的兩個方式 一個是  [-P] 大寫的P   [-p] 小寫的p
 
-P 大寫的P ,會將容器的所有端口進行映射
 
-p 小寫的p ,可以指定容器那些端口可以被映射
四種方式:
    containerPort:
    只指定容器端口,這種情況下,宿主機的端口是隨機映射的
    docker run -p 80 -i -t ubuntu /bin/bash
    hostPort:containerPort
    同時指定容器端口和宿主機的端口,這種情況下,宿主機的端口和容器端口是對應的
    docker run -p 8080:80 -i -t ubuntu /bin/bash
    ip::containerPort
    指定ip和容器的端口
    docker run  -p 0.0.0.0:80  -i -t ubuntu /bin/bash
    up:hostPort:containerPort
    指定ip和宿主機的端口和容器的端口
    docker run -p 0.0.0.0:8080:80    -i -t ubuntu /bin/bash
 
 
 
 

使用docker 部署一個靜態網站

我們想在容器中啓動一個nginx來跳轉到我們的一個靜態頁面上

需要的鏡像 : ubuntu

步驟:

  • 啓動一個交互式的容器, 並且指定容器的端口映射爲80
  • 安裝nginx
  • 安裝vim
  • 創建靜態頁頁面
  • 修改nginx的配置文件
  • 運行nginx
  • 驗證網站訪問
# 啓動一個交互式的容器, 並且指定容器的端口映射爲80
# 這裏使用了 -p 來指定容器映射 80 端口,但是宿主機的端口是隨機的
# --name 指定這個容器的名稱是 web1
$ docker run -p 80 --name web1 -it  ubuntu /bin/bash
# 進入交互式界面,使用 apt-get 命令安裝 nginx
$ apt-get  update  #先更新下apt索引
$ apt-get install -y nginx  #安裝nginx
$ apt-get install -y vim  #安裝vim
# 創建一個靜態的html頁面
$ mkdir  -p /var/www/html 
$ cd /var/www/html 
$ vim ./index.html
插入一下內容
<!DOCTYPE html>
<html lang="en">
  <head>
  </head>
  <body>
    <h1>hello world!!!</h1>
  </body>
</html>
# 修改nginx的配置文件
$ whereis nginx   #查找一下nginx
$ vim /etc/nginx/sites-enabled/default
## 將 root 的目錄修改爲  /var/www/html
## 運行nginx
$ nginx
$ ps -ef  #查看nginx 是否運行
## 使用ctrl+q 來實現退出  交互式命令行
# 使用docker ps 查看容器
$ docker ps
root@VM-56-19-ubuntu:/home/ubuntu# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
cdba03583728        ubuntu              "/bin/bash"         29 minutes ago      Up 29 minutes       0.0.0.0:32770->80/tcp   web1
## 我們會發現容器的 80 端口映射到宿主機的32770端口
## 查看網站是否訪問了
$ curl http://127.0.0.1:32770
## 也可以使用容器的ip 來訪問
# 使用 docker inspect 命令查看容器的信息
$ docker inspect  web1
出現:
"IPAddress": "172.17.0.2",
 
## 使用容器的ip來訪問
$ curl http://172.17.0.2:80
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章