Docker學習筆記

二进制少年發表於2024-06-24

Docker學習

  1. 執行 hello-world 映象

    docker run hello-world
    
  2. 檢視映象

    docker images
    
  3. docker預設路徑

    /var/lib/docker/
    

常用命令

幫助命令

docker version  // 顯示docker版本資訊
docker info   // 顯示docker的系統資訊,包括映象和容器的數量
docker (具體某個命令) --help   // 幫助命令
 // 幫助文件地址
url = "https://docs.docker.com/reference/"

映象命令

docker images // 檢視所有本地主機上的映象
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   14 months ago   13.3kB
REPOSITORY // 映象的倉庫源
TAG // 映象的標籤
IMAGE ID  // 映象的id
CREATED //映象的建立時間
SIZE // 映象的大小
//////////////////////////////////////////////////////////////
docker search xxx // 搜尋
////////////////////////////////////////////////////////
docker pull  xxx //下載映象-:指定版本
/////////////////////////////////////////////
docker rmi xxx // 刪除映象
docker rmi -f 映象id // 刪除指定的映象
docker rmi -f 映象id  映象id 映象id // 刪除多個映象
docker rmi -f $(docker images -aq) // 刪除所有映象

容器命令

宣告:有映象才能建立容器,Linux,下載一個centos映象來測試學習

// 宣告,有映象才能建立容器,Linux,下載一個centos映象來測試學習
docker pull centos
//  新建容器並啟動
docker run [可選引數] image 
// 引數說明
--name="Name" 容器名字,用來區分容器
-d 後臺方式執行
-it 使用互動方式執行,進入容器檢視內容
-p 指定容器的埠 -p 8080:8080
  -p ip:主機埠:容器埠
  -p 主機埠:容器埠(常用)
  -p 容器埠
  容器埠
-P 隨即指定埠

# 測試,啟動並進入容器
[root@VM-16-6-centos ~]# docker run -it centos /bin/bash
[root@7b5b69815ee2 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# 從容器中退回主機
exit

列出所有執行的容器

# docker ps 命令
   # 列出當前正在執行的容器
-a # 列出當前正在執行的容器+帶出歷史執行過的容器
-n=? # 顯示最近建立的容器
-q # 只顯示容器的編號

退出容器

exit	# 直接容器停止並退出
Ctrl + P + Q	# 容器不停止退出

刪除容器

docker rm 容器id	               #刪除指定容器,不能刪除正在執行的 
docker rm -f $(docker ps -aq)   # 刪除所有容器
docker ps -a -q|xargs docker rm # 刪除所有容器

啟動和停止容器的操作

docker start 容器id	  # 啟動容器
docker restart 容器id   # 重啟容器
docker stop 容器id      # 停止當前正在執行的容器
docker kill容器id       # 強制停止當前容器

常用其它命令

後臺啟動容器

# 命令 docker run -d 映象名!

# 問題docker ps,發現centos停止了
# 常見的坑:docker容器使用後臺執行,就必須要有要一個前臺程序,docker發現沒有應用,就會自動停止
# nginx,容器啟動後,發現自己沒有提供服務,就會立刻停止,就是沒有程式了

檢視日誌

docker logs
-tf           # 顯示日誌
--tail number # 要顯示日誌條數

檢視容器中的程序資訊

docker top 容器id

產看映象的原資料

docker inspect 容器id

進入當前正在執行的容器

# 我們通常容器都是使用後臺方式執行的,需要進入容器,修改一些配置

# 命令
docker exec -it 容器id bashShell


# 方式二
docker attach 容器id

# docker exec		# 進入容器後開啟一個新的終端,可以在裡面操作(常用)
# docker attach		# 進入正在執行的終端,不會啟動新的程序

從容器內複製檔案到主機上

docker cp 容器id:容器內路徑 目的的主機路徑

# 複製是一個手動過程,未來我們使用 -v 卷的技術,可以實現自動同步

docker 作業練習

安裝nginx

  1. 搜尋映象 search 建議大家去docker搜尋,可以看到幫助文件

  2. 下載映象 pull

  3. 執行測試

    [root@VM-16-6-centos ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
    nginx        latest    1403e55ab369   4 days ago      142MB
    centos       latest    5d0da3dc9764   15 months ago   231MB
    
    # -d 後臺執行
    # --name 給容器命名
    # -p 伺服器埠:容器內部埠 
    [root@VM-16-6-centos ~]# docker run -d --name nginx01 -p 3344:80 nginx
    6a05a85bcaa58fb236b4aa93f3e9ed3e9ccd660361e0af50ac8f2dcadea5b185
    [root@VM-16-6-centos ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
    6a05a85bcaa5   nginx     "/docker-entrypoint.…"   11 seconds ago   Up 11 seconds   0.0.0.0:3344->80/tcp   nginx01
    [root@VM-16-6-centos ~]# curl localhost:3344
    
    
    # 進入容器
    [root@VM-16-6-centos ~]# docker exec -it nginx01 /bin/bash
    root@6a05a85bcaa5:/# whereis nginx
    nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
    root@6a05a85bcaa5:/# cd /etc/nginx/
    root@6a05a85bcaa5:/etc/nginx# ls
    conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
    
    

docker裝tomcat

# 官方的使用
docker run -it --rm tomcat:9.0

# 我們之前的啟動都是後臺,停止了容器之後,容器還是可以查到   docker run -it --rm,一般用來測試,用完即刪

# 下載再啟動
docker pull tomcat:9.0
# 啟動執行
docker run -d --name tomcat01 -p 3355:8080 tomcat

# 測試訪問沒問題

# 進入容器
# 發現問題 1、linux命令少了。 2、沒有webapps。 阿里雲映象原因,預設是最小的映象,所有不必要的都剔除掉。保證最小可執行環境。

思考問題:我們以後要部署專案,如果每次都要進入容器是不是十分麻煩?我要是可以在容器外部提供一個對映路徑,webapps,我們在外部放置專案,就自動同步到內部就好了!

部署es + kibana

# es 暴露的埠很多!
# es十分耗記憶體
# es的資料一般需要放置到安全目錄!掛載

# --net somenetwork 網路配置

# 啟動elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

# 啟動了linux就卡住了 docker stats 檢視cpu的狀態


相關文章