跳转至

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