目录
一、docker安装
1、删除已安装的Docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、配置阿里云Docker Yum源
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker
①查看docker版本
[root@localhost ~]# yum list docker-ce --showduplicates
②安装较旧版本(比如Docker 17.03.2) :
需要指定完整的rpm包的包名,并且加上--setopt=obsoletes=0 参数:
yum install -y --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
③安装Docker新版本(比如Docker 18.03.0):
加上rpm包名的版本号部分或不加都可以:
yum install docker-ce-18.03.0.ce -y
或者
yum install docker-ce -y
4、启动docker
systemctl enable docker
systemctl start docker
5、查看docker版本
[root@localhost ~]# docker -v
Docker version 25.0.3, build 4debf41
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:17:10 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:16:08 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@localhost ~]#
6、查看docker的运行状态
[root@localhost ~]# docker info
Client: Docker Engine - Community
Version: 25.0.3
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.12.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.24.6
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 25.0.3
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
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 splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-1160.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.682GiB
Name: localhost.localdomain
ID: 57996705-71e3-4323-9684-ed76b305d8bf
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
7.可能出现的错误及解决方法
报错1:
docker info的时候报如下错误
bridge-nf-call-iptables is disabled
解决1:
追加如下配置,然后重启系统
# 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
问题2:
虚拟机ping百度也能ping通,但是需要等好几秒才出结果,关键是下载镜像一直报错如下
# docker pull daocloud.io/library/nginx
Using default tag: latest
Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp 192.168.1.189:41335->192.168.1.2:53: i/o timeout
解决2:
我的虚拟机用的网关和dns都是虚拟机自己的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果
# vim /etc/resolv.conf
nameserver 8.8.8.8
修改docker数据存放位置
vim /usr/lib/systemd/system/docker.service
--data-root=/docker-data
二、生产docker的环境配置
1、配置加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#注意:一定注意编码问题,出现错误---查看命令:journalctl -amu docker 即可发现错误
三、登入登出docker hub
login Register or log in to a Docker registry
登录到自己的Docker register,需有Docker Hub的注册账号
# docker login
Username: test
Password:
Email: xxxx@foxmail.com
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded
logout Log out from a Docker registry
退出登录
# docker logout
Remove login credentials for https://index.docker.io/v1/
注:推送镜像库到私有源(可注册 docker 官方账户,推送到官方自有账户)
四、docke命令
A、镜像的操作
1.镜像的查找
-f stats=100 指定星级
docker search iname
2.拉取镜像
docker pull iname
3. 推送镜像
docker push iname
4.查看镜像
docker images
docker image list
docker image ls
5.查看所有镜像ID
docker images -q
6.修改名称
docker tag oldname newname
7.查看镜像的详细信息
docker images inspect iname
8.删除镜像
docker rmi iname
B、容器的操作
1.运行容器
docker run
-i 捕获标准输入输出
-t 分配一个虚拟终端
-d 后台运行
--name 自定义容器名字
-e 环境变量
-p 映射端口 指定端口
-P 映射端口 随机映射
-v 数据持久化
2. 查看容器
docker ps
-a 查看所有容器
-q 查看容器ID
3.查看容器详细信息
docker inspect 【iname|cid】
4. 删除容器
docker rm【iname|cid】
-f 强制删除
5.容器的启动与停止
docker start
docker stop
docker restart
6. 暂停容器
docker pause
7.激活容器
docker unpause
8.杀死容器
docker kill
9 .进入容器
docker exec -it [cname|cid] /bin/bash
docker attach 如果想要进入容器有命令行,要在run的时候加一个/bin/bash 退出不停止 ctrl p q
10. 查看容器的日志
docker logs [cname|cid]
11.复制文件
docker cp cname:/path hostpath 容器到主机
docker cp hostpath cname:/path 主机到容器
12.重命名
docker rename oldname newname
13.查看容器 资源占用情况
docker stats
14.查看容器中的进程
docker top 【cname|cid】
15.检测容器发生了什么
docker events
16.检测容器停止后的返回值
docker wait
17.检测主机被映射的端口
docker port