Docker是一個開源的應用容器引擎;是一個輕量級容器技術;linux
Docker支持將軟件編譯成一個鏡像;而後在鏡像中各類軟件作好配置,將鏡像發佈出去,其餘使用者能夠直接使用這個鏡像;redis
運行中的這個鏡像稱爲容器,容器啓動是很是快速的。docker
docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操做系統之上);centos
docker客戶端(Client):鏈接docker主機進行操做;tomcat
docker倉庫(Registry):用來保存各類打包好的軟件鏡像;bash
docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;app
docker容器(Container):鏡像啓動後的實例稱爲一個容器;容器是獨立運行的一個或一組應用tcp
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
操做 | 命令 | 說明 |
---|---|---|
檢索 | docker search 關鍵字 eg:docker search redis | 咱們常常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。 |
拉取 | docker pull 鏡像名:tag | :tag是可選的,tag表示標籤,多爲軟件的版本,默認是latest |
列表 | docker images | 查看全部本地鏡像 |
刪除 | docker rmi image-id | 刪除指定的本地鏡像 |
命令 | 說明 | |
---|---|---|
運行 | 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
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