docker基本使用总结

Posted 不爱说话的小张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker基本使用总结相关的知识,希望对你有一定的参考价值。

1.安装docker

docker 官网地址 Docker run reference | Docker Documentation

1.1离线安装

下载离线包,网址:Index of linux/centos/8/x86_64/stable/Packages/

离线安装docker需要下载3个包,containerd.io ,docker-ce-cli,docker-ce 和libcgroup-0.41-19.el8.x86_64.rpm

1.1.1首先安装containerd.io,由于container-io需要秘钥,所以需要使用yum安装方式

注:所有的安装都是有顺序的,顺序乱了,无法安装注意是centos的还是ubuntu,ubuntu的deb请使用 sudu dpkg -i  安装包的方式安装

# yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm

1.1.2安装Docker-Ce的依赖

# rpm -ivh libcgroup-0.41-19.el8.x86_64.rpm

1.1.3安装Docker客户端

# rpm -ivh docker-ce-cli-19.03.13-3.el8.x86_64.rpm

1.1.4安装Docker ce

# rpm -ivh docker-ce-19.03.13-3.el8.x86_64.rpm

1.2线上安装

1.2.1为本地yum提供远程repo信息

# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

1.2.2安装依赖

# yum install -y  https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

1.2.3安装docker-ce

#  yum install -y docker-ce

1.2.4启动命令

# systemctl start docker

1.2.5查看状态

# docker info 

2.docker 基本命令

使用docker的命令很多,这里就梳理几个常用的命令,用的时候可是使用   --help 查看可以携带的参数

1 启动docker

# systemctl start docker | service start docker

2 查看docker状态

# systemctl status docker | service status docker

3 查看docker服务状态

# docker info

4 停止

# docker systemctl stop docker | service stop docker

5 搜索服务

# docker search 镜像名

6 下载镜像

# docker pull 镜像名:版本 //可以去docker hup 中查看版本 latest 表示最新版

7 查看本地镜像

# docker images //列出本地有的镜像

8 删除镜像

# docker rmi 镜像名:版本号 | IMAGE_ID

9 根据镜像创建容器(不推荐使用)

#  docker create --name nginx -p 80:80 nginx

    docker create --name 自定义容器名 -p 映射到宿主机的端口:容器内端口  镜像名

     具体细节,请参考官网文档

10 查看正在运行的容器

# docker container ls

# docker ps    // docker ps -a 查看所有容器

11 启动 容器

# docker start 容器名

12 停止容器

# docekr stop 容器名

13 强杀容器

# docker kill 容器名

14 创建并运行容器(推荐使用)

# docker run -d --name nginx -p 80:80 nginx

// docker run -d --name 自定义容器名 -p 映射到宿主机的端口:容器内端口  镜像名

   携带参数较多,具体细节,请参考官网文档

15 进入容器内部

# docker exec -it 容器名 /bin/bash

16 查找容器

# whereis mysql

17 退出容器

# exit

18 查看日志

# docker logs -f 容器名

19 查看容器中的进程

# docker top 容器名

20 查看容器内部信息

# docker inspect 容器名

21 把容器内部信息复制到本地

#  docker cp nginx:/etc/nginx /data/

// docker cp 容器名:复制的文件 复制到本地的路径

22 暂停容器

# docker pause 容器名

23 暂停后恢复容器

# docker unpause 容器名

24 删除容器

# docker rm 容器名

25 查看docker占用的磁盘情况

# docker system df

26 删除未使用的镜像和容器释放磁盘空间

# docker system prune -a

27 删除数据卷文件并释放磁盘空间

# docker volume rm $(docker volume ls -qf dangling=true)

28 保存镜像到本地

# docker save -o nginx.war nginx

29 将文件导入到docker

# docker load -i nginx.war

30 标记本地镜像

# docker tag nginx test/nginx9

31 清理镜像

# docker image prune

32 将日志文件清空

#  truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

3.docker数据卷

   数据卷 (Data Volumes) 是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器。
注意事项:
   挂载数据卷,最好是通过 run 而非 create/start 创建启动容器, create/start 命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以。
docker 官网推荐尽量进行目录挂载,不要进行文件挂载
有三种数据卷类型:
1. 宿主机数据卷:直接在宿主机的文件系统中但是容器可以访问( bind mount
2. 命名的数据卷:磁盘上 Docker 管理的数据卷,但是这个卷有个名字。
3. 匿名数据卷:磁盘上 Docker 管理的数据卷,因为没有名字想要找到不容易, Docker 来管理这些文件。
数据卷其实都在(如果没有网络文件系统等情况下)宿主机文件系统里面的,只是第一种是在宿主机内的特定目录下,而后两种则在docker 管理的目录下,这个目录一般是 /var/lib/docker/volumes/
推荐大家使用 宿主机数据卷 方式持久化数据

3.1宿主机数据卷

        宿主机数据卷其实就是将宿主机中的目录和容器中的目录进行挂载。
例:docker run --name nginx -itd -p 80:80 -v /data/nginx/:/etc/nginx nginx

 其中/data/nginx 就是我们挂载的目录这样就可以保证容器内中/etc/nginx和宿主机中的目录文件保持一致,即使容器销毁,宿主机中的目录也是存在的。

3.2命名数据卷

例:docker run -itd --name nginx -p 80:80 -v nginx-volume:/etc/nginx nginx      //nginx-volume为自定义的数据卷名称 

查看数据卷

# docker volume ls 

查看数据卷在宿主机中的目录

# docker volume inspect nginx-volume

/var/lib/docker/volumes/nginx-volume/_data就是宿主机中挂载的目录了。

3.3匿名数据卷

创建容器并使用匿名数据卷挂载

# docker run --name nginx -itd -p 80:80 -v /etc/nginx nginx

 查看数据卷,发现数据卷中多了一个新的数据卷

# docker volume ls

 查看数据卷详细信息

#  docker volume inspect 0829c4a2b44d2d17c9e85e3a96213401cd9fa8fccfa98315ab6385cfe836ea69

4.docker网络

docker 安装后会自动创建三种网络,bridge ,host,none

查看网络

# docker network ls 

4.1bridge模式

       默认的网络模式。bridge 模式下容器没有一个公有 ip, 只有宿主机可以直接访问 , 外部主机是不可见的 , 但容器通过宿主机的NAT 规则后可以访问外网。
       bridge网络的表现形式是docker0这个网络接口,默认通过docker0这个接口进行通信。
可以使用命令 ip a查看多了一个docker0的网络接口

 查看bridge网络的详细信息

# docker network inspect bridge

新建bridge网络

# docker network create -d bridge test-bridge

可以在创建容器时指定使用的网络
例:  docker run --name nginx -itd --network test-bridge -p 80:80 nginx

4.2host模式

         相当于 Vmware 中的 NAT 模式,与宿主机在同一个网络中,但没有独立 IP 地址。

4.3none模式

        容器并不进行任何网络配置

5.docker-compose

安装docker-compose

官网地址Compose file | Docker Documentation

下载

https://github.com/docker/compose
下载最新版本: 1.27.4
mv /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
cp /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod + x /usr/local/bin/docker-compose
开发环境可以授予最高权限
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
docker-compose --version
docker-compose version
卸载只需要删除二进制文件就可以了
docker-compose 主要是编写yaml文件
yaml文件主要包含4个一级key:version、service 、network 、volumes
version 是必须文件的第一行,它定义了Compose文件合适(主要是版本)
service 用于定义不同的应用服务
network 用于指引Docker创建新的网络。默认情况下,会创建bridge网络
volumes用于指引Docker来创建新的卷
这里是一个nginx的测试用例可以用来参考,具体yaml的指令请到官网查阅
version: '3' 
services:
 test-nginx:
   restart: always
   container_name: test-nginx
   volumes:
     - /data/nginx:/etc/nginx/
   image: nginx:1.19.3-alpine
   ports:
     - 80:80

启动服务

docker-compose up -d
停止服务
docker-compose down
列出所有运行容器
docker-compose ps
查看服务日志
docker-compose logs
构建或者重新构建服务
docker-compose build
启动服务
docker-compose start
停止已运行的服务
docker-compose stop
重启服务
docker-compose restart

以上是关于docker基本使用总结的主要内容,如果未能解决你的问题,请参考以下文章

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

BootStrap有用代码片段(持续总结)

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

BootStrap实用代码片段(持续总结)

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。