02-Docker安裝部署使用

????Docker需要安裝在64位的x86平臺(tái)或ARM平臺(tái)上(如樹莓派),并且要求內(nèi)核版本不低于3.10。但實(shí)際上內(nèi)核越新越好,過低的內(nèi)核版本可能會(huì)出現(xiàn)部分功能無法使用,或者不穩(wěn)定。? ? ????用戶可以通過如下命令檢查自己的內(nèi)核版本詳細(xì)信息:

????[root@ps2 run]# uname -a

????Linux ps2 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

????Docker的安裝可以從Docker公司官網(wǎng)上取得安裝包(https://www.docker.com/community-edition#/download),一鍵安裝使用,也可以在不同操作系統(tǒng)上采用自動(dòng)化安裝工具進(jìn)行安裝,總體來說比較簡單,下面列舉兩個(gè)操作系統(tǒng)在線安裝的例子:

一、CentOS安裝Docker

????Redhat Linux系列包括Redhat Enterprise Linux、Fedora Core、CentOS,此處以CentOS7為例安裝 Docker 。

root用戶登錄系統(tǒng)

關(guān)閉防火墻

[root@ps1 ~]# systemctl stopfirewalld.service

[root@ps1 ~]# systemctl disablefirewalld.service

更新yum源

[root@ps1 ~]#?yum clean all

[root@ps1 ~]#yum update

添加yum源?

[root@ps1 ~]# vi /etc/yum.repos.d/docker.repo

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enableid=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

安裝docker引擎

[root@ps2~]# yum install docker-engine

已加載插件:fastestmirror,langpacks

...

已安裝:

docker-engine.x86_64 0:17.05.0.ce-1.el7.centos

作為依賴被安裝:

docker-engine-selinux.noarch:17.05.0.ce-1.el7.centos

完畢!

安裝docker服務(wù)

[root@ps2 ~]# systemctl enabledocker.service

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.serviceto /usr/lib/systemd/system/docker.service.

啟動(dòng)docker引擎

[root@ps1 ~]# systemctl startdocker

測試docker是否啟動(dòng)成功

[root@ps1 ~]# docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 17.05.0-ce

Storage Driver: overlay

Backing Filesystem: xfs

Supports d_type: true

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: bridge host macvlan nulloverlay

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Init Binary: docker-init

containerd version:9048e5e50717ea4497b757314bad98ea3763c145

runc version:9c2d8d184e5da67c95d601382adf14862e4f2228

init version: 949e6fa

Security Options:

seccomp

Profile: default

Kernel Version:3.10.0-693.el7.x86_64

Operating System: CentOS Linux 7(Core)

OSType: linux

Architecture: x86_64

CPUs: 12

Total Memory: 62.64GiB

Name: ps1

ID:ITPP:IAGG:RLRD:6POX:2FLP:OFVU:BL67:25UZ:THQK:GNZH:SB54:TLJA

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

WARNING: bridge-nf-call-iptables isdisabled

WARNING: bridge-nf-call-ip6tablesis disabled

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

添加:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-arptables = 1

?重啟

docker info? 警告消失

升級(jí)centos 7內(nèi)核

以下情況需要升級(jí)內(nèi)核:

1. 使用 docker 的overlay 網(wǎng)絡(luò) (kernel >= 3.16)。

2. 使用 overlayfs 作為 docker 鏡像的存儲(chǔ)文件系統(tǒng)( kernel >= 3.18)

[root@ps2~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

[root@ps2~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

獲取http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

獲取http://elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

準(zhǔn)備中...??????????????????????????#################################[100%]

正在升級(jí)/安裝...

...

已安裝:

kernel-lt.x86_640:4.4.127-1.el7.elrepo

完畢!

[root@ps2~]# grub2-set-default 0

[root@ps2~]# reboot

設(shè)置docker開機(jī)自啟動(dòng)

[root@ps1 ~]# systemctl enabledocker

二、Ubuntu安裝Docker

2.1 安裝前檢查:

內(nèi)核版本的檢查

$ uname -r

存儲(chǔ)驅(qū)動(dòng)的檢查

$ ls -l/sys/class/misc/device-mapper/

如果以上兩個(gè)條件不滿足,則需要升級(jí)內(nèi)核版本

2.2 安裝Ubuntu維護(hù)的版本

$ sudo apt-get install -y docker.io

$ source/etc/bash_completion.d/docker.io

$ docker -version

2.3安裝Docker 維護(hù)的版本

1)檢查APT的HTTPS支持情況

$vi usr/lib/apt/methods/https文件是否存在

$apt-get update

$apt-get install -y apt-transport-https

2)添加

3)添加倉庫的key

4)安裝

簡單過程:

$ sudo apt-get install -y curl

$ curl -sSL https://get.docker.com/ubuntu/?sudo|sh

$ sudo docker version

$ sudo docker run ubuntu echo‘hello world’

三、Docker基本命令

3.1 鏡像相關(guān)操作

對(duì)于鏡像的操作就是操作image對(duì)象的,包括以下常用命令:??

docker search????? #從鏡像倉庫搜索一個(gè)鏡像

docker pull??? ????#從倉庫中拉一個(gè)鏡像

docker images???? #顯示本地所有的鏡像列表

dockerrmi??????? #刪除一個(gè)鏡像,正在被使用的鏡像不能被刪除的

dockersave?????? #將一個(gè)鏡像保存為一個(gè)tar包,帶layers和tag信息

$docker save nginx? >/home/chen/chensuozhangdaochu.tar

dockerload?????? #從一個(gè)tar包創(chuàng)建一個(gè)鏡像,和save配合使用

$docker load?? >/home/chen/chensuozhangdaochu.tar

dockerhistory???? #顯示生成一個(gè)鏡像的歷史命令,說明該鏡像是怎么產(chǎn)生的

dockertag??????? #為鏡像起一個(gè)別名

dockerimport???? #從一個(gè)tar包創(chuàng)建一個(gè)鏡像,往往和export結(jié)合使用

dockerbuild?????? #使用Dockerfile創(chuàng)建鏡像(推薦)?

dockercommit???? #從容器創(chuàng)建鏡像???????????????

3.2 容器的相關(guān)操作

對(duì)于容器的操作就是操作container的,包括以下常用命令:??

docker create??????? #創(chuàng)建一個(gè)容器但是不啟動(dòng)它

例子:$ docker create -i -t--name=create_by_chen hub.c.163.com/library/centos? /bin/bash

docker run?????????? #創(chuàng)建并啟動(dòng)一個(gè)容器

docker stop????????? #停止容器運(yùn)行,發(fā)送信號(hào)SIGTERM

docker start????????? #啟動(dòng)一個(gè)停止?fàn)顟B(tài)的容器

docker restart??????? #重啟一個(gè)容器

docker rm?????????? #刪除一個(gè)容器

docker kill?????????? #發(fā)送信號(hào)給容器,默認(rèn)SIGKILL

docker attach??????? #連接(進(jìn)入)到一個(gè)正在運(yùn)行的容器

docker exec???????? # Run a command in a runningcontainer? 在已經(jīng)運(yùn)行的容器中運(yùn)行一個(gè)命令,進(jìn)入bash交互模式

docker wait???????? #阻塞到一個(gè)容器,直到容器停止運(yùn)行

docker ps?????????? #顯示狀態(tài)為運(yùn)行(Up)的容器

docker ps -a???????? #顯示所有容器,包括運(yùn)行中(Up)的和退出的(Exited)

docker inspect?????? #深入容器內(nèi)部獲取容器所有信息,可以查看一個(gè)運(yùn)行的和沒有運(yùn)行的容器,過濾(grep)看一下IP地址

docker logs????????? #查看容器的日志(stdout/stderr)

docker events??????? #得到docker服務(wù)器的實(shí)時(shí)的事件

docker port????????? #顯示容器的端口映射

docker top?????????? #顯示容器的進(jìn)程信息

docker diff?????????? #顯示容器文件系統(tǒng)的前后變化

docker rename?????? #重命名docker容器名

docker cp???????? #從容器里向外拷貝文件或目錄

示例:從宿主機(jī)到容器$ docker cp /root/123.shtest:/root/123.sh

示例:從容器到宿主機(jī) $ docker cp

test:/root/123.sh /root/123.sh

docker export????? #將容器整個(gè)文件系統(tǒng)導(dǎo)出為一個(gè)tar包,不帶layers、tag等信息

$ docker export? 45d3e7388ccd?> testchensuozhang.tar??

注意:用戶在哪個(gè)目錄,導(dǎo)出的文件就在哪個(gè)目錄,可以ls? 看一下么 ,想導(dǎo)出導(dǎo)一個(gè)固定目錄,加上目錄就行了。如:$ docker export? 45d3e7388ccd?> /home/chen/testchensuozhang.tar

3.3 Dockerfile小例子

1)創(chuàng)建一個(gè)dockerfile文件

$ touch dockerfile

$ vi dockerfile

FROM hub.c.163.com/library/nginx

MAINTAINER chensuozhagn @qq.com

RUN echo "hello chen this? is the first try by ChenSuozhang" >/usr/share/nginx/html/index.html

EXPOSE 80

#CMD 'nginx'

2)利用dockfile創(chuàng)建一個(gè)新鏡像

$docker build -t web1.0:1.0? .

備注:這里的. 表示使用當(dāng)前目錄的dockerfile

3)檢查是否創(chuàng)建了這個(gè)鏡像

$ docker images

4)利用剛才創(chuàng)建的容器運(yùn)行一個(gè)容器

$ docker run? -it -p 8080:80 --name=chensuozhanggerenwangyef64d4b645d43? /bin/bash

5)運(yùn)行一下nginx

$ root@5d317f7c19a9:/# nginx

6)瀏覽器訪問nginx服務(wù)

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容