一、docker簡介
docker是一個開源的應用容器引擎;是一個輕量級容器技術; docker支援將軟體編譯成一個映象;然後在映象中各種軟體做好配置,將映象釋出出去,其他使用者可以直接使用這個映象; 執行中的這個映象稱為容器,容器啟動是非常快速的。
二、docker的核心概念
docker主機(Host):安裝了Docker程式的機器(docker直接安裝在作業系統之上);
docker客戶端(Client):連線docker主機進行操作;
docker倉庫(Registry):用來儲存各種打包好的軟體映象;
docker映象(Images):軟體打包好的映象;放在docker倉庫中;
docker容器(Container):映象啟動後的例項稱為一個容器;容器是獨立執行的一個或一組應用
三、使用docker步驟
1)、安裝docker
2)、去docker倉庫找到這個軟體對應的映象(docker hub);
3)、使用docker執行這個映象,這個映象就會生成一個docker容器;
4)、對容器的啟動停止就是對軟體的啟動停止;
四、docker的安裝與解除安裝
1)、docker的安裝命令
1、檢查核心版本,必須是3.10及以上
uname -r
複製程式碼
# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 新增軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務
sudo service docker start
# 注意:
# 官方軟體源預設啟用了最新的軟體,您可以通過編輯軟體源的方式獲取各個版本的軟體包。例如官方並沒有將測試版本的軟體源置為可用,你可以通過以下方式開啟。同理可以開啟各種測試版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 將 [docker-ce-test] 下方的 enabled=0 修改為 enabled=1
#
# 安裝指定版本的Docker-CE:
# Step 1: 查詢Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安裝指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]複製程式碼
安裝校驗
root@iZbp12adskpuoxodbkqzjfZ:$ docker version
Client:
Version: 17.03.0-ce
API version: 1.26
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.0-ce
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Experimental: false複製程式碼
2)、docker的解除安裝命令
#1.查詢安裝過的包
yum list installed | grep docker
#2.刪除安裝的軟體包
yum -y remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
#3.刪除映象/容器等rm -rf /var/lib/docker複製程式碼
五、docker常用命令&操作
- docker操作
- 檢索 | docker search 關鍵字 eg:docker search redis
- 拉取 | docker pull 映象名:tag
- 列表 | docker images
- 刪除 | docker rmi image-id
說明:我們經常去docker hub上檢索映象的詳細資訊,如映象的TAG。 :tag是可選的,tag表 示標籤,多為軟體的版本,預設是latest 檢視所有本地映象 刪除指定的本地映象
2.容器操作
- 搜尋映象 [root@localhost ~]# docker search tomcat
- 拉取映象 [root@localhost ~]# docker pull tomcat
- 根據映象啟動容器 docker run --name mytomcat【自命名】 -d tomcat:latest【映象名:標籤】
- docker ps 檢視執行中的容器
- 檢視所有的容器 docker ps -a
- 停止執行中的容器 docker stop 容器的id【下圖紅色標註即為 docker ps命令查出的容器id】
- 啟動容器 docker start 容器id
- 刪除一個容器 docker rm 容器id
- 啟動一個做了埠對映的tomcat [root@localhost ~]# docker run -d -p 8888:8080 tomcat -d:後臺執行 -p: 將主機的埠對映到容器的一個埠 主機埠:容器內部的埠【下圖紅色標註即為主機埠與容器內部埠對映說明】
- 檢視容器的日誌docker logs container-name【容器名】/container-id【容器id】
- 更多命令可以參考https://docs.docker.com/engine/reference/commandline/docker/ 也可以參考每一個映象的文件內部有高階命令操作。
六、安裝mysql操作例項
- 去docker hub 查詢所需映象和tag
docker pull mysql【拉去映象】
參考docker hub 給出的啟動命令選擇相應的啟動方式
比如:
[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad10e4bc5c6a mysql "docker-entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql02 複製程式碼
Navicat連線mysql資料庫報錯問題【client does not support authentication】
解決辦法:
- docker ps -a 查詢到容器id/容器名
- docker exec -it 容器id/容器名 bash 進入mysql容器
- mysql -uroot -p登陸mysql
- use mysql【選擇mysql database】; 進入mysql
- 查詢使用者表資訊:select host,user,authentication_string from user ;
更改host為% user為root的使用者的authentication_string
host為%方便遠端連線
update user set authentication_string = 'root' where user = 'root' and host = '%';
update user set authentication_string = 'root' where user = 'root' and host = 'localhost';
如果還不行使用下面命令: alter user 'root'@'localhost' identified with mysql_native_password by '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
- 從docker hub 拉取Tomcat,並將打好的war包上傳之宿主機器一個目錄下:/home/dubbo-admin.war
啟動tomcat,並用瀏覽器訪問http://host_path:8080檢視tomcat啟動情況
docker run -it --name dubbo-admin -d --rm -p 8080:8080 tomcat 複製程式碼
- 進入docker容器中,並檢視tomcat容器路徑
docker exec -i -t <docker_name> bash 複製程式碼
- 將宿主機器的war包複製到docker容器中:
#從主機複製到容器 sudo docker cp host_path(宿主機器路徑) containerID:container_path(容器路徑) #從容器複製到主機 sudo docker cp containerID:container_path host_path #例如 sudo docker cp /home/dubbo-admin-2.6.war 603140acbd3c:/usr/local/tomcat/webapps 複製程式碼
- 上述執行有個弊端就是 容器重啟後專案就會不再了,所以我們需要打包dubbo-admin映象
#映象打包 docker commit -m "提交資訊" -a "作者" ${CONTAINER_ID} ${NEW_IMAGE_NAME} 複製程式碼