為什么學習Docker?
再學完linux后,我們需要遠程對Linux虛擬機下載一些軟件,如果在Linux里直接用命令下載軟件會十分麻煩,所以我們需要通過使用Docker將軟件直接下載到Docker中,這樣更方便下載和卸載等操作。
一張圖弄懂Docker
Docker 是一個應用打包、分發、部署的容器
Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任 何流行的Linux 機器上
你也可以把它理解為一個輕量的虛擬機,它只虛擬你軟件需要的運行環境,多余的一點都不要,而 普通虛擬機則是一個完整而龐大的系統,包含各種不管你要不要的軟件。
倉庫(Repository):是docker提供的一個用來保存鏡像的倉庫.
鏡像(Image):鏡像就是一個可執行的包,用來創建容器,docker中每一個軟件就是一個鏡像.
容器(Container):容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等
簡而言之就是通過遠程倉庫拉取到images鏡像中,再通過容器Containers來運行即可。不需要下載再linux中下載軟件,方便了許多.。
安裝Docker
前提:我們已經安裝了yum
安裝yum-utils,配置鏡像源需要使用
yun install -y yum-utils
設置更新docker鏡像源
yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
?測試docker版本
docker -v(命令行輸入后如果顯示出版本號則下載Docker成功)
?啟動常用命令
docker安裝成功后并沒有啟動,
啟動命令 systemctl start docker
關閉命令 systemctl stop docker
設置開機自動啟動 systemctl enable docker(最好直接這樣設置了不然麻煩)
?卸載Docker
停止服務
systemctl stop docker
卸載
?yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
刪除文件
?rm -rf /var/lib/docker
?rm -rf /var/lib/containerd
?配置Docker
在etc下創建docker目錄
mkdir -p /etc/docker
?進入docker目錄
cd /etc/docker
?創建daemon.json文件
touch daemon.json
?修改文件
vim daemon.json
{ "registry-mirrors": ["https://dockerhub.icu"] }(將這串放到daemon.json文件里)
?重載配置
systemctl daemon-reload
?重啟
systemctl restart docker
?Docker命令
鏡像命令(images)
查看鏡像列表
docker images
?
這就是我的docker鏡像中的mysql redis nginx
從docker倉庫拉取鏡像到本地倉庫
docker pull mysql(拉取mysql從遠程倉庫)
?刪除本地鏡像
docker rmi 鏡像名/鏡像id
從docker保存鏡像到linux本地
docker save 鏡像名 > 鏡像名.tar
?從Linux本地 加載鏡像到docker中(這兩步可以永久性將鏡像保存到Linux中,不然哪天pull鏡像拉去不到就換地址吧不然就保留在你這Linux本地里去)
docker load 鏡像名 < 鏡像名.tar
容器命令(Containers)
?啟動容器
docker ps -a
?啟動容器
docker start 容器名
?停止容器
docker stop 容器名
?刪除容器
docker rm 容器名(需要把容器停止了才能刪除不然報錯)
?舉例下載一個mysql
下載鏡像
docker pull mysql:8.0
?創建mysql數據卷
mkdir -p /opt/mysql/data
?安裝
docker run -d -p 3306:3306 \ --name mysql \ --restart=always \ --privileged=true \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=root \ -v /opt/mysql/data:/var/lib/mysql \ mysql:8.0
?這里用到數據卷:你在容器中運行mysql、redis等會產生數據想要保存到linux上就這樣掛載。
進入到容器
docker exec -it 容器名/容器id bash
?登錄mysql
mysql -uroot -proot
?修改root賬號加密方式(不然容器中的mysql會亂碼)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自定義一個密碼';
?退出
exit
?