Docker相关笔记

文章详细介绍了Docker的安装方法,包括脚本安装和YUM安装,并列出了常用及特殊命令,如启动、停止、删除容器和镜像,以及镜像的保存和导入。此外,还提到了Dockerfile的使用和内存限额的设置,以及如何在容器中访问宿主机端口和配置远程访问。
摘要由CSDN通过智能技术生成

安装启动

脚本安装

curl -sSL https://get.daocloud.io/docker | sh

yam安装

yum install -y docker

启动守护进程服务

service docker start

Docker命令(基础常用命令)

-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

查看镜像 (命令 image)

docker images
或者
docker image ls

查看容器

docker ps
查看全部容器(包括已停止的)使用 -a
docker ps -a
可以配合grep筛选显示
例:docker ps -a | grep nginx
images同理

运行容器
run
启动容器
start
停止容器
stop
删除容器
rm
删除镜像
rmi
杀死容器
kill
重启容器
restart
获取容器日志
logs
获取镜像
pull
推送镜像
push
镜像打标记(相当于重命名)
tag

docker run -d --name 自定义容器名 镜像名
docker start 容器名或容器id
docker stop 容器名或容器id
docker rm 容器名或容器id
docker kill 容器名或容器id

ps:删除需要配合 -f (通过SIGKILL信号强制删除一个运行中的容器)使用

进入运行中的容器

docker exec -it 容器名或id /bin/sh (ps:/bin/sh为使用sh方式。也可使用bash方式)

退出 直接输入exit即可

Docker命令(比较特殊的命令)

镜像导出

save
命令
docker save [options] images [images…]
示例
docker save -o nginx.tar nginx:latest

docker save > nginx.tar nginx:latest
其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

镜像导入

load
命令
docker load [options]

示例
docker load -i nginx.tar

docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

容器导入导出

export
命令
docker export [options] container

示例
docker export -o nginx-test.tar nginx-test
其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)

import
命令
docker import [options] file|URL|- [REPOSITORY[:TAG]]

示例
docker import nginx-test.tar nginx:imp

cat nginx-test.tar | docker import - nginx:imp

save / load 与 export / import 的区别

export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
基于第二点,export导出的文件再import回去时,无法保留镜像所有历史,不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。

建议
可以依据具体使用场景来选择命令

若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import

镜像打包

build
需要写好Dockerfile文件
docker build -t 自定义镜像名 .
pssss:最后的点( . )不能少
指定Dockerfile文件路径的打包方式
docker build -t 自定义镜像名 -f Dockerfile文件路径 .
psssssss:最后的点( . )不能少

Dockerfile文件
#制定node镜像的版本
FROM node:8.9-alpine
#声明作者
MAINTAINER robin
#移动当前目录下面的文件到app目录下
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖
RUN npm install
#对外暴露的端口
EXPOSE 3000
#程序启动脚本,只有最后一个会生效,可被替代
CMD ["npm", "start"]
#指定这个容器启动的时候要运行的命令,可以**追加**命令
ENTRYPOINT  	 
#挂载的目录
VOLUME   			
#当构建一个被继承  DockerFile这个时候就会运行OBUILD的指令。
ONBUILD 
#类似ADD,将我们的文件拷贝到镜像中 		 
COPY . /app/
#构建的时候设置环境变量  				
ENV JAVA_HOME /usr/local/jdk1.8  #配置jdk环境变量

CMD和ENTRYPOINT的区别
CMD只有最后一个命令会生效,会替换之前的命令
ENTRYPOINT命令会追加

特殊环境

在docker容器中访问宿主机端口

http://host.docker.internal
使用host网络-共用宿主机网络端口(不需要端口映射)
docker run -d --name nginx --network host nginx
或者
docker run -d --name nginx --net=host nginx

docker开启远程配置

1.修改doker服务文件
vi /lib/systemd/system/docker.service
2.注释掉原来的ExecStart开头的那一行
3.修改ExecStart那一行为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
4.重启
systemctl daemon-reload
systemctl restart docker.service

部分远程操作-参考:
docker -H tcp://xxx.xxx.xxx.xxx:2375 rm -f webhis-dev
docker -H tcp://xxx.xxx.xxx.xxx:2375 rmi webhis-dev
docker -H tcp://xxx.xxx.xxx.xxx:2375 build -t webhis-dev . && docker -H tcp://xxx.xxx.xxx.xxx:2375 run -d -p 8090:80 --name webhis-dev -v /u01/webhis-dev/config.js:/usr/share/nginx/html/config.js

查看私有仓库执行此命令:

curl -XGET http://ip:端口/v2/_catalog

获取某个镜像的标签列表:

curl -XGEThttp://192.168.1.8:5000/v2/私有仓库镜像名称/tags/list

内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。 Docker 通过下面两组参数来控制容器内存的使用量。
-m 或 --memory:设置内存的使用限额,例如 100M, 2G。
–memory-swap:设置 内存+swap 的使用限额。
当我们执行如下命令:
docker run -m 200M --memory-swap=300M ubuntu
其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。
下面我们将使用 progrium/stress 镜像来学习如何为容器分配内存。该镜像可用于对容器执行压力测试。执行如下命令:
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M
–vm 1:启动 1 个内存工作线程。
–vm-bytes 280M:每个线程分配 280M 内存。
因为 280M 在可分配的范围(300M)内,所以工作线程能够正常工作,其过程是
分配 280M 内存。
释放 280M 内存。
再分配 280M 内存。
再释放 280M 内存。
一直循环…
如果让工作线程分配的内存超过 300M。
分配的内存超过限额,stress 线程报错,容器退出。
如果在启动容器时只指定 -m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m 的两倍,比如:
docker run -it -m 200M ubuntu
容器最多使用 200M 物理内存和 200M swap。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inspirely

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值