docker入門學習(一)

1、docker簡介

  Docker是一個開源的應用容器引擎;是一個輕量級容器技術;linux

  Docker支持將軟件編譯成一個鏡像;而後在鏡像中各類軟件作好配置,將鏡像發佈出去,其餘使用者能夠直接使用這個鏡像;redis

  運行中的這個鏡像稱爲容器,容器啓動是很是快速的。docker

2、核心概念

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

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

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

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

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

 

3、安裝docker(Centos 7 版本)

  1.安裝linux虛擬機ide

    安裝虛擬機的方法可自行百度ui

  2.在虛擬機上安裝docker   

    1)、檢查內核版本,必須是3.10及以上
           uname -r

    2)、升級安裝包及內核版本(版本在3.10以上不用操做)

        sudo yum update

    3)、安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

        sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    4)、設置鏡像下載源

        sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    5)、查看倉庫中的版本

        yum list docker-ce --showduplicates | sort -r

    6)、安裝docker-ce(社區版)
        yum install docker-ce
    7)、輸入y確認安裝
    8)、啓動docker
        [root@localhost ~]# systemctl start docker
        [root@localhost ~]# docker -v
        Docker version 1.12.6, build 3e8e77d/1.12.6
    9)、開機自啓動docker
        [root@localhost ~]# systemctl enable docker
        Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
    10)、中止docker
        systemctl stop docker

4、鏡像操做

操做 命令 說明
檢索 docker search 關鍵字 eg:docker search redis 咱們常常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。
拉取 docker pull 鏡像名:tag :tag是可選的,tag表示標籤,多爲軟件的版本,默認是latest
列表 docker images 查看全部本地鏡像
刪除 docker rmi image-id 刪除指定的本地鏡像

5、容器操做

操做 命令 說明
運行

docker run -name container-name -d image-name

eg:docker run -name myredis -d redis

--name :自定義容器名

-d:後臺運行

image-name:指定鏡像模板

列表 docker ps (查看運行中的容器) ; 加上a;能夠查看全部容器
中止 docker stop container-name/container-id 中止當前你運行的容器
啓動 docker start container-name/container-id 啓動容器
刪除 docker rm container-id 刪除指定容器
端口映射

-p 6379:6379

eg:docker run -d -p 6379:6379 --name myredis docker.io/redis

-p:主機端口(映射到容器內部的端口
容器日誌 docker logs container name/container-id

一、搜索鏡像 [root@localhost ~]# docker search tomcat 二、拉取鏡像 [root@localhost ~]# docker pull tomcat 三、根據鏡像啓動容器 docker run --name mytomcat -d tomcat:latest 四、(1)docker images
  查看docker中的鏡像
  (2)docker ps   查看運行中的容器
五、 中止運行中的容器 docker stop 容器的id 六、查看全部的容器 docker ps -a 七、啓動容器 docker start 容器id 八、刪除一個容器 docker rm 容器id 九、啓動一個作了端口映射的tomcat [root@localhost ~]# docker run -d -p 8888:8080 tomcat -d:後臺運行 -p: 將主機的端口映射到容器的一個端口 主機端口:容器內部的端口 十、查看/關閉linux的防火牆 service firewalld status ;查看防火牆狀態 service firewalld stop:關閉防火牆 十一、查看容器的日誌 docker logs container-name/container-id
 

5、遇到的問題

  1.執行    docker run -d -p 8888:8080 tomcat  報錯問題

[root@localhost ~]# docker run -d -p 8888:8080 tomcat
d4cdafe6ff91e054c1d35dcc4f20e383eec8290ac87a9258627cafd6bc5a9608
docker: Error response from daemon: driver failed programming external connectivity on endpoint competent_ride (b617b5fa85457a48d816b8de2a8d587f6a07d5155e41278330f68f231068a008):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8888 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

   解決方法  

1.kill掉docker全部進程

[root@localhost ~]# pkill docker 
2.清空nat表的全部鏈

[root@localhost ~]# iptables -t nat -F
3.中止docker默認網橋docker0

[root@localhost ~]# ifconfig docker0 down
4.刪除docker0網橋

[root@localhost ~]# brctl delbr docker0
5.重啓docker服務

[root@localhost ~]# systemctl restart docker

  在執行解決方法的時候可能還會遇到一些問題

[root@localhost ~]# pkill docker
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# ifconfig docker0 down
-bash: ifconfig: 未找到命令
[root@localhost ~]# brctl delbr docker
-bash: brctl: 未找到命令
[root@localhost ~]# ^C
[root@localhost ~]# ^C
[root@localhost ~]# yum -y install net-tools
[root@localhost ~]# yum install -y bridge-utils 

6、訪問Tomcat 

相關文章
相關標籤/搜索