Docker基础

一:docker容器

1:Docker基础

Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象为用户提供创建和管理容器的便捷界面。

1.1:基础介绍

Docker基础

image-20210505214750649

 

1.1.1:不同应用在宿主机上隔离运行

Docker基础

image-20210505215740462

 

1.1.2:容器与虚拟机技术对比

Docker基础

image-20210505215955483

 

1.2安装docker

1.2.1:查看系统内核:uname -r

    1. 添加docker的yum源:
    2. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    3. 查看当前yum仓库docker
    4. yum list docker-ce --show-duplicates
    5. 安装docker引擎
    6. yum install -y docker-ce
    7. 配置docker
    8. vim /etc/docker/daemon.json
    9. {
    10. "graph":"/data/docker",
    11. "storage-driver":"overlay2",
    12. "insecure-registries":["registry.access.redhat.com","quay.io"],
    13. "registry-mirrors":["https://q2gr04ke.mirror.aliyuncs.com"],
    14. "bip":"172.16.248.1/24",
    15. "exec-opts":["native.cgoupdrive=systemd"],
    16. "live-restore":true
    17. }
    18. 启动容器:
    19. systemctl enable --now docker.service
    20. 查看docker信息:
    21. docker info
    22. 启动容器步骤:
    23. 1. Docker客户端与Docker守护进程联系。
    24. 2. Docker守护进程从Docker Hub中提取了“hello-world”映像
    25. 3.Docker守护进程从该映像创建了一个新的容器,该容器运行生成当前正在读取的输出的可执行文件。
    26. 4. Docker守护进程将输出流化为Docker客户端,由后者发送

1.3:docker镜像管理

1.3.1:镜像是容器的模板,以前是容器、仓库、镜像三者的关系:

Docker基础

image-20210505230556123

 

1.3.2:在docker主机登录hub.docker

  1. 注册docker账号:https://hub.docker.com/
  2. 在docker主机上:
  3. docker login docker.io
  4. 输入账号
  5. 输入密码

1.3.3:登录认证信息存放位置:cat /root/.docker/config.json,可以用echo “” | base64 -d 查看

1.4:docker常用命令

  1. 可加指定tag对版本进行操作
  2. 搜索镜像:docker search alpine
  3. 拉取镜像:docker pull alpine
  4. 查看本地镜像:docker images 或docker image ls
  5. 给镜像打标签:docker tag 6dbb9cc54074 docker.io/chenj52/alpine:v3.10.1
  6. 推送镜像:docker push docker.io/chenj52/alpine:v3.10.1
  7. 删除镜像:
  8. 先删除tag标签:docker rmi docker.io/chenj52/alpine:v3.10.1
  9. 直接删除镜像:docker rmi -f 6dbb9cc54074(IMAGE ID,镜像的id)

1.5:docker镜像的特性

Docker基础

image-20210506173554990

 

2:容器的基本操作

  1. 查看容器的进程:docker ps -a
  2. 启动容器(运行镜像)
  3. docker run
  4. 常用参数:
  5. -i:以交互的方式启动,并持续打开标准输入
  6. -t:使用终端关联到容器的标准输入输出
  7. -d:表示将容器放置到后台运行
  8. --rm:退出后及删除容器
  9. --name:表示容器唯一名称
  10. IMAGE:表示要运行的镜像
  11. COMMAND:表示启动容器时要运行的命令*
  12. 交互式启动一个容器:docker run -it alpine /bin/sh
  13. 启动一个后台进程:docker run -d alpine /bin/sleep 300
  14. 进如运行的容器:docker exec -it 298b03534f6a /bin/sh

容器常用命令:

  1. 容器停止:docker stop 298b03534f6a
  2. 容器启动:docker start 298b03534f6a
  3. 容器重启:docker restart 298b03534f6a
  4. 容器删除:docker rm 298b03534f6a
  5. 过滤宿主机上停止的容器并将其删除掉:
  6. for i in `docker ps -a|grep -i exit|awk '{print $1}'`;do docker rm -f $i;done

修改容器:docker run --name myalpine -it alpine /bin/sh
echo 111>txt
exit
提交容器:docker commit -p myalpine chenj52/alpine:laste_1.txt

Docker基础

image-20210506183642793

 

3:导入导出镜像

导出镜像:docker save 7b29c0c6ed5d>/root/alpine_1.txt.tar

导入镜像:导入的镜像无tag

  1. 命令:docker load </root/alpine_1.txt.tar
  2. 查看IMAGE ID:docker image ls
  3. 将导入的镜像添加tag标签:docker tag 8605d5023f69 chenj52/alpine:v-new

4:docker日志

docker logs myalpine

docker Logs -f myalpine

5:docker高级应用

5.1:映射端口

​ 命令格式:docker run -p 容器外端口:容器内端口

  1. 先拉取一个nginx镜像:docker pull nginx
  2. 查看本地镜像找到拉取下来的nginx:docker image ls
  3. 将nginx镜像打一下标签:ocker tag 62d49f9bab67 chenj52/nginx:latest
  4. 映射端口docker run --name mynginx -d --rm -p81:80 chenj52/nginx:latest
  5. 验证:
  6. docker ps -a
  7. ss -tuln | grep 81
  8. curl http://192.168.248.143:81/

 

     
上一篇:微服务-springcloud一次线上内存优化


下一篇:EF Core连接sql server报“Internal connection fatal error.”