一、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%";
初始字符集,

創建 /usr/mydata/mysql/conf/my.cnf ,并重啟容器,
【在 /usr/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

八、Docker 安裝 Nginx
參考地址:
https://www.cnblogs.com/l-y-h/p/12844824.html#_label3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/116733.html
標籤:Linux
