docker学习笔记(一)docker入门
目錄
基本概念
docker引擎
docker架構
安裝docker
docker常用命令
Docker 是一個開源的應用容器引擎,它基于?Go 語言?并遵從 Apache2.0 協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級的可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
在有docker之前,我們一般使用虛擬化技術在一臺電腦上部署多個項目,容器和虛擬機具有相似的資源隔離和分配優勢,但功能不同,從下圖可以看出,容器虛擬化了操作系統,而不單單是硬件,相對虛擬機容器更加簡單便攜。
? ??
容器相當于將代碼和依賴打包在一起,形成一個整體來運行。多個容器可以在同一臺計算機上運行,??并與其他容器共享操作系統內核,每個容器在用戶空間中作為隔離的進程運行,可以在創建容器的時候再分配對應的空間,所需的空間大小比VM小的多
虛擬機(VM)是將一臺服務器當作多臺服務器來使用。虛擬機管理程序允許多個VM在單臺計算機上運行。每個VM都包含操作系統,應用程序,必要的二進制文件等數個GB的系統。需要在創建之初就為虛擬機分配足夠的內存空間
基本概念
Docker中包含三個基本概念:
Container(容器):
容器是打包代碼及其所有依賴項的軟件的標準單元,因此應用程序可以從一個機器環境快速可靠地運行到另一個環境。Docker容器是輕巧的,獨立的,可執行的軟件包,其中包含運行應用程序所需的一切代碼,系統工具,系統庫和配置文件等。
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
Image(鏡像):
An?image?is a read-only template with instructions for creating a Docker container. Often, an image is?based on?another image, with some additional customization.?
鏡像在docker引擎上運行就是一個容器了,所以image相當于是容器的一個模板,它包含容器運行所需的一切代碼,環境參數,配置文件等
Image和Container的關系:
Container images become containers at runtime and in the case of Docker containers - images become containers when they run on?Docker Engine.?
Repository(倉庫)
存儲鏡像的地方,可以有docker官方的repository,也有阿里云的,也可以搭建自己的鏡像倉庫,類似于maven倉庫
簡單的理解:倉庫是用來存儲鏡像的地方,我們從倉庫獲取到鏡像,然后通過鏡像來生成一個個容器,在生成過程中可以指定參數生成自己想要的不同的容器對象
docker引擎
Docker Engine主要包含以下組件:
-
服務器是一種長期運行的程序,稱為守護程序進程(dockerd命令)。
-
REST API,它指定程序可以用來與守護程序(服務器)進行通信并指示其操作的接口。
-
命令行界面(CLI)客戶端(我們常說的docker命令)。
?
CLI使用Docker REST API通過腳本或直接CLI命令來控制Docker守護程序或與Docker守護程序進行交互。
docker架構
Docker使用客戶端-服務器架構。Docker?客戶端與Docker daemon 守護進程進行 通信,該守護進程接受客戶端的命令后,依據命令執行構建,運行和分發Docker容器等工作,并與registry(其實就是docker的鏡像倉庫)進行交互。
使用docker pull或者docker run命令時,所需的image將從配置的docker倉庫中下載。使用docker push命令時,會將image推送到配置的docker倉庫。
安裝docker
先切換到root用戶 ?sudo -i
1.如果有安裝docker,先卸載
[root@10 ~]# sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2.下載docker依賴
[root@10 ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm23.設置docker倉庫地址
[root@10 ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4.安裝docker
[root@10 ~]# sudo yum install -y docker-ce docker-ce-cli containerd.io由于虛擬機下載速度慢,導致docker安裝不成功,設置成阿里的鏡像倉庫地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
再次嘗試
5.設置阿里云鏡像加速器
url:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
[root@10 ~]# sudo mkdir -p /etc/docker [root@10 ~]# sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://2a3ats4n.mirror.aliyuncs.com"] } EOF [root@10 ~]# sudo systemctl daemon-reload6.啟動docker
[root@10 ~]# sudo systemctl start docker7.安裝tomcat
[root@10 ~]# docker pull tomcat ##將tomcat端口映射成centos宿主機端口 9090 [root@10 ~]# docker run -d --name my-tomcat -p 9090:8080 tomcat成功通過宿主機ip端口訪問tomcat
?
docker常用命令
image相關命令
(1) 查看本地image列表 ?
? ? ?docker images ? ?
? ? ?docker image ls
(2) 獲取遠端鏡像 ? ?
? ? ?docker pull ???
(3) 刪除鏡像[注意此鏡像如果正在使用,或者有關聯的鏡像,則需要先處理完] ? ?
? ? ?docker image rm imageid ? ?
? ? ?docker rmi -f imageid ? ?
? ? ?docker rmi -f $(docker image ls) ????刪除所有鏡像
(4)運行鏡像 ? ?
? ? ?docker run image ?
(5)發布鏡像 ? ?
? ? ?docker push?
container相關命令
(1)根據鏡像創建容器? ?
? ? docker run -d --name -p 9090:8080 my-tomcat tomcat ?
(2)查看運行中的container ? ?
? ??docker ps
(3)查看所有的container[包含退出的] ? ?
? ??docker ps -a ? ?
(4)刪除container ? ?
? ? docker rm containerid ?
? ? docker rm -f $(docker ps -a) ?? 刪除所有container
(5)進入到一個container中 ? ?
? ??docker exec -it container bash ?
(6)停止/啟動容器 ? ?
? ??docker stop/start container
docker容器的生命周期
總結
以上是生活随笔為你收集整理的docker学习笔记(一)docker入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HashMap+双向链表实现LRU
- 下一篇: kubernetes(一)kubeadm