Docker容器從只知其一;不知其二到入門

Docker容器從只知其一;不知其二到入門php

Docker是一個開源的、跨平臺的應用容器引擎,可讓技術開發認用打包他們的應用以及一些依賴包到一個可移植的容器平臺中,發佈到任何流行的Linux操做系統上面,也能夠在Windows和mac操做系統上面跑,容器是徹底使用沙箱機制,容器相互之間不會存在任何接口。docker應用普遍、安全性好、運行快、節約資源、移植性好、自動化部署快等有點。linux

 

下面咱們來看一張docker鏡像基本原處理圖:nginx

咱們在學習Docker鏡像的時候,使用系統默認的yum源安裝會很是慢,頗有可能會安裝失敗,由於docker服務器在國外,訪問速度很是慢,訪問網絡也不穩定,並且國外的docker hub官網拉取鏡像也太慢了,咱們能夠直接修改用國內的阿里的容器Hub服務 https://cr.console.aliyun.com的控制檯,這裏須要登陸阿里帳號或者支付寶帳號,也可使用騰訊雲、百度雲、華爲雲、ucloud、網易雲等都有docker鏡像hub,我這裏使用的阿里雲鏡像服務;在學習docker容器的前提下仍是要對Linux要有點基礎,這樣學起來就容易上手,若是徹底不懂Linux,仍是建議你去學習下《Linux就該這麼學》這邊教程裏面的內容很是詳細,比較適合初學者。此文章比較適合於企業應用。docker

 

1、Centos 7 install docker-ceshell

 

安裝指定版本的Docker-CE:apache

 

# Step 1: 查找Docker-CE的版本:ubuntu

# yum list docker-ce.x86_64 --showduplicates | sort -rvim

 * updates: mirrors.aliyun.comcentos

Loading mirror speeds from cached hostfile安全

Loaded plugins: fastestmirror

Installed Packages

 * extras: mirrors.aliyun.com

 * epel: mirrors.ustc.edu.cn

docker-ce.x86_64            3:18.09.0-3.el7                      docker-ce-stable

docker-ce.x86_64            3:18.09.0-3.el7                       @docker-ce-stable

docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable

docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable

docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.03.3.ce-1.el7                     docker-ce-stable

docker-ce.x86_64            17.03.2.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

 * base: mirrors.cqu.edu.cn

Available Packages

 

# Step2: 安裝指定版本的Docker-CE

# sudo yum -y install docker-ce-[VERSION]

 

安裝最新版本的Docker-CE:

# step 1: 安裝必要的一些系統工具

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

 

# Step 2: 添加軟件源信息

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

# Step 3: 更新並安裝Docker-CE

yum makecache fast

yum -y install docker-ce

 

# Step 4: 開啓Docker服務

systemctl start docker.service

 

Step 5: 查看Docker安裝版本

docker --version

Docker version 18.09.0, build 4d60db4

 

二、docker安裝目錄結構

 

三、啓動和中止鏡像

3.一、啓動容器

自定義鏡像名:便於區分

-d 後臺運行

 

指定主機啓動的名稱

[root@centos7 ~]# docker run -itd -h hostname 鏡像

 

舉例:

[root@centos7 ~]# docker run -itd docker.io/ubuntu /bin/bash

root@82f8b90c9eba:/#

3.二、中止/退出,docker退出容器,而且關閉容器

exit

 

docker退出容器,而不關閉容器:

ctrl+p    ctrl+q   //這裏2個步驟

 

ctrl+p+q  

 

3.3、docker 給運行的容器映射本地端口

[root@centos7 ~]# docker run -itd -p 0.0.0.0:80:80 --name apache docker.io/ubuntu /bin/bash

 

四、docker經常使用命令及解釋以下

docker search nginx   //搜索鏡像庫

docker pull nginx   //選擇合適的鏡像並拉取鏡像

docker images nginx   //在本地鏡像列表裏查到 REPOSITORY 爲 nginx 的鏡像

docker images httpd   //在本地鏡像列表裏查到 REPOSITORY 爲apache的鏡像

docker info    //查看docker信息

docker version    //查看docker版本

docker pull 鏡像名稱   //下載(拉)鏡像

docker push 鏡像名稱   //上傳鏡像

docker load -i 鏡像名稱.tar  //導入鏡像

docker images    //查看全部已經安裝的鏡像列表

docker attach 鏡像名/鏡像ID  //進入鏡像裏面

docker exec 鏡像名/鏡像ID ls /home //在執行shell命令到容器裏面

 

舉例:a.txt b.txt是我開始建立的2個文本文件

[root@centos7 ~]# docker exec elegant_bhaskara ls /home

a.txt

b.txt

 

[root@centos7 ~]# docker stop 鏡像名/鏡像ID //中止鏡像

[root@centos7 ~]# docker tag 原鏡像名 新鏡像名  //生成新的images

舉例:docker tag docker.io/ubuntu ubuntu:laste

 

[root@centos7 ~]#  docker run -it test:ubuntu /bin/bash

 

[root@centos7 ~]#  docker commit hopeful_carson(NAMES) ubuntu(REPOSITORY):self(tag)  //提交鏡像,生成新的鏡像,鏡像裏面的配置也保留了,便於多個版本的管理

 

[root@centos7 ~]# docker run -itd --name test01_self ubuntu:self  用提交的鏡像再啓動新的鏡像

0f280fd95659c81fcff4069bb53ff53b07d06b28de05111dd5a9177e16865f22

 

 [root@centos7 ~]# docker exec test01_self ls /home

 

5、提交運行中的容器爲一個鏡像   (這樣不會丟失在容器的各類操做)

 

[root@centos7 ~]# docker commit clever_haibt clever_haibt_new

 

###   clever_haibt(運行容器名稱)    clever_haibt_new(生成鏡像名稱)

 

六、運行鏡像並添加端口

[root@centos7 ~]# docker run -d -it -p 80:80 clever_haibt_new:latest /bin/bash

###  小p是自定義端口    latest 是鏡像的標籤(最好寫上專業點)

 

舉例apache:httpd:latest

# docker run -d -it -p 80:80 httpd:latest

 

測試:http://ip

 

 

七、列出運行的鏡像

[root@centos7 ~]# docker ps      //查看已運行的容器狀態

 

查看鏡像、容器、數據卷所佔用的空間

[root@centos7 ~]# docker system df

 

八、Docker自己提供了兩種終止容器運行的方式,查看幫助

[root@centos7 ~]# docker stop --help

舉例:docker stop NAMES

 

docker kill --help

 

九、linux下解決docker端口映射到宿主機後外網沒法訪問的問題?

解決辦法:

[root@centos7 ~]# vim /etc/sysctl.conf

或者

[root@centos7 ~]# vim /usr/lib/sysctl.d/00-system.conf

添加以下代碼:

net.ipv4.ip_forward=1

重啓network服務

# systemctl restart network

查看是否修改爲功

# sysctl net.ipv4.ip_forward 

若是返回爲「net.ipv4.ip_forward = 1

則表示成功了

 

十、刪除鏡像

先中止鏡像--再執行刪除操做

 

[root@centos7 ~]# docker rm 鏡像名稱/容器ID

 

[root@centos7 ~]# docker rm -f 鏡像名稱/容器ID  //強制刪除鏡像

 

十一、導出鏡像,生成tar包,export導出的是讀寫層的文件系統

[root@centos7 ~]# docker export 鏡像名/鏡像ID > XXXX.tar

 

舉例:

[root@centos7 ~]# docker export test01_self > test01.tar

 

導出完整鏡像:save:導出鏡像全部文件和歷史紀錄

[root@centos7 ~]# docker save docker.io/imagine10255/centos6-lnmp-php56 > lnmp.tar

 

十二、導入鏡像

[root@centos7 ~]# docker import test01.tar(鏡像包) ubuntu:self_new(新的鏡像名)

 

1三、啓動導入的鏡像

[root@centos7 ~]# docker run -itd --name ubuntu_self_new ubuntu:self_new /bin/bash

 

打包前建立的文件存在

 

導入完整鏡像: load

[root@centos7

Docker容器從只知其一;不知其二到入門

Docker是一個開源的、跨平臺的應用容器引擎,可讓技術開發認用打包他們的應用以及一些依賴包到一個可移植的容器平臺中,發佈到任何流行的Linux操做系統上面,也能夠在Windows和mac操做系統上面跑,容器是徹底使用沙箱機制,容器相互之間不會存在任何接口。docker應用普遍、安全性好、運行快、節約資源、移植性好、自動化部署快等有點。

 

下面咱們來看一張docker鏡像基本原處理圖:

咱們在學習Docker鏡像的時候,使用系統默認的yum源安裝會很是慢,頗有可能會安裝失敗,由於docker服務器在國外,訪問速度很是慢,訪問網絡也不穩定,並且國外的docker hub官網拉取鏡像也太慢了,咱們能夠直接修改用國內的阿里的容器Hub服務 https://cr.console.aliyun.com的控制檯,這裏須要登陸阿里帳號或者支付寶帳號,也可使用騰訊雲、百度雲、華爲雲、ucloud、網易雲等都有docker鏡像hub,我這裏使用的阿里雲鏡像服務;在學習docker容器的前提下仍是要對Linux要有點基礎,這樣學起來就容易上手,若是徹底不懂Linux,仍是建議你去學習下《Linux就該這麼學》這邊教程裏面的內容很是詳細,比較適合初學者。此文章比較適合於企業應用。

 

1、Centos 7 install docker-ce

 

安裝指定版本的Docker-CE:

 

# Step 1: 查找Docker-CE的版本:

# yum list docker-ce.x86_64 --showduplicates | sort -r

 * updates: mirrors.aliyun.com

Loading mirror speeds from cached hostfile

Loaded plugins: fastestmirror

Installed Packages

 * extras: mirrors.aliyun.com

 * epel: mirrors.ustc.edu.cn

docker-ce.x86_64            3:18.09.0-3.el7                      docker-ce-stable

docker-ce.x86_64            3:18.09.0-3.el7                       @docker-ce-stable

docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable

docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable

docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable

docker-ce.x86_64            17.03.3.ce-1.el7                     docker-ce-stable

docker-ce.x86_64            17.03.2.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

 * base: mirrors.cqu.edu.cn

Available Packages

 

# Step2: 安裝指定版本的Docker-CE

# sudo yum -y install docker-ce-[VERSION]

 

安裝最新版本的Docker-CE:

# step 1: 安裝必要的一些系統工具

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

 

# Step 2: 添加軟件源信息

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

# Step 3: 更新並安裝Docker-CE

yum makecache fast

yum -y install docker-ce

 

# Step 4: 開啓Docker服務

systemctl start docker.service

 

Step 5: 查看Docker安裝版本

docker --version

Docker version 18.09.0, build 4d60db4

 

二、docker安裝目錄結構

 

三、啓動和中止鏡像

3.一、啓動容器

自定義鏡像名:便於區分

-d 後臺運行

 

指定主機啓動的名稱

[root@centos7 ~]# docker run -itd -h hostname 鏡像

 

舉例:

[root@centos7 ~]# docker run -itd docker.io/ubuntu /bin/bash

root@82f8b90c9eba:/#

3.二、中止/退出,docker退出容器,而且關閉容器

exit

 

docker退出容器,而不關閉容器:

ctrl+p    ctrl+q   //這裏2個步驟

 

ctrl+p+q  

 

3.3、docker 給運行的容器映射本地端口

[root@centos7 ~]# docker run -itd -p 0.0.0.0:80:80 --name apache docker.io/ubuntu /bin/bash

 

四、docker經常使用命令及解釋以下

docker search nginx   //搜索鏡像庫

docker pull nginx   //選擇合適的鏡像並拉取鏡像

docker images nginx   //在本地鏡像列表裏查到 REPOSITORY 爲 nginx 的鏡像

docker images httpd   //在本地鏡像列表裏查到 REPOSITORY 爲apache的鏡像

docker info    //查看docker信息

docker version    //查看docker版本

docker pull 鏡像名稱   //下載(拉)鏡像

docker push 鏡像名稱   //上傳鏡像

docker load -i 鏡像名稱.tar  //導入鏡像

docker images    //查看全部已經安裝的鏡像列表

docker attach 鏡像名/鏡像ID  //進入鏡像裏面

docker exec 鏡像名/鏡像ID ls /home //在執行shell命令到容器裏面

 

舉例:a.txt b.txt是我開始建立的2個文本文件

[root@centos7 ~]# docker exec elegant_bhaskara ls /home

a.txt

b.txt

 

[root@centos7 ~]# docker stop 鏡像名/鏡像ID //中止鏡像

[root@centos7 ~]# docker tag 原鏡像名 新鏡像名  //生成新的images

舉例:docker tag docker.io/ubuntu ubuntu:laste

 

[root@centos7 ~]#  docker run -it test:ubuntu /bin/bash

 

[root@centos7 ~]#  docker commit hopeful_carson(NAMES) ubuntu(REPOSITORY):self(tag)  //提交鏡像,生成新的鏡像,鏡像裏面的配置也保留了,便於多個版本的管理

 

[root@centos7 ~]# docker run -itd --name test01_self ubuntu:self  用提交的鏡像再啓動新的鏡像

0f280fd95659c81fcff4069bb53ff53b07d06b28de05111dd5a9177e16865f22

 

 [root@centos7 ~]# docker exec test01_self ls /home

 

5、提交運行中的容器爲一個鏡像   (這樣不會丟失在容器的各類操做)

 

[root@centos7 ~]# docker commit clever_haibt clever_haibt_new

 

###   clever_haibt(運行容器名稱)    clever_haibt_new(生成鏡像名稱)

 

六、運行鏡像並添加端口

[root@centos7 ~]# docker run -d -it -p 80:80 clever_haibt_new:latest /bin/bash

###  小p是自定義端口    latest 是鏡像的標籤(最好寫上專業點)

 

舉例apache:httpd:latest

# docker run -d -it -p 80:80 httpd:latest

 

測試:http://ip

 

 

七、列出運行的鏡像

[root@centos7 ~]# docker ps      //查看已運行的容器狀態

 

查看鏡像、容器、數據卷所佔用的空間

[root@centos7 ~]# docker system df

 

八、Docker自己提供了兩種終止容器運行的方式,查看幫助

[root@centos7 ~]# docker stop --help

舉例:docker stop NAMES

 

docker kill --help

 

九、linux下解決docker端口映射到宿主機後外網沒法訪問的問題?

解決辦法:

[root@centos7 ~]# vim /etc/sysctl.conf

或者

[root@centos7 ~]# vim /usr/lib/sysctl.d/00-system.conf

添加以下代碼:

net.ipv4.ip_forward=1

重啓network服務

# systemctl restart network

查看是否修改爲功

# sysctl net.ipv4.ip_forward 

若是返回爲「net.ipv4.ip_forward = 1

則表示成功了

 

十、刪除鏡像

先中止鏡像--再執行刪除操做

 

[root@centos7 ~]# docker rm 鏡像名稱/容器ID

 

[root@centos7 ~]# docker rm -f 鏡像名稱/容器ID  //強制刪除鏡像

 

十一、導出鏡像,生成tar包,export導出的是讀寫層的文件系統

[root@centos7 ~]# docker export 鏡像名/鏡像ID > XXXX.tar

 

舉例:

[root@centos7 ~]# docker export test01_self > test01.tar

 

導出完整鏡像:save:導出鏡像全部文件和歷史紀錄

[root@centos7 ~]# docker save docker.io/imagine10255/centos6-lnmp-php56 > lnmp.tar

 

十二、導入鏡像

[root@centos7 ~]# docker import test01.tar(鏡像包) ubuntu:self_new(新的鏡像名)

 

1三、啓動導入的鏡像

[root@centos7 ~]# docker run -itd --name ubuntu_self_new ubuntu:self_new /bin/bash

 

打包前建立的文件存在

 

導入完整鏡像: load

[root@centos7 ~]# docker rmi docker.io/imagine10255/centos6-lnmp-php56  //刪除

 

[root@centos7 ~]# docker load -i lnmp.tar  //從新導入

~]# docker rmi docker.io/imagine10255/centos6-lnmp-php56  //刪除

 

[root@centos7 ~]# docker load -i lnmp.tar  //從新導入

相關文章
相關標籤/搜索