文章目錄
- 前言
- 一、Docker是什么?
- 二、Docker常用命令
- 1. 幫助命令
- 2. 鏡像命令
- docker images
- docker search
- docker pull
- docker rmi
- 3. 容器命令
- 容器啟動命令
- 退出容器命令
- 查看容器命令
- 洗掉容器命令
- 啟動容器命令
- 停止容器命令
- 三、Docker常用進階命令
- 1. 容器命令
- 后臺啟動容器
- 查看日志命令
- 進入正在運行的容器
- 查看容器的行程命令
- 拷貝容器內的檔案到主機
- 2. 鏡像命令
- 查看鏡像元資料
- 總結
前言
在學會如何進行專案的開發以后,發現僅僅會專案的開發還算不上一個合格的Java程式員,還要學會如何將專案在服務器上進行部署,之前通過Linux的方式將專案部署到了服務器上,但是Linux方式部署的程序相較于docker來說過于繁瑣,因此決定學習docker這種更為簡便的方法,將學習docker的程序在此進行記錄,
學習資料:狂神說Java_Docker
使用軟體:MobaXterm


提示:以下是本篇文章正文內容,下面案例可供參考
一、Docker是什么?
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux或Windows作業系統的機器上,也可以實作虛擬化,是完全使用沙箱機制,彼此之間沒有任何介面,
來源:Docker_百度百科:https://baike.baidu.com/item/Docker/13344470?fr=aladdin
二、Docker常用命令
1. 幫助命令
docker version # 顯示docker的版本資訊
docker info # 顯示docker的系統資訊,包括鏡像和容器數量
docker 命令 --help # 幫助命令
docker幫助檔案的地址:https://docs.docker.com/engine/reference/commandline/docker/
2. 鏡像命令
docker images
docker images # 查看本機上的所有鏡像

[root@VM-16-16-centos /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5d89766432d0 6 weeks ago 105MB
nginx latest f8f4ffc8092c 6 weeks ago 133MB
mysql latest 2fe463762680 6 weeks ago 514MB
rabbitmq management 2121b269a508 6 weeks ago 253MB
hello-world latest feb5d9fea6a5 6 weeks ago 13.3kB
elasticsearch 7.9.2 caa7a21ca06e 13 months ago 763MB
daocloud.io/library/mysql 8.0.13 102816b1ee7d 2 years ago 486MB
# 解釋
REPOSITORY 倉庫的鏡像源
TAG 鏡像的標簽,顯示鏡像的版本資訊
IMAGE ID 鏡像ID
CREATED 鏡像的創建時間
SIZE 鏡像的大小
# 可選項
Options:
-a, --all # 顯示所有的鏡像
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet # 只顯示鏡像的ID
docker search
docker search # 搜索鏡像

[root@VM-16-16-centos /]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11665 [OK]
mariadb MariaDB Server is a high performing open sou… 4444 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 867 [OK]
percona Percona Server is a fork of the MySQL relati… 561 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 366 [OK]
# 可選項,通過收藏數來進行過濾
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
--filter=STARS=3000 # 搜索出來的鏡像就是STARS數量大于3000的鏡像
docker search mysql --filter STARS=3000命令執行結果:

此時搜索出的鏡像STARS的數量都在3000以上
docker pull
docker pull # 拉取鏡像 => docker pull 鏡像名[:tag]

[root@VM-16-16-centos /]# docker pull mysql
Using default tag: latest # 如果下載時不指定tar版本,默認就是latest最新版本
latest: Pulling from library/mysql
b380bbd43752: Pull complete # 分層下載,docker image的核心,聯合檔案系統
f23cbf2ecc5d: Pull complete
30cfc6c29c0a: Pull complete
b38609286cbe: Pull complete
8211d9e66cd6: Pull complete
2313f9eeca4a: Pull complete
7eb487d00da0: Pull complete
4d7421c8152e: Pull complete
77f3d8811a28: Pull complete
cce755338cba: Pull complete
69b753046b9f: Pull complete
b2e64b0ab53c: Pull complete
Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87 # 簽名資訊
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真實地址
# 等價于
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下載
docker pull mysql:5.7
下載指定版本的docker

docker rmi
docker rmi 鏡像Id # 洗掉指定鏡像

批量洗掉鏡像
方法一
docker rmi -f $(docker images -aq) # 洗掉所有鏡像
方法二:
docker rmi -f 鏡像Id1 鏡像Id2 鏡像Id3... # 以空格作為分隔符

在洗掉程序中可能會遇到無法洗掉的錯誤,是因為此時該鏡像的容器正在運行,要想洗掉該鏡像應該先將容器關閉,執行命令docker stop 容器Id即可
3. 容器命令
有了鏡像才可以創建容器
在這里跟著狂神以CentOS系統為例
docker pull centos # 拉取最新的centos鏡像
拉取最新版的centos鏡像,此時相當于在服務器上跑一個centos系統

容器啟動命令
docker run [可選引數] 容器名稱
# 可選引數
--name="Name" # 容器名稱 例如:tomcat01 tomcat02,用來區分容器
-d # 以后臺方式運行容器
-it # 使用互動方式運行容器,進入容器查看內容
-p # 指定容器的埠,例如 -p 8080:8080
-P # 隨機指定容器埠
# -p常用命令
-p ip:主機埠:容器埠
-p 主機埠:容器埠 (最常用)
-p 容器埠
容器埠

[root@VM-16-16-centos /]# docker run -it centos /bin/bash 啟動并進入容器
[root@d59c91417c86 /]# ls 查看容器內的內容
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@d59c91417c86 /]# exit 退出容器,從容器中退回到主機
exit
[root@VM-16-16-centos /]# ls 查看容器外的內容
bin boot data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
退出容器命令
exit # 從容器中退出到主機的命令
這個命令會直接將容器進行退出,但是在退出時會將容器關閉停止,如果想要退出時不停止容器,按下Ctrl + P + Q在容器不停止運行的情況下退出容器

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

洗掉容器命令
docker rm 容器Id # 洗掉指定容器,不能洗掉正在運行的容器
docker rm -f $(docker ps -aq) # 洗掉所有的容器

啟動容器命令
docker start 容器Id # 啟動容器
docker restart 容器Id # 重啟容器
停止容器命令
docker stop 容器Id # 停止當前正在運行的容器
docker kill 容器Id # 強制停止當前正在運行的容器
三、Docker常用進階命令
1. 容器命令
后臺啟動容器
docker run -d 鏡像名稱 # 后臺啟動容器
問題:當在后臺啟動centos時,發現容器自動停止了

原因:docker容器使用后臺運行就必須要有一個前臺行程,當docker啟動后發現自己沒有提供服務時就會自動停止,
查看日志命令
docker logs [可選引數] [容器Id] # 查看指定容器的日志
# 可選項
-f, --follow # 只輸出指定的日志
-n, --tail string # 輸出的日志條數,使用-n或--tail命令時必須加行數
-t, --timestamps # 輸出的日志前有時間資訊





進入正在運行的容器
方法一:
docker exec -it 容器Id bashShell # 以互動模式進入當前正在運行的容器
# 測驗
# 查看當前正在運行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 20 minutes ago Up 20 minutes laughing_nash
# 進入到指定容器的/bin/bash目錄下
[root@VM-16-16-centos ~]# docker exec -it 8b58f0b6cfb0 /bin/bash
# 成功的進入了指定目錄
[root@8b58f0b6cfb0 /]#
方法二:
docker attach 容器Id
# 測驗
# 查看當前正在運行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 27 minutes ago Up 27 minutes laughing_nash
# 進入到指定的容器
[root@VM-16-16-centos ~]# docker attach 8b58f0b6cfb0
# 成功的進入了指定容器內部
[root@8b58f0b6cfb0 /]#
兩種方法的區別:
- docker exec:進入容器后開啟一個新的終端,可以在里面操作(常用)
- docker attach:進入容器正在執行的終端,不會啟動新的行程
查看容器的行程命令
查看容器的行程資訊時要查看的容器必須是正在運行的容器
docker top 容器Id
[root@VM-16-16-centos ~]# docker ps # 查看當前正在運行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 10 seconds ago Up 10 seconds laughing_nash
[root@VM-16-16-centos ~]# docker top 8b58f0b6cfb0 # 查看指定容器的行程資訊
UID PID PPID C STIME TTY TIME CMD
root 1453522 1453502 0 19:35 pts/0 00:00:00 /bin/bash
拷貝容器內的檔案到主機
docker cp 容器Id:容器內容路徑 目的的主機路徑

2. 鏡像命令
查看鏡像元資料
docker inspect 容器Id

總結
以上便是docker中基本的鏡像命令和容器命令,在docker中還有很多的命令,要想學好docker,只有不斷的使用命令才能將其理解和記憶,除此以外沒有其它捷徑,
當堅強成為唯一的選擇,才知道自己可以有多堅強,在堅持不住的時候,記得告訴自己,再堅持一下,想一千次,不如去做一次!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/356215.html
標籤:其他
