docker基礎(二)

docker安裝

鏡像加速

如果發現Docker拉取鏡像的速度非常緩慢,可以配置加速器來解決
在這裏使用阿里雲的加速地址:
https://br10hqrl.mirror.aliyuncs.com
修改Docker的配置文件來設置加速地址
vim /etc/docker/daemon.json(如果沒有該文件,新建一個)

{
  "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"]
}

使配置文件生效

systemctl daemon-reload && systemctl restart docker

鏡像

1. 獲取鏡像(下載鏡像到本地)

可以使用 docker pull 命令來從倉庫獲取所需要的鏡像。

格式:

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]

具體選項可通過 docker pull --help

下面的例子將從 Docker Hub 倉庫下載一個 Ubuntu 12.04 操作系統的鏡像。

完成後,即可隨時使用該鏡像了,例如創建一個容器,讓其中運行 bash 應用。

[root@docker docker]# docker run -it ubuntu:latest /bin/bash
root@1b85b5b911b2:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@1b85b5b911b2:/# cat /proc/version
Linux version 3.10.0-1062.9.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Fri Dec 6 15:49:49 UTC 2019
root@1b85b5b911b2:/#

其中,-t 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上, -i 則讓容器的標準輸入保持打開。

另:,需要讓 Docker 容器在後臺以守護態(Daemonized)形式運行。此時,可以通過添加 -d 參數來實現。

2. 列出本地鏡像

使用 docker images 或 docker image ls顯示本地已有的鏡像。

[root@docker docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              ccc6e87d482b        13 days ago         64.2MB

在列出信息中,可以看到幾個字段信息

  • 來自於哪個倉庫,比如 ubuntu
  • 鏡像的標記,比如 latest
  • 它的 ID 號(唯一)
  • 創建時間
  • 鏡像大小

鏡像ID是鏡像的唯一標識,一個鏡像可以對應對個標籤,因此在上面的例子中可以看到Ubuntu:16.04和latest擁有相同的ID,因爲它們對應的是同一個鏡像。

3. 刪除本地鏡像

要刪除本地鏡像,可以使用 docker image rm 命令,其格式:

docker image rm [選項] <鏡像1> [<鏡像2>  ...]

注意:用ID、鏡像名、摘要刪除鏡像

其中,<鏡像>可以是鏡像短ID、鏡像長ID、鏡像名 或者 鏡像摘要

eg: dicker image rm redis

容器

1.啓動容器

1. 1 新建並啓動

所需要的命令主要爲 docker run

語法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

COMMAND:容器啓動後進入容器中要執行的命令
OPTIONS(常用參數)
-d : 讓 Docker在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下
-t : 選項讓 Docker分配一個僞終端( pseudo-tty)並綁定到容器的標準輸入上,
-i : 則讓容器的標準輸入保持打開。
--name : 爲容器命名
-v : 創建數據卷
-p : 綁定端口

docker 運行語法:docker run -p 本地端口:容器端口 鏡像
後臺運行語法:docker run -d 鏡像

[root@docker docker]# docker run ubuntu /bin/echo 'Hello world'
Hello world

當利用 docker run 來創建容器時,Docker 在後臺運行的標準操作包括:

  • 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
  • 利用鏡像創建並啓動一個容器
  • 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層
  • 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
  • 從地址池配置一個 ip 地址給容器
  • 執行用戶指定的應用程序
  • 執行完畢後容器被終止

1.2. 啓動已終止容器

可以利用 docker start 命令,直接將一個已經終止的容器啓動運行。

docker start CONTAINER [CONTAINER...]

2. 查看容器

docker ps  ##查看啓動的容器
docker ps  -a  ##查看所有容器

3. 守護態運行

需要讓 Docker 容器在後臺以守護態(Daemonized)形式運行。此時,可以通過添加 -d 參數來實現。

[root@docker ~]# docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
38d95518d4fb650d3fad5f5a94553963c05c033efa2bc5e50f33f4a0cc9570a2
[root@docker ~]#

容器啓動後會返回一個唯一的 id,也可以通過 docker ps 命令來查看容器信息。

[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
38d95518d4fb        ubuntu              "/bin/sh -c 'while t…"   About a minute ago   Up About a minute                       practical_leakey
[root@docker ~]#

可以通過 docker logs 命令獲取容器的輸出信息。

4. 終止容器

使用 docker stop 來終止一個運行中的容器

docker stop CONTAINER [CONTAINER...]

5.重啓容器

docker restart CONTAINER [CONTAINER...]

6.刪除容器

docker rm CONTAINER [CONTAINER...]

7.獲取容器的輸出信息

docker logs CONTAINER [CONTAINER...]

8.進入容器

docker exec -i -t CONTAINER /bin/bash

eg: docker exec -i -t web

9.主機和容器間拷貝

容器拷貝到主機

docker cp 容器id:/opt/webapp/app.py d:/www

/opt/webapp/app.py : 容器中的文件
d:/www : 主機文件夾

主機拷貝到容器

docker cp d:/www/文件 容器id:/opt/webapp/

10.刪除容器

docker rm CONTAINER [CONTAINER...]

數據卷

1.什麼是數據卷
數據卷是一個可供一個或多個容器使用的特殊目錄,它繞過UFS,可以提供很多有用的特性
1.數據卷可以在容器之間共享和重用
2.對數據卷的修改會立馬生效
3.對數據卷的更新,不會影響鏡像
4.數據卷默認會一直存在,即使容器被刪除
注意:數據卷的使用,類似於 Linux下對目錄或文件進行mount,鏡像中的被指定爲掛
載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數據卷。
2.爲什麼要使用數據卷
將本地主機中的代碼運行在 docker容器中
3.掛載數據卷的前提
授權本地磁盤
4. 掛載一個主機目錄作爲數據卷
語法:

docker run -v 本地目錄:容器目錄

docker run -d -P --name web -v d:/www/webapp:/opt/webapp training/webapp python app.py

Docker 搭建PHP開發環境
1. 下載阿里雲的lamp鏡像

docker pull registry.cn-hangzhou.aliyuncs.com/itsource/centos-lamp:[鏡像版本號]

鏡像版本號就是tag的值
2. 創建lamp容器並運行

docker run -itd -p 80:80 -p 3306:3306 --name lamp --privileged=true -v d:/www/xxx:/data/webroot/default ec258725b54b /usr/sbin/init

其中:
--name lamp 爲容器起名爲lamp
--privileged=true和 /usr/sbin/init  讓container內的root擁有真正的root權限

 

發佈了104 篇原創文章 · 獲贊 52 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章