docker

docker

C/S架构模式

Docker客户端:

用于和Docker守护进程 (Daemon)建立通信的客户端。Docker客户端只需要向docker服务器或者守护进程发出请求(构建、拉取、启动等指令),服务器或守护进程将完成所有工作,并返回结果

1.橙色流程:执行docker构建指今会根据docker文件构建一个镜像存放于本地主机

2.蓝色流程,执行docker拉取指今会从云端镜像仓库拉取镜像至本地主机,或将本地镜像推送至云端镜像仓库

3.黑色流程:执行docker启动命令会将镜像安装至容器并启动容器

配置本地yum源

进入到/etc/yum.repos.d/

2. 创建备份 mkdir back

3. 把Cent*弄到back里

4. 创建local.repo

``` JAVA

[local]

name=local

gpgcheck=0

enabled=1

baseurl=file:///media/cdrom

```

5. 挂载 mount /dev/sr0 /media/cdrom/

6. 下载yum库 yum makecache

7. 安装http协议 yum -y install httpd

配置阿里云yum仓库

wget -O /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2. 卸载(可选)

```

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine \

docker-ce

```

3. 安装yum工具

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2 --skip-broken

4. 更新本地镜像源:

设置docker镜像源

yum-config-manager \

--add-repo \

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

5. yum install -y docker-ce

6. docker -v 查看版本

docker的基本使用

镜像仓库

login 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub logout:登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub pull:从镜像仓库中拉取或者更新指定镜像(-a 拉取所有tagged镜像) push:将本地的镜像上川岛镜像仓库 要先登录到镜像仓库 search:从Docker Hyb查找镜像 (-f <过滤条件>:列出收藏数不小于指定值的镜像。)

拉取docker pull centos 最新的

docker pull centos -a所有的

查看所有镜像docker images

本地镜像管理

镜像管理命令说明

systemctl start docker启动

systemctl status docker查看docker状态

systemctl disable docker关闭

systemctl enable docker开机不自启

docker info查看docker系统信息

docker --help docker的帮助命令

docker images 查看本机镜像

repository 镜像仓库源tag镜像标签image id 镜像id

docker images -a列出本地所有镜像

docker images -q只列出ID

仓库名、标签都是<none>的镜像,俗称虚悬镜像dangling image

docker search --limit 5 redis从Docker Hyb查找镜像显示前五行

docker search mysql --filter=STARS=3000搜索官方仓库的点赞数大于3000

docker search 镜像名称 从官方仓库查找镜像

docker pull 镜像名称:标签 下载镜像

docker push 镜像名称:标签 上 传镜像

docker system df 查看容器镜像数据卷,所占空间

type类型 total 总共的镜像数active正在运行的镜像 size大小 reclaimable可回收

docker rmi:删除本地一个或多个镜像。 (-f:强制删除;)

docker rim -f $(docker images -aq)删除所有镜像

docker save 镜像名称:标签 -o 备份镜像名称.tar 备份镜像为tar包

docker load -i 备份镜像名称 导入备份的镜像文件

docker rmi 镜像名称:标签 删除镜像(必须先删除该镜像启动的所有容器)

docker history 镜像名称:标签 查看镜像的制作历史

docker inspect 镜像名称:标签 查看镜像的详细信息

docker tag 镜像名称:标签 新的镜像名称:新的标签 创建新的镜像名称和标签

build:用于使用 Dockerfile创建镜像。

images:列出本地镜像。 (-a :列出本地所有的镜像)

tag:标记本地镜像,将其归入某一仓库。

history:查看指定镜像的创建历史。

save:将指定镜像保存成 tar 归档文件。(-o:输出到的文件)

load:导入使用 docker save 命令导出的镜像。(-i:指定导入的文件,代替STDIN。)

import:从归档文件中创建镜像。(-c:应用docker 指令创建镜像:)

容器生命周期管理

run:创建一个新的容器并运行一个命令

start/stop/restart:启动一个或多个已经被停止的容器重启容器

stop:停止一个运行中的容器

kill: 杀掉一个运行中的容器。-s:向容器发送一个信号 (docker kill -s KILL mynginx)rm:删除一个或多个容器。-f:通过 SIGKILL 信号强制删除一个运行中的容器pause/unpause:暂停容器中所有的进程/恢复容器中所有的进程create:创建一个新的容器但不启动它

exec:在运行的容器中执行命令

docker run -it(在前台运行) - - name=yunting(把ubuntu命名成yunting) ubuntu /bin/bash (启动一个交互式的bash终端)

-it:选项用于启动一个交互式的容器。-i 选项表示保持标准输入流打开,-t 选项表示为容器分配一个伪终端。

-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

-P: 随机端口映射,大写P -p: 指定端口映射,小写p -p:端口映射(主机端口:容器端口)

退出容器

1.exit容器停止

2 .Ctrl+p+q容器不会停止

docker ps -a 列出所有的容器 不管是现在运行的还是之前运行的 docker ps 运行当前正在运行的容器 docker ps -q 运行容器id docker ps --latest 最近添加的容器信息 docker ps -n2 添加的最新的两天信息

docker restart b7b7f7b08740(容器名称)重新启动

docker rm 容器名称删除

docker ps -a | xargs docker rm -f删除所有容器(前面名输入到后面)

docker rm -f $(docker ps -a)删除所有容器(后面的结果输入到前面)

docker stop 容器ID :停止容器

docker pause 容器ID :暂停容器所有进程

docker unpause 容器ID : 恢复容器所有进程

docker logs 容器ID :查看容器日志

docker logs -f 容器ID :跟踪日志输出

docker logs --tail 10 容器ID : 显示日志的条数10条

docker top 容器ID :查看容器内运行的进程

docker inspect 容器ID 查看容器详细的基本信息

docker events 用于显示 docker守护进程生成的实时事件流

docker events --since=2h ago 可以过滤出在特定时间之后发生的事件

docker stats用来显示当前正在运行的所有容器的资源使用情况

docker events --filter event=container 过滤想要显示容器事件

进入容器方式 1.docker exec -it +容器id(3c8856e6ab7d) /bin/bash 在容器中打开新的终端 用exit退出 不会导致容器的停止 2.docker attach +容器id(3c8856e6ab7d)在容器中打开新的终端 用exit退出会导致容器的停止

docker export 容器ID >abc.tar.gz导出容器内容将作为一个tar归档文件

cat abc.tar.gz | docker import - yunting/ubuntu:3.7导入

docker镜像层都是只读的,容器层可写的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常称为容器层。容器层之下都叫镜像层,所有对容器的改动,都只会发生在容器层,容器层下面的所有镜像层都是只读的

docker commit(生成镜像) -m="add vim cmd" -a="yunting" (作者)+容器id(58238869fc4f )ate/myubuntu:1.1(提交的描述信息)

docker commit -m ="add vim cmd" -a="wang" 5a214d77f5d7 ate/myubuntu

apt-get -y install vim安装vim

apt-get update更新包

本地镜像发布到阿里云

登录阿里云,搜索容器镜像服务,点击个人实例

先创建命名空间

然后创建镜像仓库,仓库类型选择公开

点击创建好的仓库会显示代码

第一步. 登录阿里云Docker Registry

docker login --username=aliyun8849270071 registry.cn-hangzhou.aliyuncs.com

第二步将镜像推送到Registry

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lizhitao1/zy:[镜像版本号]$ docker push registry.cn-hangzhou.aliyuncs.com/lizhitao1/zy:[镜像版本号]

第三步从Registry拉取到本地

docker pull registry.cn-hangzhou.aliyuncs.com/lizhitao1/zy:[镜像版本号]

在docker创建一个mysql数据库

docker run -id -p 3307:3306 --name=mysql01 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。 -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。 -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。 -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。 -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

yum update -y 用于更新系统中的所有已安装的软件包到最新版本

yum install -y openssh-server安装ssh服务器

echo ‘root:password’ | chpasswd 指定一个root账户密码改为password

chpasswd是修改的指令

ssh-keygen -A 获取ssh密钥ssh-keygen: generating new host keys: RSA1 DSA vi /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes 这两个文件是yes /usr/sbin/sshd 当安装并启动了ssh服务器后,把这个文件将作为ssh守护进程的主要执行程序,负责监听ssh客户端的连接请求,并提供远程登录和安全文件传输功能,如果在终端运行这条命令,没有看到任何错误或提示信息,就意味着ssh服务已经在后台运行 ps aux | grep sshd 检查sshd是否启动 显示所有与ssh相关的进程

数据卷

就是目录和文件存在于一个或多个容器中,由docker挂载到容器中,数据卷的设计目的是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除挂载的数据卷

特点:1、数据卷可以在容器之间共享或重用数据,2、卷中的更改可以实时生效3、数据卷中的更改,不会包含在镜像的更新中,4、数据卷的生命周期一直持续到没有容器使用它为止。

1宿主(主机)和容器之间映射添加容器卷

公式:docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu

进入映射目录下面(容器)

cd /tmp/docker_data/

创建一个dockerin.txt的文件

touch dockerin.txt

打开另一个终端,进入到主机目录

cd /tmp/host_data/

ls一下可以显示容器创建的dockerin.txt文件,反之也可以在主机创建文件,也可以在容器中显示

2查看容器卷是否挂载成功

语法:docker inspect 容器id

# 查看容器id
docker ps -a
# 查看是否挂载成功
docker inspect 7c528181c837

如果挂载成功,则inspect命令下的mount字段会有如下显示:

img

3.卷的继承与共享

语法:docker run -it --privileged=true -volumes-from 父类 --name u2 镜像名

docker run -it --privileged=true --volumes-from u1 --name=u2 ubuntu

通过上述操作可以实现主机和两个容器之间的数据共享,比如在u2新建一个文件,主机和u1均会进行同步。如果我们停掉了u2的容器,然后再宿主机上新建一个文件,则u1会直接同步,那当u2重启之后进入也能查看到该文件。本质上宿主机和多个容器能够共享所有文件,尽管某一容器停止,当其他容器和宿主机进行文件操作时,该容器重启进入后文件还会进行同步和更新

容器和宿主机之间数据共享:

  1. docker修改主机同步获得

  2. 主机修改docker同步获得

  3. docker容器stop主机修改,docker容器重启后数据仍然同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值