docker容器化基础

一、docker容器化技术

1、docker容器安装部署

1.1、Docker安装

[root@root ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@root ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@root ~]# yum install docker-ce -y
以上是安装最新版本,如果需要指定版本安装,见下面命令:

查看docker版本:
[root@root ~]# yum list docker-ce --showduplicates
指定版本安装:
[root@root ~]# yum install docker-ce-20.10.2.ce  -y

启动服务并做开机启动:
[root@root ~]# systemctl enable docker
[root@root ~]# systemctl start docker

上面为自己docker.hub正常访问状态,如果上面安装不上,用一下步骤

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

1.2、Docker查看

​ [root@test-cloud-clone ~]# docker -v
​ Docker version 26.1.4, build 5650f9b

1.3、Docker状态

[root@c7 tmp]# docker info
Client: Docker Engine - Community
 Version:    26.1.4   ## 容器的版本号
 Context:    default  ## 使用的默认上下文为default
 Debug Mode: false    ## 关闭调试模式
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.1  ## Docker Buildx插件的版本v0.14.1 路径是 /usr/libexec/docker/cli-plugins/docker-buildx
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.1 ## compose: Docker Compose 插件版本 v2.27.1,路径 /usr/libexec/docker/cli-plugins/docker-compose。
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 10 ## 总数: 10
  Running: 4    ## 运行中: 4 
  Paused: 0    ## 暂停: 0 
  Stopped: 6   ## 已停止: 6
 Images: 9    ## 本地存储的镜像总数为 9。 
 Server Version: 26.1.4   ##  Docker 服务器版本 26.1.4。 
 Storage Driver: overlay2  ## 使用的存储驱动为 overlay2 
  Backing Filesystem: xfs  ## 文件系统为 xfs。 
  Supports d_type: true   ## 支持 d_type。 
  Using metacopy: false   ## 未使用 metacopy。 
  Native Overlay Diff: true ## 启用原生 overlay 差分。
  userxattr: false     ## 不支持 userxattr。 
 Logging Driver: json-file ## 日志记录驱动为 json-file。
 Cgroup Driver: cgroupfs  ## 控制组驱动为 cgroupfs。
 Cgroup Version: 1      ## 控制组版本为 1。
 Plugins:
  Volume: local    ## 支持 local 类型的卷
  Network: bridge host ipvlan macvlan null overlay  ## 支持多种网络驱动,包括 bridge, host, ipvlan, macvlan, null, overlay。
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog ## 支持多种日志驱动,包括 awslogs, fluentd, gcplogs, gelf, journald, json-file, local, splunk, syslog。
 Swarm: inactive  ## 当前未激活 Swarm 模式。
 Runtimes: io.containerd.runc.v2 runc ## 支持的运行时有 io.containerd.runc.v2 和 runc。
 Default Runtime: runc  ## 默认运行时为 runc。
 Init Binary: docker-init ## 初始化二进制程序为 docker-init。
 containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957 ## containerd 版本 d2d58213f83a351ca8f528a95fbd145f5654e957。
 runc version: v1.1.12-0-g51d5e94  ## runc 版本 v1.1.12-0-g51d5e94。
 init version: de40ad0  ## init 版本 de40ad0。
 Security Options:  
  seccomp   ## 使用内置的 seccomp 配置文件 
   Profile: builtin 
 Kernel Version: 3.10.0-1160.el7.x86_64  ## 内核版本 3.10.0-1160.el7.x86_64。
 Operating System: CentOS Linux 7 (Core)  ## 操作系统为 CentOS Linux 7 (Core)。 
 OSType: linux  ## 操作系统类型为 linux。
 Architecture: x86_64  ## 架构为 x86_64。 
 CPUs: 2  ## 可用 CPU 数量为 2。
 Total Memory: 1.777GiB  ## 总内存为 1.777GiB。
 Name: c7  ## 主机名 c7。 
 ID: 0dc590ca-ae8c-43f3-8968-633f73925e10 ## 主机唯一标识符 0dc590ca-ae8c-43f3-8968-633f73925e10。
 Docker Root Dir: /var/lib/docker ## Docker 根目录为 /var/lib/docker。
 Debug Mode: false ## 关闭调试模式。 
 Experimental: false ## 未启用实验性功能。
 Insecure Registries: ## 不安全的仓库列表包含 127.0.0.0/8。
  127.0.0.0/8     
 Live Restore Enabled: false ## 实时恢复功能未启用。

2.docker三大组件

2.1、Docker images 镜像

​ docker pull 拉取镜像

​ docker images 查看镜像

​ docker rmi 删除镜像

​ docker inspect 镜像详情信息

2.2、Docker registeries 仓库

​ docker pull 镜像名字 拉取镜像

​ docker push 镜像名字 上传镜像

​ 例:

​ docker push 192.168.17.151:5000/centos:7 注:5000是容器端口(映射到容器宿主机是5000)

​ 报错 The push refers to repository [ 192.168.17.151:5000/centos]

​ Get “https://192.168.17.151:5000/v2” : http : server gave HTTP response to HTTPS client

​ 报错原因

​ 192.168.17.151是http协议,只有https才可以上传镜像

​ 解决办法 vim /etc/docker/daemon.json在这里插入图片描述

2.3、Docker containers 容器

​ docker run -v 文件映射,格式为:主机目录:容器目录

​ -d 后台运行容器,并返回容器id

​ -i 以交互的方式运行容器,通常和-t同时使用;

​ -t 为容器重新分配一个伪输入终端,通常与-i同时使用;

​ -p 端口映射,格式为:主机(宿主)端口:容器端口

​ --name=“nignx-1”:为容器指定一个名称;

​ -h “mars”: 指定容器的hostname;

​ -e username=“ritchie” : 设置环境变量

​ --restart=always 重新启动docker时候,容器自动启动

​ docker ps 仅列出正在运行的容器

​ -a 列出所有容器,包括正在运行的和已停止的容器

​ docker rm 删除容器(只能是停止的)

​ --force 强制删除容器

​ docker stop 停止

​ docker start 启动

​ docker restart 重启

​ docker exec 进入容器

​ 例:数据库

​ docker run -itd --name mysql -p 8082:3306 -v /mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=‘123456’ daocloud.io/library/mysq:5.7

​ 下载mariadb,yum -y install mariadb

在这里插入图片描述

web服务nginx

​ docker run -itd --name nginx -p 8888:80 -v /web/:/usr/share/nginx/html daocloud.io/library/nginx

​ 两种上线方式

​ cp -r /目录/* /web/ 文件映射方法

​ docker cp 文件名/目录名 容器名:路径 直接拷贝到容器里

2.4、docker网络

docker安装后,默认会创建三种网络类型,bridge、host和none

[root@test ~]# docker network list
NETWORK ID     NAME      DRIVER    SCOPE
d52ed56d400a   bridge    bridge    local
1679de3abbb3   host      host      local
fddf8fdf0ef9   none      null      local

bridge:网络桥接

默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化

none:无指定网络

启动容器时,可以通过network=none,docker容器不会分配局域网ip 指定ip --network

host:主机网络

docker容器的网络会附属在主机上,两者是互通的

创建ip固定容器

创建自定义网络类型,并且指定网段:

[root@xingdian ~]# docker network create --subnet 192.168.0.0/16 test

通过docker network ls可以查看到网络类型中多了一个test

使用新的网络类型创建并启动容器:

[root@xingdian ~]# docker run -it --name userserver --net test --ip 192.168.0.2 nginx

通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变

删除网络类型

通过docker network ls可以查看到网络类型中多了一个test
在这里插入图片描述

使用新的网络类型创建并启动容器:

[root@test ~]# docker run -it --name userserver --net test --ip 192.168.0.2 nginx

通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变

删除网络类型

docker network rm cb12eba0d683

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值