一、Linux(CentOS7) 上安裝 docker 1、docker 是什麼? docker 是一種 虛擬化容器技術,一個開源的應用容器引擎。 基於鏡像,可以秒級啟動各種容器(運行一次鏡像就生成一個容器,類似於 Java 中 類與對象)。 各容器間相互隔離,且每個容器均是一個完整的運行環境。 可 ...
一、Linux(CentOS7) 上安裝 docker
1、docker 是什麼?
docker 是一種 虛擬化容器技術,一個開源的應用容器引擎。
基於鏡像,可以秒級啟動各種容器(運行一次鏡像就生成一個容器,類似於 Java 中 類與對象)。
各容器間相互隔離,且每個容器均是一個完整的運行環境。
可以很方便的讓開發者打包應用以及相關依賴包到一個可移植的輕量級的容器中,併發布到 Linux 上。
參考地址:
https://www.cnblogs.com/l-y-h/p/11337051.html
https://docs.docker.com/
https://www.runoob.com/docker/docker-tutorial.html
2、安裝
(1)官方文檔地址:
https://docs.docker.com/
(2)找到官方文檔位置,根據文檔一步步執行即可。
Step1:進入官網,選擇 Get Docker,並選擇 Docker for Linux。
Step2:選擇 相應的 Linux 系統,此處我選擇 CentOS.
(3)安裝流程
Step1:卸載舊版本。
查看當前系統是否有 docker 舊版本存在,存在則刪除舊版本。
【方式一:(先查找是否存在,再刪除)】 rpm -qa | grep docker 【方式二:(直接刪除,不管是不是存在,root 用戶不需要輸入 sudo)】 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
Step2:安裝 Docker 倉庫。
使用 Docker 倉庫進行安裝,用來簡化安裝、升級等操作。也可採用 RPM 方式手動安裝。
所需軟體包:
yum-config-manager 需要 yum-util。
device mapper 存儲驅動程式 需要 device-mapper-persistent-data、 lvm2。
【安裝所需軟體包:(yum-utils、device-mapper-persistent-data、lvm2)】 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 【設置穩定的倉庫(用於下載 docker):】 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Step3:安裝社區版的 Docker(Docker Engine-Community)
安裝最新版本的 Docker Engine-Community 和 containerd.
【安裝最新的 Docker:】 sudo yum install docker-ce docker-ce-cli containerd.io 【查看當前版本,若有版本數據,則安裝成功】 docker -v
Step4:啟動 docker,並檢查是否成功啟動。
【啟動、關閉 docker:(方式一)】 sudo systemctl start docker sudo systemctl stop docker 【啟動、關閉 docker:(方式二)】 sudo service docker start sudo service docker stop 【檢查是否啟動成功:(方式一,查看本地鏡像)】 sudo docker images 【檢查是否啟動成功:(方式二,運行 hello-world 鏡像)】 sudo docker run hello-world
Step5:設置開機自啟動。
每次開機都得重新輸入命令用於啟動 docker,很麻煩,所以一般設置開機自啟動。
【查看是否開機自啟動:】 systemctl list-unit-files | grep enable 或者 systemctl list-unit-files | grep docker 【開機自啟動:】 sudo systemctl enable docker
(4)配置鏡像加速(此處使用 阿裡雲鏡像)
預設下載地址比較慢(dockerhub),使用鏡像加速可以提高軟體下載速度。
Step1:登陸 阿裡雲官網,然後點擊 控制台。
Step2:進入控制台,點擊列表框,選擇產品服務中的 容器鏡像服務。
Step3:進入 容器鏡像服務後,選擇鏡像加速器,按照步驟操作即可。
Step4:配置鏡像加速器。
【加速器地址:】 https://y5krm9wr.mirror.aliyuncs.com 【修改配置文件:】 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://y5krm9wr.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
二、常用命令 -- 鏡像倉庫管理相關命令
用於從 遠程鏡像倉庫下載鏡像到本地。
1、docker pull(從鏡像倉庫中拉取指定的鏡像)
【格式:】 docker pull [選項] 鏡像名[:版本號] 選項: -a 拉取所有鏡像 註: :版本號 可以不存在,不存在時,獲取最新的鏡像。 【舉例:】 docker pull mysql:8.0.19
2、docker search(從 Dcoker Hub 中查找鏡像)
【格式:】 docker search [選項] 鏡像名 選項: -s 指定數 顯示 stars 不小於 指定數的鏡像。 【舉例:】 docker search -s 20 mysql
三、常用命令 -- 本地鏡像管理命令
用於管理本地的鏡像。
1、docker images(列出本地鏡像列表)
【格式:】 docker images [選項] [鏡像名] 選項: -a 列出所有鏡像 -q 只顯示鏡像 ID(IMAGE ID) --no-trunc 顯示完整的鏡像信息 --digests 顯示鏡像摘要信息 【舉例:】 [root@localhost ~]# docker images mysql [root@localhost ~]# docker images --no-trunc
2、docker rmi(刪除鏡像)
【格式:】 docker rmi [選項] 鏡像名 選項: -f 強制刪除 【舉例:】 docker rmi tomcat
3、docker tag(標記本地鏡像,將其歸入某個倉庫)
相當於一個鏡像的不同名字。
【格式:】
docker tag 原鏡像名 新鏡像名
【舉例:】
[root@localhost ~]# docker tag tomcat:latest mytomcat
四、常用命令 -- 管理容器的生命周期命令
運行一個鏡像,就可以生成一個 容器,容器內部是一個完整的運行環境。
一個鏡像可以生成多個容器,類似於 Java 中 類 與 對象的關係。
需要對各個容器進行管理。
1、docker run(創建一個容器並運行)
【格式:】 docker run [選項] 鏡像文件名 選項: -d 指在後臺運行容器,返回容器 ID。 -i 以交互模式運行容器,通常與 -t 連用(即 -it)。 -t 為容器分配一個偽輸入終端。 -P 隨機埠映射,將容器內部埠隨機映射到主機的埠 -p 指定埠映射,將容器內部埠映射到主機指定埠,格式:-p 主機埠:容器埠 --name 指定啟動容器的名字,格式: --name 容器名 -e 指定環境變數,格式:-e 環境變數名=環境變數值 -v 文件掛載,將容器內部文件與主機文件綁定,格式 -v 主機文件路徑:容器文件路徑 【舉例:】 docker run --name mysqlDemo -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0.19 上面命令為: docker run mysql:8.0.19 執行 mysql:8.0.19 版本的鏡像,生成一個容器 --name mysqlDemo 容器命名為 mysqlDemo -d 後臺運行 -e MYSQL_ROOT_PASSWORD=123456 設置登陸密碼為 123456,登陸用戶為 root -p 3306:3306 將容器內部 3306 埠映射到 主機的 3306 埠,即通過 主機的 3306 可以訪問容器的 3306 埠
2、docker start/stop/restart(啟動、關閉、重啟容器)
【docker start 格式:】
docker start 容器名
【docker stop 格式:】
docker stop 容器名
【docker restart 格式:】
docker restart 容器名
【舉例:】
[root@localhost ~]# docker stop mysql
3、docker kill(殺掉一個正在運行的容器)
【格式:】 docker kill [選項] 容器名 選項: -s 向容器發送一個信號 【舉例:】 [root@localhost ~]# docker kill mysqlDemo
4、docker rm(刪除容器)
【格式:】 docker rm [選項] 容器名 選項: -f 強制刪除一個運行中的容器 -v 刪除與容器相關聯的 捲 【舉例:】 [root@localhost ~]# docker rm -f mysqlDemo
5、docker create(創建一個容器,但不啟動容器)
【格式:】 docker create [選項] 鏡像名 選項基本與 docker run 一樣(沒有 -d)。 【舉例:】 [root@localhost ~]# docker create --name mysqlDemo1 -e MYSQL_ROOT_PASSWORD=123456 -p 3312:3306 mysql:8.0.19
6、docker exec(在運行的容器中執行命令)
【格式:】 docker exec [選項] 容器名 命令 選項: -d 以分離模式在後臺運行。 -i 以交互模式運行容器,通常與 -t 連用(即 -it)。 -t 為容器分配一個偽輸入終端。 【舉例:】 [root@localhost ~]# docker exec -it mysql /bin/bash
五、常用命令 -- 查看容器信息命令
1、docker ps(查看當前容器列表)
【格式:】 docker ps [選項] 選項: -a 顯示所有容器,包括未運行的容器 -l 顯示最近創建的容器 -n 指定數 顯示最近創建的 指定數 的容器。比如: -n 7,顯示最近創建的 7 個容器 -q 只顯示容器 ID 【舉例:】 [root@localhost ~]# docker ps -an 10
2、docker top(查看容器中運行的進程信息)
【格式:】
docker top 容器名
【舉例:】
[root@localhost ~]# docker top mysql
3、docker logs(獲取容器的日誌)
【格式:】 docker logs [選項] 容器名 選項: -f 跟蹤日誌輸出 --tail 顯示最新的 n 條日誌,格式: --tail=指定數 -t 顯示時間戳 【舉例:】 [root@localhost ~]# docker logs --tail=10 mysql
4、docker port(查看映射埠)
【格式:】
docker port 容器名
【舉例:】
docker port mysql
5、docker info(顯示 docker 系統信息)
【格式:】 docker info 【舉例:】 [root@localhost ~]# docker info
6、docker version、docker -v(顯示 docker 版本信息)
【格式:】 docker version docker -v 【舉例:】 [root@localhost ~]# docker version [root@localhost ~]# docker -v
六、Docker 上安裝 mysql 8.0.19 鏡像
1、查找 想要安裝的 mysql 版本
【方式一:官網搜索】 https://hub.docker.com/ https://hub.docker.com/_/mysql?tab=tags 【方式二:(通過命令行查詢)】 docker search mysql
2、下載鏡像
通過官網地址,可以查看到 想要下載的版本,使用 pull 命令拉取鏡像即可.
此處我選擇 8.0.19 版本的 mysql。
如果沒有 設置版本,則會自動下載最新的版本(即 docker pull mysql 會下載最新的版本 latest)。
【命令行下載:】 docker pull mysql:8.0.19 【查看鏡像是否成功下載:(即查看本地鏡像)】 docker images
3、運行容器
【運行容器:】 docker run -p 3306:3306 --name mysql \ -v /usr/mydata/mysql/log:/var/log/mysql \ -v /usr/mydata/mysql/data:/var/lib/mysql \ -v /usr/mydata/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:8.0.19 分析: docker run -d mysql:8.0.19 以後臺的方式運行 mysql 8.0.19 版本的鏡像,生成一個容器。 --name mysql 容器名為 mysql -e MYSQL_ROOT_PASSWORD=123456 設置登陸密碼為 123456,登陸用戶為 root -p 3306:3306 將容器內部 3306 埠映射到 主機的 3306 埠,即通過 主機的 3306 可以訪問容器的 3306 埠 -v /usr/mydata/mysql/log:/var/log/mysql 將容器的 日誌文件夾 掛載到 主機的相應位置 -v /usr/mydata/mysql/data:/var/lib/mysql 將容器的 數據文件夾 掛載到 主機的相應位置 -v /usr/mydata/mysql/conf:/etc/mysql/conf.d 將容器的 自定義配置文件夾 掛載到主機的相應位置 【查看容器是否啟動:】 docker ps -a
4、使用
【本機使用:(使用互動式方式進入)】 docker exec -it mysql /bin/bash 【外部訪問:(訪問主機的 3306 埠即可)】 ifconfig 可以查看 主機的 ip 地址(比如連接 :192.168.217.129:3306)
5、修改配置文件(比如修改預設字元集)
在啟動過程中,已經將 /etc/mysql/conf.d 掛載到了 /usr/mydata/mysql/conf 上,所以在 /usr/mydata/mysql/conf 目錄下 新建一個 my.cnf 文件,並添加配置信息,即可修改 mysql 容器的配置。
【查看 當前 mysql 的字元集:】 show variables like "%character%";
初始字元集。
創建 /mydata/mysql/conf/my.cnf ,並重啟容器。
【在 /mydata/mysql/conf 下新建一個 my.cnf 文件】 [client] # 設置字元集為 utf-8 default-character-set=utf8 [mysql] # 設置字元集為 utf-8 default-character-set=utf8 [mysqld] # 設置登陸用戶 # user=root # 設置字元集編碼為 utf-8 character-set-server=utf8 【重啟容器】 docker restart mysql
七、Docker 安裝 Redis
1、查找需要安裝的鏡像
【方式一:官網搜索】 https://hub.docker.com/ https://hub.docker.com/_/redis?tab=tags 【方式二:(通過命令行查詢)】 docker search redis
2、下載鏡像
【下載最新的鏡像:】
docker pull redis
3、運行容器
【運行容器:】 使用 docker run -v 掛載文件時,若想掛載文件,需要先在主機上創建文件,否則會當成目錄掛載。 mkdir -p /usr/mydata/redis/conf touch /usr/mydata/redis/conf/redis.conf 需要使用 redis-server /etc/redis/redis.conf 指定配置文件啟動 redis。 docker run -p 6379:6379 --name redis \ -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /usr/mydata/redis/conf/data:/data \ -d redis redis-server /etc/redis/redis.conf 分析: docker run -d redis 運行 redis 最新鏡像,並生成一個容器 --name redis 容器名為 redis -p 6379:6379 指定埠映射,容器的 6379 埠映射到 主機的 6379 埠, -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf 掛載 redis 的配置文件到主機的指定位置 -v /usr/mydata/redis/conf/data:/data 掛載 redis 的數據到主機的指定位置 redis-server /etc/redis/redis.conf 表示根據 /etc/redis/redis.conf 配置文件啟動。
4、使用
【使用互動式方式進入 redis 容器】 docker exec -it redis /bin/bash 【使用互動式方式 打開 redis-cli】 docker exec -it redis redis-cli
5、修改配置文件(比如數據持久化)
使用預設配置文件啟動 redis 時,數據不會持久化(即 appendonly = no)。
當 redis 重啟後,數據就會丟失。
修改配置文件,添加數據持久化(即 appendonly = yes)。
【編輯 /usr/mydata/redis/conf/redis.conf】 vim /usr/mydata/redis/conf/redis.conf appendonly yes