2024年最完整的Docker v19

本文详细介绍了Docker v19的相关操作,包括启动和停止容器、端口映射、镜像管理、Dockerfile指令等。通过实例演示了如何使用各种命令,如`docker run`、`docker attach`、`docker commit`等,并讨论了Docker守护进程的启动选项,如设置端口映射和容器间通信。此外,还涉及了数据卷的使用和管理,以及Docker网络配置,如网桥管理和容器间的通信。
摘要由CSDN通过智能技术生成

特点

  • 可以长期运行

  • 没有交互会话

  • 非常适合运行应用服务

命令

方法一

$ docker run -i -t <镜像> /bin/bash

ctrl+p ctrl+q 退出bash,但没关闭容器

$ docker attach <正在运行容器>

重新进入正在运行的容器

方法二

$ docker run -d <镜像> <命令>

-d 后台守护

查看容器日志

$ docker logs [-f][-t][–tail=n] 容器名

-f 持续输出日志

-t 日志加上时间戳

–tail 返回最后的多少行

查看运行中的容器的进程

$ docker top <容器>

在运行的容器中启动新的进程

$ docker exec [-d][-i][-t] <容器名> [命令]

-d 后台运行

-i 交会运行

-t 打开终端

停止容器

$ docker kill/stop <容器名>

kill 直接停止

stop 等待进程结束后停止

设置端口映射

$ docker run [-P][-p | :] …

-P 映射容器中所有的端口

-p 指定映射容器中某几个端口

eg:

$ docker run -P -i -t ubuntu /bin/bash # 映射所有的端口

$ docker run -p 80 -i -t ubuntu /bin/bash # 映射80端口

$ docker run -p 8080:80 -i -t ubuntu /bin/bash # 将内部的80映射为8080

$ docker run -p 127.0.0.1:8080:80 -i -t ubuntu /bin/bash # 将内部的80端口映射为127.0.0.1:8080

注意:如果使用5、6行的方法进行映射,外部端口是随机分配的

管理镜像


概念

  • TAG:标签

  • 默认:latest

  • 这里多少为版本

  • eg:docker pull node:12.1.1 下载nodejs12.1.1版本

基本操作

显示所有的镜像

$ docker images [-q][-a] [仓库]

-q 只看id

-a 查看所有

查看镜像的详细

$ docker inspace <镜像名>

删除镜像

$ docker rmi [-f] <镜像名>

-f 强制删除

查找镜像

方法1:镜像dockerhub上查找

方法2:

$ docker search [–automated][-no-trunc][-s ] <镜像名>

–automated 只显示自动化选项

–no-trunc 不分页显示

-s 显示的最低num的stat镜像

下载镜像

$ docker pull [-a] <镜像名>

-a 下载匹配的所有镜像

标记镜像到某个仓库

$ docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

上传镜像到DockerHub

$ docker images #查看本地镜像

$ docker tag <镜像名> <用户名/镜像名> #将镜像转让我的账号下

$ docker push <用户名/镜像名:Tag> #上传镜像

打包镜像


打包镜像有两种方法,推荐使用Dockerfie方法

使用commit打包

将部署好的容器进行打包。

$ docker commit [-a][-m][-p] <容器> <用户名/镜像名:版本>

-a “” 镜像作者

-m “” 打包备注

-p 不停止镜像打包

使用Dockerfile文件打包

第一步:创建Dockerfile文件

#Dockerfile

FORM <基础镜像:Tag>

MAINTAINER <用户名> “联系方式” #新版本推荐使用 LABEL maintainer=value

RUN <linux命令>

EXPOSE <端口号>

说明:

这个EXPOSE指令实际上并不发布端口。它作为构建映像的人和运行容器的人之间的一种文档类型,而这些港口将被发布。若要在运行容器时实际发布端口,请使用-p旗上docker run若要发布和映射一个或多个端口,或-P标志以发布所有公开的端口,并将它们映射到高阶端口。

第二步:执行docker build命令

$ docker build [-t <镜像名>][–no-cache] <上下文路径>

-t 镜像名称

–no-cache 不使用缓存构建

上下文路径:

docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,

引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了

注意不要将 / 作为<上下文路径>,因为他会把硬盘上所有的数据发给docker守护进程.

.dockerignore

创建.dockerignore文件,通过在该文件里添加匹配目录,可以在执行docker build -t xxx .命令时不上传匹配的目录。

#.dockerignore

/temp #匹配根目录下的子目录内所有的以temp开头的文件和文件夹

//temp* #匹配根目录下的子目录的子目录内所有的以temp开头的文件和文件夹

*/temp #匹配所有目录内的以temp开头的文件和文件夹

!my* #在排除文件及文件夹中允许上传my开头的文件及文件夹

Docker远程访问


Docker的配置文件在Centos7 /lib/systemd/system/docker.service

Docker守护进程Linux上配置文件的默认位置是/etc/docker/daemon.json或者通过--config-file参数可用于指定非默认位置。

Docker守护进程启动选项

配置开始

第一步:配置远程的Docker

vi /lib/systemd/system/docker.service

修改[Service]->ExecStart

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2375

重启Docker

systemctl daemon-reload && systemctl restart docker

第二步:配置本地的系统环境变量

windows

set DOCKER_HOST=tcp://远程ip

Centos7

export DOCKER_HOST=tcp://远程ip

注意:以上配置都是临时的

测试

docker info

是否有结果

如果想更准确的测试,可以先将远程的Docker守护进程配置一个labels,然后执行命令即可

提示:

其实配置远程还有一种方法就是配置docker守护进程的配置文件daemon.json通过配置该文件下的hosts内的值也可以实现,需要注意的是这两种方法只需要使用其中一种即可。

docker.service

[Service]->ExecStart

ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

daemon.json

{

“hosts”:[

"0.0.0.0:2375",
"unix:///var/run/docker.sock"

]

}

Dockerfile指令


关键知识点

  • 上下文路径:
上下文路径 是在使用`docker build`的时候最后一个参数锁指定的路径,通过该路径`docker客户端`会将该路径的下的所有文件都会发送给`docker守护进程`,然后在用户执行`COPY`和`ADD`的时候进行文件复制。如果有不想发送的文件可以向`.dockerignore`中写入匹配忽略路径。
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值