在 CentOS 7上安装 Docker及Docker的基本操作
前面有一篇讲了 在 CentOS 6上安装 docker-io/docker-engine
CentOS6上虽然还可以安装Docker,但是不推荐在CentOS6上进行安装,CentOS6也没办法安装最新版本的docker-ce版本。 如果要学习和在生产中使用Docker,推荐在CentOS7上安装docker-ce版本。
一、在CentOS7上安装docker-ce
在CentOS7上安装Docker还是比较简单的。
CentOS本身就有提供一个docker版本可以安装,但版本较旧,不推荐使用。
# yum list|grep docker
docker.x86_64 1.13.1-102.git7f2769b.el7.centos
要想安装最新版的Docker版本,还是需要从Docker官网下载repo文件来进行安装。 把repo文件下载到/etc/yum.repos.d目录下。
#cd /etc/yum.repos.d
#wget https://download.docker.com/linux/centos/docker-ce.repo
开始安装:
# yum install docker-ce
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: hkg.mirror.rackspace.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 3:19.03.2-3.el7 will be installed
--> Processing Dependency: containerd.io >= 1.2.2-3 for package: 3:docker-ce-19.03.2-3.el7.x86_64
--> Processing Dependency: docker-ce-cli for package: 3:docker-ce-19.03.2-3.el7.x86_64
--> Running transaction check
---> Package containerd.io.x86_64 0:1.2.6-3.3.el7 will be installed
---> Package docker-ce-cli.x86_64 1:19.03.2-3.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M
Installing for dependencies:
containerd.io x86_64 1.2.6-3.3.el7 docker-ce-stable 26 M
docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M
Transaction Summary
=================================================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 90 M
Installed size: 368 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-19.03.2-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Public key for docker-ce-19.03.2-3.el7.x86_64.rpm is not installed
(1/3): docker-ce-19.03.2-3.el7.x86_64.rpm | 24 MB 00:00:04
(2/3): containerd.io-1.2.6-3.3.el7.x86_64.rpm | 26 MB 00:00:04
(3/3): docker-ce-cli-19.03.2-3.el7.x86_64.rpm | 39 MB 00:00:04
-----------------------------------------------------------------------------------------------------------------
Total 11 MB/s | 90 MB 00:00:08
Warning: RPMDB altered outside of yum.
Installing : 1:docker-ce-cli-19.03.2-3.el7.x86_64 1/3
Installing : containerd.io-1.2.6-3.3.el7.x86_64 2/3
Installing : 3:docker-ce-19.03.2-3.el7.x86_64 3/3
Verifying : 3:docker-ce-19.03.2-3.el7.x86_64 1/3
Verifying : containerd.io-1.2.6-3.3.el7.x86_64 2/3
Verifying : 1:docker-ce-cli-19.03.2-3.el7.x86_64 3/3
Installed:
docker-ce.x86_64 3:19.03.2-3.el7
Dependency Installed:
containerd.io.x86_64 0:1.2.6-3.3.el7 docker-ce-cli.x86_64 1:19.03.2-3.el7
Complete!
从上面可以看出,安装了三个软件docker-ce、containerd.io和docker-ce-cli。
注意:安装完后最好把docker默认的保存地址/var/lib/docker单独存在一个分区,并且这个分区格式化时,要带上参数ftype=1。
# mkfs -t xfs -n ftype=1 /dev/sdx
或者修改默认配置,指向其它已经使用ftype=1格式过的分区。
启动Docker服务
# systemctl restart docker
# systemctl status docker
¡ñ docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-09-20 22:52:08 CST; 5s ago
Docs: https://docs.docker.com
Main PID: 7222 (dockerd)
Memory: 46.2M
CGroup: /system.slice/docker.service
©¸©¤7222 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.124251525+08:00" level=info msg="[grap...lay2"
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.133805844+08:00" level=warning msg="mo...ound"
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.134250040+08:00" level=info msg="Loadi...art."
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.376128471+08:00" level=info msg="Defau...ress"
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.465507266+08:00" level=info msg="Loadi...one."
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.525920859+08:00" level=warning msg="No...rlay2
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.526507025+08:00" level=info msg="Docke....03.2
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.526657094+08:00" level=info msg="Daemo...tion"
Sep 20 22:52:08 logserver systemd[1]: Started Docker Application Container Engine.
Sep 20 22:52:08 logserver dockerd[7222]: time="2019-09-20T22:52:08.580220493+08:00" level=info msg="API l...sock"
Hint: Some lines were ellipsized, use -l to show in full.
二、Docker的基本操作
1、查看当前Docker的版本信息
# docker version
Client: Docker Engine - Community
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:28:55 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.12)
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:27:34 2019
OS/Arch: linux/amd64
Experimental: false
可以看出,Docker客户端和服务端的版本都是19.03.2,API版本是1.40,go语言版本是1.12.8。
2、搜索可用的镜像
使用docker search搜索查寻某个镜像
# docker search hello-world
[php]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hello-world Hello World! (an example of minimal Dockeriz… 1033 [OK]
kitematic/hello-world-nginx A light-weight nginx container that demonstr… 132
tutum/hello-world Image to test docker deployments. Has Apache… 63 [OK]
dockercloud/hello-world Hello World! 15 [OK]
crccheck/hello-world Hello World web server in under 2.5 MB 10 [OK]
ppc64le/hello-world Hello World! (an example of minimal Dockeriz… 2
vad1mo/hello-world-rest A simple REST Service that echoes back all t… 2 [OK]
souravpatnaik/hello-world-go hello-world in Golang 1
carinamarina/hello-world-app This is a sample Python web application, run… 1 [OK]
markmnei/hello-world-java-docker Hello-World-Java-docker 1 [OK]
kevindockercompany/hello-world 0
burdz/hello-world-k8s To provide a simple webserver that can have … 0 [OK]
koudaiii/hello-world 0
freddiedevops/hello-world-spring-boot 0
datawire/hello-world Hello World! Simple Hello World implementati… 0 [OK]
infrastructureascode/hello-world A tiny "Hello World" web server with a healt… 0 [OK]
第一列:镜像的名称 第二列:镜像的描述 第三列:STARS数(相当于点赞数,收藏数),数值越高,这个镜像越好 第四列:是否是官方的
可以看出第一个stars数最多的是hello-world镜像是官方的。
3、下载一个镜像到本地
把hello-world这个镜像下载到本地
# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
4、查看当前本地上的镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 8 months ago 1.84kB
5、运行一个镜像
# docker run hello-world
[php]
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
平时对镜像进行操作时,最好使用“名称:tag”或者直接使用镜像ID来操作,因为如果有多个同名镜像的话,只带名称可能会识别不到。 如docker run hello-world:latest 或者 docker run fce289e99eb9'