跳至主要内容

Docker备忘录

一、Docker的命令

行为命令例子
查询镜像docker searh <image>docker searh ubuntu
拉取镜像docker pull <image>docker searh ubuntu
通过Dockerfile创建imagedocker build -t xxx .docker build -t bigdata-ubuntu .
查看有哪些镜像docker imagesdocker images
查看有哪些运行的容器docker ps (类似linux)docker ps
查看共有哪些容器docker ps -adocker ps -a
开启镜像(创建容器并运行)docker run xx(如果没有镜像,那么会自动下载) docker run -d的-d代表后台运行docker run -d -p 10022:22 –name salve1 bigdata-ubuntu
关闭容器docker stop <containerId>(docker ps查看容器id)docker stop 818ndyf
执行镜像的命令docker exec -it <containerId> <命令>docker exec -it 818ndyf /bin/bash
删除容器docker rm <containerId>docker rm 818ndyf
删除镜像docker rmi <imageId>docker rm tdyflzyr66
在host和docker之间拷贝文件docker cp <filename>docker cp 818ndyf:/opt/lampp/README-wsrep /opt/
登陆镜像仓库docker login -u <yourRepositor>docker login -u catofzpp,执行命令输入账密
上传镜像到私有仓库docker push <imageName>docker push catofzpp/jenkins
docker提交docker commit <containerId> <imageName>docker commit -a “作者:catofzpp” -m “文字说明” <容器id> <镜像名jenkins:latest>

二、Dockerfile的命令

行为命令
指定基础镜像FROM
执行命令(在容器里)RUN
添加文件(可以添加远程的文件)ADD
拷贝文件COPY
执行命令(容器入口)CMD
暴露端口(服务器监听的端口)EXPOSE
指定路径WORKDIR
维护者MAINTAINER
设定环境变量ENV
容器入口,容器启动时执行命令ENTRYPOINT
指定用户USER
指定挂在的卷VOLUME

三、Dockerfle使用

1. 添加本地文件到docker

ADD可以将文件<src>拷贝到container的文件系统对应的路径<dest>,所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0。如果文件是可识别的压缩格式,则docker会帮忙解压缩。

如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下。

如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下。比如:

docker build github.com/creack/docker-firefox   

docker-firefox目录下必须有Dockerfile和要ADD的文件。

ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。

2. 进入目标容器

docker exec -it <CONTAINER ID> /bin/bash

3. 设置container启动时执行的操作

(1)CMD:

设置指令,用于container启动时指定的操作。该操作可以是执行自定义脚本,也可以是执行系统命令。该指令只能在文件中存在一次,如果有多个,则只执行最后一条。

三种格式:

CMD ["executable","param1","param2"] (like an exec, this is the preferred form)  

CMD command param1 param2 (as a shell) 

当Dockerfile指定了ENTRYPOINT,可使用:CMD ["param1","param2"] (as default parameters to ENTRYPOINT) 

(2)ENTRYPOINT:

设置指令,指定容器启动时执行的命令,可以多次设置,但是只有最后一个有效。

ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)  

ENTRYPOINT command param1 param2 (as a shell) 

(3)区别

Container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD。CMD主要用于container时启动指定的服务,当Docker run command的命令匹配到CMD command时,会替换CMD执行的命令。如下Dockerfile:

CMD echo hello world

运行:

fy@fy-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd

hello world

一旦命令匹配:

fy@fy-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello fy

hello fy

4. 设置container容器的用户

USER:使用哪个用户跑container。

# 指定memcached的运行用户  

ENTRYPOINT ["memcached"]  

USER daemon  
或  
ENTRYPOINT ["memcached", "-u", "daemon"]  

5. 切换目录

WORKDIR:切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效

6. 目录挂载

VOLUME:可以将本地文件夹或者其他container的文件夹挂载到container中。

四、通过Dockerfile定义自己的docker文件

1. touch Dockerfile,名字就得是Dockerfile
2. vim Dockerfile 
输入内容:
FROM alpine:latest //alpine,相当于JAVAWEB里的BASE类
MAINTAINER fy //标识作者
CMD echo 'hello docker' //干啥
3. docker build -t xx .//-t是给他个标签, .代表实际给他的东西  
4. docker run -it -p 8989:8080 fy/jenkins

五、docker常见问题

  • docker的pull下来的容器或者镜像都是临时的,如果不提交,那么不能保存之前的修改。
  • 镜像相当于类,容器相当于类创建的对象。
  • docker –help可以在任何命令下执行,相当于docker exec –help查看exec的用法

此博客中的热门博文

常用一键脚本汇总

SSH连接工具Fianlshell【 点击进入 】 导出快捷命令,文件路径: \finalshell\config.json ,直接把config.json文件替换到新的客户端即可 1、Xray面板,项目地址:【 点击进入 】 bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) 2、Reality Xray面板,项目地址:【 点击进入 】 bash <(curl -Ls https://raw.githubusercontent.com/slobys/x-ui/main/install.sh) 3、伊朗版Xray面板,项目地址:【 点击进入 】 bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) 4、BBR加速,项目地址:【 点击进入 】 wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh 5、一键安装依赖包 Debian/Ubuntu系统:apt update -y&&apt install -y curl&&apt install -y socat  CentOS系统:yum update -y&&yum install -y curl&&yum install -y socat 6、证书相关 安装证书申请程序acme.sh curl https://get.acme.sh | sh -s email= [email protected] 申请证书 ~/.acme.sh/acme.sh --issue -d 你的域名 --standalone 安装证书 ~/.acme.sh/acme.sh --installcert -d 你的域名 --key-file /root/p...

Linux必备操作系统命令大全

  一、基础命令 1. pwd 命令 `pwd`命令用于显示当前所在的工作目录的全路径名称。该命令无需任何参数,只需在终端窗口中输入 `pwd` 命令即可使用。 2. cd 命令 `cd`命令用于更改当前工作目录。该命令需要一个参数:目标目录名称。例如,若要进入 `Documents` 目录,可以使用以下命令: cd Documents 3. ls 命令 `ls`命令用于列出指定目录中的文件和子目录名称。该命令需要一个参数:目标目录名称。例如,若要列出当前目录的所有文件和子目录名称,可以使用以下命令: ls 4. mkdir 命令 `mkdir`命令用于创建一个新目录。该命令需要一个参数:新目录的名称。例如,若要在当前目录中创建一个名为 `test` 的新目录,可以使用以下命令: mkdir test 5. rmdir 命令 `rmdir`命令用于删除一个空目录。该命令需要一个参数:要删除的目录的名称。例如,若要删除当前目录中的 `test` 目录,可以使用以下命令: rmdir test 6. rm 命令 `rm`命令用于删除指定文件或目录。该命令需要一个参数:要删除的文件或目录的名称。例如,若要删除当前目录中的 `test.txt` 文件,可以使用以下命令: rm test.txt 7. cp 命令 `cp`命令用于复制一个文件到指定位置。该命令需要两个参数:源文件的名称和目标文件的名称。例如,若要将当前目录中的 `test.txt` 文件复制到 `Documents` 目录中,可以使用以下命令: cp test.txt Documents 8. mv 命令 `mv`命令用于将一个文件从一个目录移动到另一个目录,也可以用于对文件进行重命名。该命令需要两个参数:源文件的名称和目标文件的名称。例如,若要将当前目录中的 `test.txt` 文件移动到 `Documents` 目录中,可以使用以下命令: mv test.txt Documents 9. touch 命令 `touch`命令用于在当前目录中创建一个新文件或更新一个已有的文件的时间戳。该命令需要一个参数:要创建或更新的文件的名称。例如,若要在当前目录中创建一个名为 `test.txt` 的新文件,可以使用以下命令: touch test.txt 二、系统信息命令 10. uname 命令 `una...

甲骨文闲置ARM实例防回收的方法

回收原则 2022年11月16日 Oracle添加声明: 从 2022 年 11 月 24 日开始,您闲置的 Always Free 计算实例可能会停止。巴拉巴拉,您还可以随时升级您的帐户以避免中断。 2023年1月末,甲骨文正式出台闲置定义和回收原则: 如果在 7 天内满足以下条件,则 Oracle 会将虚拟机和裸机计算实例视为空闲: 95%时间CPU利用率低于10% 网络利用率低于10% 内存利用率低于 10% (仅适用于A1 形状)(ARM实例) 实践证明 无论是arm还是amd,只要是闲置都可能被回收,回收之前会收到邮件,内容如下: 应对策略 绝大多数的网友,也包括R探长、github迅速反应,增加了占用内存、cpu和网络的脚本,意思就是你要回收,那么我就达到不闲置的假象。 这些脚本一搜索满地都是,我就不收集了。不过仍然有人用了脚本,也被回收了,群里就有。 我目前有6个用于录制教程的vps,2C8G配置,轮换使用,不过仍然有个别的机器目前处于闲置状态,有时候甚至把它忘掉了,那么如何不被回收呢? 我使用的方法非常简单,那就是“关闭监控”,至于道理么,我的理解就是甲骨文会通过对所有vps的统计数据来确定哪些机器处于闲置状态,根据就是甲骨文的:oracle-cloud-agent,这个程序在后台统计cpu、内存和网络使用情况,不达标就会发通知邮件,到期停止该实例。 以上是我自己的理解,因为除了oracle-cloud-agent,甲骨文就无法知道我是否闲置,我目前已有知识范围内是没有别的方法了,肯定不会连接到你的实例,看看资源情况对吧。如果我说的不正确,欢迎指正! 解决方案 一、在新建实例最后,点击显示高级选项,在oracle cloud agent选项卡中直接关闭所有监控组件; 二、已有实例,root模式下执行:snap remove oracle-cloud-agent 三、dd系统,一劳永逸。目前支持amd和arm的脚本: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 20.04 -v 64 -a -firmware -p 123456 以上原创作者是WENJIE。。我这边转载备用...