系统版本说明:
CentOS
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
内核版本:[Docker 要求 CentOS 系统的内核版本高于 3.10]
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
保证yum最新版本:// 暂时先不执行,后面安装有问题再考虑!本文在一台机器上试验所以执行过。
yum -y update
yum -y update:升级所有包同时也升级软件和系统内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核
Docker安装
- 查看所有版本,并选择安装
yum list docker-ce --showduplicates | sort -r
- 安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum docker-list
yum list docker-ce --showduplicates | sort -r
yum install docker-ce // 安装最新的stable版本
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el7.x86_64.rpm // 这个包报错了,但是,docker也安装成功了,当前不执行。仅记录在此。
验证
systemctl start docker // 启动docker
docker version // 查看docker版本
Client: Docker Engine - Community
Version: 20.10.4
API version: 1.41
Go version: go1.13.15
Git commit: d3cb89e
Built: Thu Feb 25 07:06:20 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.4
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 363e9a8
Built: Thu Feb 25 07:04:45 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
卸载docker
yum -y remove docker-engine
配置阿里云的镜像加速器
在阿里云上申请:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["XXXXX"]
> }
> EOF
{
"registry-mirrors": ["XXXX"]
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
docker启动nginx
docker search nginx
docker pull nginx:latest
docker images
docker run --name nginx-docker -p 8080:80 -d nginx
// --name nginx-docker:容器名称。
-p 8080:80: 端口进行映射,将虚拟机8080端口映射到容器内部的80端口。
-d nginx: 设置容器在后台一直运行。
ps aux | grep nginx
访问结果:
docker命令
- docker search java //在docker hub上搜素java镜像
- docker pull nginx:latest //获取镜像文件nginx:版本
- docker images // 查看本地docker镜像文件
- docker start/stop id/name // 通过id/name启动/停止某个容器!!!
- docker inspect id // 查看容器信息
- docker container logs id // 查看容器日志
- docker top id // 查看容器中的进程
- docker ps // 查看当前运行的容器
- docker ps -a //查看所有的容器
- docker attach id // 进入某个容器,退出后,容器也会停止
- docker rm id/name // 删除某个容器
- docker rmi id/name //删除某个镜像
- docker build -t imageName . //通过当前目录下的dockerfile创建一个名为imageName的镜像
- docker run --name nginx-test -p 8888:80 -d nginx // 以nginx镜像文件启动一个名为nginx-test的容器,端口映射为访问端口8888映射到docker端口80 -d后台运行
- docker run --name nginx-copy -ti nginx /bin/bash //以nginx镜像文件启动一个nginx-copy的容器,然后以伪终端交互式方式进入容器,运行bash
- docker exec -ti id COMMAND //以伪终端交互式方式进入容器,退出容器不停止
docker exec & docker attach的区别:
[root@localhost ~]# docker exec -ti ef659d8abbbd /bin/bash
root@ef659d8abbbd:/# uname -a
Linux ef659d8abbbd 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 GNU/Linux
root@ef659d8abbbd:/# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef659d8abbbd nginx "/docker-entrypoint.…" 5 minutes ago Up About a minute 80/tcp docker-copy
8c12ed444f86 nginx "/docker-entrypoint.…" 22 minutes ago Exited (0) 2 minutes ago nginx-docker
1e848c105b26 nginx "/docker-entrypoint.…" 26 minutes ago Exited (0) 23 minutes ago nginx-test
[root@localhost ~]# docker attach ef659d8abbbd
root@ef659d8abbbd:/# uanme -a
bash: uanme: command not found
root@ef659d8abbbd:/# uname -a
Linux ef659d8abbbd 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 GNU/Linux
root@ef659d8abbbd:/# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES