安装
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root
权限登录 Centos。确保 yum 包更新到最新。
sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
官方
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker
更新yml包索引
yml makecache fast
官方默认安装
sudo yum install docker-ce docker-ce-cli containerd.io
指定版本
sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
启动docker
# systemctl start docker
查看docker版本
# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
运行helloworld镜像
# docker run hello-world
-----------------结果-------------
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
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/
查看镜像
[root@iZ8vb409m8717pj5m22ll3Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
删除镜像
-
Uninstall the Docker Engine, CLI, and Containerd packages: 卸载docker引擎
$ sudo yum remove docker-ce docker-ce-cli containerd.io
-
Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes: 删除资源
$ sudo rm -rf /var/lib/docker
You must delete any edited configuration files manually.
配置阿里加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ma2qdlwx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
命令
帮助命令
docker version 显示版本信息
docker info 显示详细系统信息
docker 命令 --help
镜像命令
docker images 查看本地所有镜像
-a --all 列出所有 -q --quiet 只显示镜像id
docker search 镜像名称
--filter =列名 = 条件 搜索列名至少达到指定条件的镜像
docker pull 镜像名 [: tag]
docker pull mysql : 5.7
默认下拉latest 分层下载 ,联合文件系统 (可以共用公共部分)
docker rmi -f 镜像id
docker rmi -f 镜像id 镜像id ... ...
docker rmi -f $(docker images -aq) 删除全部容器
容器命令
docker run [可选参数] image 测试:docker run -it centos /bin/bash
--name 容器名 用于区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口
-p ip :主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机端口
exit 停止容器退回主机 ctrl + P + Q 不停止容器退出
docker ps 列出当前正在运行的容器
-a 列出正在运行的容器和历史运行过的容器 -n = ? 显示最近创建的容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
练习
安装运行nginx
- docker pull nginx 拉取nginx镜像
- docker run -d --name nginx01 -p 3344 : 80 nginx 运行容器
- docker ps 查看运行容器
- curl localhost:3344 测试
- docker exec -it nginx01 /bin/bash 进入容器
- whereis nginx 在容器内查看nginx位置
- cd /etc/nginx 进入目录
安装运行tomcat
- docker pull tomcat 拉取tomcat
- docker run -it --rm tomcat:9.0 运行完就删
- docker exec -it tomcat01 /bin/bash 进入容器
- 运行起来发现会报404 原因是webapps是空的 ;在webapps.dist下存在 ,可以复制到webapps下可以正常显示tomcat
安装ES
小结
选项 | 说明 |
---|---|
attach | 进入运行中的容器, 显示该容器的控制台界面。注意, 从该指令退出会导致容器关闭 |
build | 根据 Dockerfile 文件构建镜像 |
commit | 提交容器所做的改为为一个新的镜像 |
cp | 在容器和宿主机之间复制文件 |
create | 根据镜像生成一个新的容器 |
diff | 展示容器相对于构建它的镜像内容所做的改变 |
events | 实时打印服务端执行的事件 |
exec | 在已运行的容器中执行命令 |
export | 导出容器到本地快照文件 |
history | 显示镜像每层的变更内容 |
images | 列出本地所有镜像 |
import | 导入本地容器快照文件为镜像 |
info | 显示 Docker 详细的系统信息 |
inspect | 查看容器或镜像的配置信息, 默认为json数据 |
kill | -s 选项向容器发送信号, 默认为SIGKILL信号(强制关闭) |
load | 导入镜像压缩包 |
login | 登录第三方仓库 |
logout | 退出第三方仓库 |
logs | 打印容器的控制台输出内容 |
pause | 暂停容器 |
port | 容器端口映射列表 |
ps | 列出正在运行的容器, -a 选项显示所有容器 |
pull | 从镜像仓库拉取镜像 |
push | 将镜像推送到镜像仓库 |
rename | 重命名容器名 |
restart | 重启容器 |
rm | 删除已停止的容器, -f 选项可强制删除正在运行的容器 |
rmi | 删除镜像(必须先删除该镜像构建的所有容器) |
run | 根据镜像生成并进入一个新的容器 |
save | 打包本地镜像, 使用压缩包来完成迁移 |
search | 查找镜像 |
start | 启动关闭的容器 |
stats | 显示容器对资源的使用情况(内存、CPU、磁盘等) |
stop | 关闭正在运行的容器 |
tag | 修改镜像tag |
top | 显示容器中正在运行的进程(相当于容器内执行 ps -ef 命令) |
unpause | 恢复暂停的容器 |
update | 更新容器的硬件资源限制(内存、CPU等) |
version | 显示docker客户端和服务端版本信息 |
wait | 阻塞当前命令直到对应的容器被关闭, 容器关闭后打印结束代码 |
daemon | 这个子命令已过期, 将在Docker 17.12之后的版本中移出, 直接使用dockerd |