1:安装docker社区版
[root@localhost etc]# yum install docker-ce -y
2:启动服务
[root@localhost etc]# systemctl start docker
3:查看服务
[root@localhost etc]# systemctl start docker
4:设置开机启动
[root@localhost etc]# systemctl enable docker.service
5:查看docker版本
[root@localhost etc]# docker version
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:49 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:54:13 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@localhost etc]#
PS:docker最重要的三大组件
镜像/容器/仓库
6:查看docker的详细信息
[root@localhost etc]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 3
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e25210fe30a0a703442421b0f60afac609f950a3
runc version: v1.0.1-0-g4144b63
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.714GiB
Name: localhost.localdomain
ID: ORKC:ESXF:5B4F:6C54:MU45:7CXW:BQPK:FJBW:FMKZ:JFQ6:B73U:N37H
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@localhost etc]#
下面我们来部署启动第一个docker,就用nginx来做试验吧~~~
1:先查看一下本地已经存在的镜像
[root@localhost etc]# time docker run -d -p 80:80 nginx
e3d783239571815f12cf19e66e8df2fe12ebce24db369ade60b1bb84997bc03c
docker: Error response from daemon: driver failed programming external connectivity on endpoint pedantic_franklin (20cc61eec76a66c967fd2966e1ef88eb6abdec4718b8c26e1a0437f9513f28d5): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
real 0m0.103s
user 0m0.014s
sys 0m0.007s
[root@localhost etc]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python latest 1e76b28bfd4e 3 weeks ago 911MB
redis latest ddcca4b8a6f0 3 weeks ago 105MB
nginx latest dd34e67e3371 3 weeks ago 133MB
[root@localhost etc]#
ps:如果我们的docker去下载镜像的时候特别慢,这个时候需要配置一下镜像加速,使用以下方式
#编辑配置文件
vim /etc/docker/daemon.json
#添加修改注册仓库地址
{
"registry-mirrors":[
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com",
]
}
#重启docker服务后生效
systemctl restart docker
2:介绍一下docker的常用命令吧
#下载一个centos的docker镜像
docker pull centos
#查看本地所有镜像
docker images
#运行一个docker实例
docker run 镜像名字 #(当镜像不存在的时候,会自动去仓库进行下载)
#查看docker正在运行的容器进程(容器中如果没有任何进程,那么就会挂掉了)
docker ps
docker ps -a #查看已经挂掉的所有进程
#搜索相关的镜像
docker search python3
#查看容器日志
docker logs 容器id
#查看容器日志实时刷新
docker logs -f 容器id
#进入一个容器内部
[root@localhost etc]# docker exec -it e73bd431cb1e /bin/bash
#删除镜像
docker rmi 镜像id
#删除容器
docker rm 容器id
#批量清空无用的docker容器记录,容器记录非常容易创建docke run
#批量删除挂掉的容器记录
docker rm `docker ps -aq` # 把docker容器记录的id号,保存在反引号中,丢给docker rm实现批量删除
#批量删除镜像
docker rmi `docker iamges -aq`
#批量停止容器
docker stop `docker ps -aq`
docker start 容器id #启动暂停的容器
docker stop 容器id #暂停一个容器
docker restart 容器id #重启容器
#交互式的运行一个存活的docker容器,centos
# -it参数 -i 是交互式的命令操作 -t开启一个终端 /bin/bash 指定shell解释器
# 容器空间内,有自己的文件系统
docker run -it centos /bin/bash #运行centos镜像,且进入容器内
[root@localhost ~]# docker run -it centos /bin/bash #进入容器后,容器空间内是以容器id命名的
# 运行centos镜像,生成容器实例,且有一段shell代码,在后台不断运行,死循环打印一句话,每秒钟打印一次
docker run -d centos /bin/sh -c "while true;do echo 学linux我是认真的; sleep 1;done"
#运行docker容器,且指定名字,便于管理(--name)
docker run --name "dong" -d centos /bin/sh -c "while true;do echo 学linux我是认真的; sleep 1;done"
效果图
查看所有容器
进入交互式的bash命令控制台
发现已经进入到一个干净的centos系统了
OK,大功告成~~~~