Docker日常使用方式


前提

在安裝docker之前,建議你設置系統的國內鏡像源先哦,很快~嗯,快。
阿里雲鏡像源:https://developer.aliyun.com/mirror/

安裝

安裝docker

下面都是官網地址:
ubuntu: https://docs.docker.com/engine/install/ubuntu/
centos:https://docs.docker.com/engine/install/centos/
其他版本就是url后面的幾個英文不同。

開機啟動

sudo systemctl enable docker.service

設置國內鏡像

docker中國區的鏡像:https://registry.docker-cn.com
網易:http://hub-mirror.c.163.com
中國科技大學:https://docker.mirrors.ustc.edu.cn
阿里雲:https://cr.console.aliyun.com/ 點擊左側欄有個鏡像加速地址,就可以看到你的加速鏡像地址

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速鏡像地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安裝docker-compose(用到才裝)

官網地址:https://docs.docker.com/compose/install/

設置.docker文件權限

docker安裝好后,會在當前用戶的家目錄下生成.docker文件,該文件不出意外的話是屬於root用戶和root組,畢竟要sudo下載,使用ll命令查看一下。

drwx------  2 root root  4096 Jun  5 11:26 .docker/

假設我的用戶和組都為vagrant,那么命令如下:

sudo chown -R vagrant:vagrant 當前用戶的家目錄/.docker

上面的vagrant:vagrant對應的是用戶名:用戶組 ,一般情況下現在使用docker指令則不需要在前面加sudo了(去你丫的sudo)
安裝步驟已完成

鏡像?容器?

什么是鏡像?什么是容器吶?可以這么類比:鏡像就是一個模板;容器則是根據模板的實現。在代碼中,你也可以想成接口(鏡像)與實現類(容器)。

docker鏡像中心

地址:https://hub.docker.com/,在這里你可以找到你所需要的鏡像,你可以搜mysql、redis、nginx等等,可以查到有什么版本、怎么運行、有什么配置,有什么環境變量可以設置(比如在mysql你需要設置他的root密碼)等等信息。

指令集

以mysql為例

下載鏡像

使用docker pull命令

docker pull mysql:8.0.20

查看所有鏡像,可以看到你剛下載的mysql鏡像

docker images

創建並運行容器

創建並運行你的mysql容器,我使用一條比較長的命令來講解:

sudo docker run --name mysql_1 -p 3306:3306 -v /var/mapping/mysql/conf.d:/etc/mysql/conf.d -v /var/mapping/mysql_1/lib:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.20 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4

指令格式 docker run [OPTIONS] IMAGE [COMMAND]

docker run:會創建並運行容器
-p:映射端口 3306:3306 就是把容器的3306端口映射到宿主機的3306端口, 格式(宿主機端口:容器端口)
-v:映射數據卷,即映射文件,格式(宿主機數據卷:容器數據卷)
-e:設置環境變量,如設置root的初始密碼 MYSQL_ROOT_PASSWORD,可以在docker的鏡像中心查看有哪些環境變量
-d:指定鏡像

--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4屬於command參數,需要設置在鏡像后面。
--default-authentication-plugin=mysql_native_password指的是修改認證的加密方式,mysql8.0后的加密方式改了,導致navicat那些數據庫管理工具連不上。所以這里修改加密方式為mysql_native_password
--character-set-server=utf8mb4則是設置數據庫的編碼方式為utf8mb4。
當然還有很多的command指定都可以在docker hub鏡像中心查看。

自動運行

當docker啟動的時候,容器也自動啟動,有兩種方式
1.創建容器時指定 --restart=always

docker run --restart=always -d mysql:8.0.20

2.容器已經創建好了,使用docker update修改容器,CONTAINER可以是容器id,也可以是容器名,docker ps 可以命令查看

docker update --restart=always [CONTAINER]

常用指令

首先說明一下:CONTAINER可以是容器ID,也可以是容器名,IMAGE可以是鏡像ID,也可以是 鏡像名:tag
查看所有鏡像

docker images

查看所有容器,包括沒啟動的(加 -a 選項)

docker ps -a

啟動容器,停止容器

docker start [CONTAINER]
docker start CONTAINER1 CONTAINER2 # 啟動多個容器
docker stop [CONTAINER]
docker stop CONTAINER1 CONTAINER2 # 停止多個容器

進入容器

docker exec -it [CONTAINER] bash

在宿主機執行容器內的命令,mysqldump是mysql_1容器內的指令

docker exec -it mysql_1 mysqldump ...

刪除容器

docker rm [CONTAINER]
docker rm CONTAINER1 CONTAINER2 # 刪除多個容器

刪除鏡像

docker rmi [IMAGE]
docker rmi IMAGE1 IMAGE2 # 刪除多個鏡像

docker鏡像倉庫

當你在公司修改了某個容器之后,想在家也使用這個容器。那么可以把容器打包成鏡像,提交到docker倉庫當中。
我是在aliyun上創建了docker鏡像倉庫:https://cr.console.aliyun.com/
首先把你的容器打包成鏡像,這個是把我的mysql_1容器打包成鏡像my_mysql_1taglatet

docker commit mysql_1 my_mysql_1:latest

打包完后執行指令docker images,查看鏡像是否存在。

提交到鏡像倉庫

1.首先需要創建命名空間
image.png
2.創建你的鏡像倉庫
image.png
3.登錄並提交到倉庫
點擊所需提交到鏡像倉庫的管理按鈕,可以查看到以下界面
image.png

跟着這里面的步驟執行就可以提交到docker鏡像倉庫了。就介么簡單。

總結

以上便是docker比較常用的操作。ok,拜拜你了~。

個人博客網址: https://colablog.cn/

如果我的文章幫助到您,可以關注我的微信公眾號,第一時間分享文章給您
微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM