docker的學習總結

1、docker簡介mysql

docker是一個開源的應用容器引擎;是一個輕量級容器技術; docker支持將軟件編譯成一個鏡像;而後在鏡像中各類軟件作好配置,將鏡像發佈出去,其餘使用者能夠直接使用這個鏡像; 運行中的這個鏡像稱爲容器,容器啓動是很是快速的。linux


2、docker的核心概念web

docker主機(Host):安裝了Docker程序的機器(docker直接安裝在操做系統之上);  redis

docker客戶端(Client):鏈接docker主機進行操做;  sql

docker倉庫(Registry):用來保存各類打包好的軟件鏡像;  docker

docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;  shell

docker容器(Container):鏡像啓動後的實例稱爲一個容器;容器是獨立運行的一個或一組應用
數據庫


3、使用docker步驟vim

1)、安裝docker centos

2)、去docker倉庫找到這個軟件對應的鏡像(docker hub);

3)、使用docker運行這個鏡像,這個鏡像就會生成一個docker容器; 

4)、對容器的啓動中止就是對軟件的啓動中止;

4、docker的安裝與卸載

1)、docker的安裝命令 

一、檢查內核版本,必須是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複製代碼

5、docker經常使用命令&操做

  1. 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/ 也能夠參考每個鏡像的文檔內部有高級命令操做。

6、安裝mysql操做實例

  1. 去docker hub 查找所需鏡像和tag


  2. docker pull mysql【拉去鏡像】

  3. 參考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
    複製代碼

  4. 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';

7、docker環境部署web項目
  1. 從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  
    複製代碼

  2. 進入docker容器中,並查看tomcat容器路徑

    docker exec -i -t <docker_name>  bash
    複製代碼

  3. 將宿主機器的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
    複製代碼

  4. 上述執行有個弊端就是 容器重啓後項目就會再也不了,因此咱們須要打包dubbo-admin鏡像

    #鏡像打包
    docker commit -m "提交信息" -a  "做者" ${CONTAINER_ID}  ${NEW_IMAGE_NAME}
    複製代碼
相關文章
相關標籤/搜索