Docker学习笔记

1.1虚拟化

虚拟化:是一种资源管理技术,是将计算机的各种实体资源如服务器,网络,内存及存储等予以抽象转换后呈现出来,打破实体结构间的不可分切割的障碍,使用户可以比原本的组态更好的方式来运用这些资源 。

虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用 ,从而最大化的利用物理硬件,物理资源的充分利用

虚拟化技术种类有很多 例如软件虚拟化、硬件虚拟化 、内存虚拟化、网络虚拟化、桌面虚拟化 、服务虚拟化 、虚拟机等等 。

hypervisor:是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件可以协调问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器,vmm是所有虚拟化技术的核心,当服务器启动并执行hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。常见的产品有VMware,KVM,Ken等等 。

1.2Docker


1.3虚拟机与容器(虚拟机已死,容器才是未来)

2.1docker

docker架构

查看docker状态

hadoop@ubuntu:~/桌面$ systemctl status docker

重启docker

hadoop@ubuntu:~/桌面$ systemctl restart docker

关闭docker

hadoop@ubuntu:~/桌面$ systemctl stop docker

查看docker版本

hadoop@ubuntu:~/桌面$ docker version

查看docker命令

hadoop@ubuntu:~/桌面$ docker --help

列出镜像

root@ubuntu:/home/hadoop/桌面# docker images

拉取镜像

root@ubuntu:/home/hadoop/桌面# docker pull ubuntu:20.04

删除镜像

root@ubuntu:/home/hadoop/桌面# docker rmi ubuntu:20.04

配置镜像加速器

镜像加速器

创建容器

root@ubuntu:/home/hadoop/桌面# docker run --help

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

选项 镜像 选项

创建交互式容器:

root@ubuntu:/home/hadoop/桌面# docker run -i -t --name=latest ubuntu /bin/bash

或者

root@ubuntu:/home/hadoop/桌面# docker run -it --name latest ubuntu /bin/bash

-i:交互式容器

-t:tty终端(分配一个终端,操作容器)

--name:指定容器名称

创建守护式容器:

root@ubuntu:/home/hadoop/桌面# docker run -itd --name l2 ubuntu /bin/bash

运行守护式容器

root@ubuntu:/home/hadoop/桌面# docker exec -it l2 /bin/bash

查看正在运行的容器:

root@ubuntu:/home/hadoop/桌面# docker ps

查看运行过的容器:

root@ubuntu:/home/hadoop/桌面# docker ps -a

查看最后一次运行的容器:

root@ubuntu:/home/hadoop/桌面# docker ps -l

停止正在运行的容器:

root@ubuntu:/home/hadoop/桌面# docker stop l2

启动容器:

root@ubuntu:/home/hadoop/桌面# docker start latest

查看容器详细信息:

root@ubuntu:/home/hadoop/桌面# docker inspect latest

查询容器具体id信息:

root@ubuntu:/home/hadoop/桌面# docker inspect -f='{{.NetworkSettings.IPAddress}}' latest

删除容器:

root@ubuntu:/home/hadoop/桌面# docker rm l1

删除全部容器:

root@ubuntu:/home/hadoop/桌面# docker rm `docker ps -a -q`

查看容器日志:

root@ubuntu:/home/hadoop/桌面# docker logs l2

文件拷贝:

将文件拷贝到容器内:

docker 需要拷贝的文件或目录 容器名称:容器目录

root@ubuntu:/home/hadoop/桌面# docker cp 1.txt c1:/root

将文件从容器中拷贝出来:

docker cp 容器名称:容器目录 需要拷贝的文件或目录

root@ubuntu:/home/hadoop/桌面# docker cp c1:/root/2.txt /home/hadoop/桌面

目录挂载:在创建容器时将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机里面的某个目录的文件而去影响容器。

创建容器 添加-v参数 宿主机目录:容器目录

root@ubuntu:/opt# docker run -it --name c2 -v /opt:/usr/local/myhtml ubuntu /bin/bash

docker镜像制作

①使用docker commit命令:提交一个正在进行的容器作为新镜像

端口映射:

②使用docker builder和dockerfile文件

dockerfile使用基本的基于DSL语法的指令来构建一个docker镜像,之后使用docker builder命令基于该dockerfile中的指令构建一个新的镜像

FROM ubuntu:20.04

MAINTAINER "hanmengyuan<my0214163@163.com>"

RUN echo 'rw_test' > /root/rw_test

ARG DEBIAN_FRONTEND=noninteractive

ENV TZ=Asia/Shanghai

LABEL Description="This image is used to start the foobar executable" Vendor="ACME Products" Version="1.0"

RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server

EXPOSE 80

CMD /usr/sbin/sshd -D

在rw_test目录下构建镜像

root@ubuntu:~/rw_test# docker build -t rw_nginx --rm=true .

测试

root@ubuntu:~/rw_test# docker run -itd --name test_nginx -p 8899:80 rw_nginx /bin/bash

docker hub

登录docker hub

root@ubuntu:~/rw_test# docker login

设置镜像标签

root@ubuntu:~/rw_test# docker tag hello-world:latest my0214163/test-hello-world:v1

推送镜像

root@ubuntu:~/rw_test# docker push my0214163/test-hello-world:v1

退出docker hub

root@ubuntu:~/rw_test# docker logout

docker网络管理

查看网络:

root@ubuntu:~/rw_test# docker network ls

查看信息

root@ubuntu:~/rw_test# docker inspect test_nginx

查看网络使用情况

root@ubuntu:~/rw_test# docker network inspect bridge

查看网络:

建立两个使用默认bridge网络的容器

root@ubuntu:~/rw_test# docker run -itd --name=a1 busybox

root@ubuntu:~/rw_test# docker run -itd --name=a2 busybox

建立一个使用自定义isolated_nw网络的容器

root@ubuntu:~/rw_test# docker network create --driver bridge isolated_nw

root@ubuntu:~/rw_test# docker run --network=isolated_nw -itd --name=a3 busybox

为a2添加一个自定义网络isolated_nw的容器

root@ubuntu:~/rw_test# docker network connect isolated_nw a2

查看各个容器的ip地址

root@ubuntu:~/rw_test# docker inspect a1

root@ubuntu:~/rw_test# docker inspect a2

root@ubuntu:~/rw_test# docker inspect a3

root@ubuntu:~/rw_test# docker network inspect bridge

root@ubuntu:~/rw_test# docker network inspect isolated_nw

查看是否可以链接

root@ubuntu:~/rw_test# docker attach a1

/ # ping -w 4 172.17.0.3

/ # ping -w 4 172.17.0.4

/ # ping -w 4 172.18.0.3

/ # ping -w 4 172.18.0.2

root@ubuntu:~/rw_test# docker attach a2(同上)

root@ubuntu:~/rw_test# docker attach a3(同上)

a1:172.17.0.3[bridge]

a2:172.17.0.4和172.18.0.3[bridge和isolated_nw]

a3:172.18.0.2[isolated_nw]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值