3. docker使用
0. 启动docker及开机自启¶
systemctl enable --now docker
0.1 查看docker信息¶
docker info
[root@docker01 yum.repos.d]# 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.5.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.7
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.runtime.v1.linux runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.777GiB
Name: docker01
ID: TUSZ:FU7Z:EFEJ:QFJZ:I3T6:YUT6:6W7V:I575:RGV3:CQTI:3HYI:YSNG
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
Registry Mirrors:
https://q9uerbko.mirror.aliyuncs.com/
Live Restore Enabled: false
[root@docker01 yum.repos.d]#
1. 镜像基本操作¶
1.1 查看镜像列表¶
docker images
1.2 获取镜像¶
从远程仓库拉取
docker pull nginx:alpine
本地构建
docker build . -t my-nginx:ubuntu -f Dockerfile
1.3 通过镜像启动容器¶
docker run --name my-nginx-alpine -d nginx:alpine
1.4 如何知道容器内部运行了什么程序?¶
docker exec -ti my-nginx-alpine /bin/sh
ps -aux
1.5 如何知道容器启动后执行了什么命令?¶
创建Dockerfile
vim /opt/ubuntu/Dockerfile
FROM ubuntu
RUN apt-get update && apt install -y nginx
CMD ["/usr/sbin/nginx","-g","daemon off;"]
构建本地镜像
docker build ./ -t my-nginx:ubuntu -f Dockerfile
使用新镜像启动容器
docker run --name my-nginx-ubuntu -d my-nginx:ubuntu
进入容器查看进程
docker exec -ti my-nginx-ubuntu /bin/sh
ps aux
1.6 如何访问容器内服务?¶
docker exec -ti my-nginx-alpine /bin/sh
curl localhost:80
1.7 宿主机中如何访问容器服务?¶
docker rm -f my-nginx-alpine
docker run --name my-nginx-alpine -d -p 8080:80 nginx:alpine
curl localhost:8080
1.8 导出镜像到文件中¶
docker save -o nginx-alpine.tar nginx:alpine
1.9 从文件中加载镜像¶
docker load -i nginx-alpine.tar
2.0 部署镜像仓库¶
docker run -d -p 5000:5000 --restart always --name registry registry:2
2.1 推送本地镜像到镜像仓库中¶
docker tag nginx:alpine localhost:5000/nginx:alpine
docker push localhost:5000/nginx:alpine
查看仓库内镜像元数据
curl -X GET http://192.168.178.151:5000/v2/_catalog
配置daemon的方式跳过证书验证
cat /etc/docker/daemon.json
{
"insecure-registries":[
"192.168.178.151:5000"
]
}
2.2 删除镜像¶
docker rmi nginx:alpine
2.3 查看容器列表¶
docker ps -a
2.4 启动容器¶
后台启动
docker run --name nginx -d nginx:alpine
映射端口
docker run --name nginx -d -p 8080:80 nginx:alpine
资源限制,可用内存500M
docker run --memory=500m nginx:alpine
2.5 容器数据持久化¶
docker run --name nginx -d -v /opt:/opt -v/var/log:/var/log nginx:alpine
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -v /opt/mysql/:/var/lib/mysql mysql:5.7
2.6 执行容器内的命令¶
docker exec <container_id or _name> hostname
2.7 主机与容器之间拷贝数据¶
主机拷贝到容器
docker cp /tmp/test.txt nginx:/tmp
docker exec -ti nginx cat /tmp/test.txt
容器拷贝到主机
docker cp nginx:/tmp/test.txt ./
2.8 挂载已有的数据,重新创建镜像仓库容器¶
解压离线镜像文件
tar -zxvf registry.tar.gz -c /opt
删除当前镜像仓库
docker rm -f registry
使用docker镜像启动镜像仓库服务
docker run -d -p 5000:5000 --restart always -v /opt/registry:/var/lib/registry --name registry registry:2
最后更新:
2022-02-20 04:00:12