<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: LittleSheep213</title>
    <description>The latest articles on DEV Community by LittleSheep213 (@littlesheep213).</description>
    <link>https://dev.to/littlesheep213</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1233348%2Fd1fda002-e768-42f7-b869-3a8addb5df64.jpeg</url>
      <title>DEV Community: LittleSheep213</title>
      <link>https://dev.to/littlesheep213</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/littlesheep213"/>
    <language>en</language>
    <item>
      <title>Docker学习笔记</title>
      <dc:creator>LittleSheep213</dc:creator>
      <pubDate>Thu, 14 Dec 2023 12:51:09 +0000</pubDate>
      <link>https://dev.to/littlesheep213/dockerxue-xi-bi-ji-1p83</link>
      <guid>https://dev.to/littlesheep213/dockerxue-xi-bi-ji-1p83</guid>
      <description>&lt;h1&gt;
  
  
  Docker学习笔记
&lt;/h1&gt;

&lt;h3&gt;
  
  
  一、docker安装、启动相关命令
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;设置开机启动
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl enable docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;启动docker
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl start docker
systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;停止docker
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl stop docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;其他
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## 查看docker信息
docker version
docker info

# 修改完daemon.json文件
systemctl daemon-reload
systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  二、实战篇：部署flask网站
&lt;/h3&gt;

&lt;p&gt;需求：基于docker创建在ubuntu18.04系统上运行自己开发的flask网站&lt;/p&gt;

&lt;p&gt;流程：&lt;/p&gt;

&lt;p&gt;​ —在centos7.9安装docker&lt;/p&gt;

&lt;p&gt;​ —基于docker&lt;/p&gt;

&lt;p&gt;​     —获取基础镜像ubuntu18.04&lt;/p&gt;

&lt;p&gt;​     —在基础镜像上构建自定义镜像（ubuntu18.04+python+代码）&lt;/p&gt;

&lt;p&gt;​     —基于镜像创建容器+运行&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;获取基础镜像ubuntu18.04
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   docker pull ubuntu:18.04
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;遇到错误&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Error response from daemon: Get "&lt;a href="https://registry-1.docker.io/xxx%22:"&gt;https://registry-1.docker.io/xxx":&lt;/a&gt; net/http: TLS handshake timeout&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;修改/etc/docker/daemon.json文件，换源？&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"registry-mirrors"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="s2"&gt;"https://docker.mirrors.ustc.edu.cn"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;在基础镜像上构建自定义镜像&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dockerfile+语法&lt;/p&gt;

&lt;p&gt;—在docker宿主机centos7.9创建两个文件：&lt;/p&gt;

&lt;p&gt;Dockerfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   # Base images 基础镜像
   FROM ubuntu:18.04

   # MAINTAINER 维护者信息
   maintainer ycy 1612868733@qq.com

   # RUN 执行以下命令
   RUN apt update
   RUN apt install python3 python3-pip -y
   RUN pip3 install flask
   RUN mkdir -p /data/www/

   # 拷贝文件至工作目录
   COPY app.py /data/www/app.py

   # 工作目录
   WORKDIR /data/www/


   # 容器启动执行命令
   CMD ["python3", "app.py"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;app.py&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;

   &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

   &lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/index&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;命令构建自定义的镜像&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   docker build -t ycyflask:1.0 . -f Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;基于镜像创建容器+运行
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   docker run -p 80:8000 ycyflask:1.0 
   docker run -d -p 80:8000 ycyflask:1.0 # 后台运行

   # 查看运行着的容器ID
   docker ps 
   docker ps -a

   # 停止容器
   docker stop #容器ID(可以只写前三位) 只用这个指令在ps -a的时候还是可以查到
   docker rm #容器ID ps -a 里面也没有了
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  三、docker命令大全（可跳过）
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker attach   #连接到正在运行中的容器
docker build    #使用 Dockerfile 创建镜像
docker builder  #管理builds
    docker builder prune    #清除build缓存
docker checkpoint   #管理checkpoints
    docker checkpoint create    #从正在运行的容器创建检查点
    docker checkpoint ls    #列出容器的检查点
    docker checkpoint rm    #删除指定的检查点
docker commit   #从容器创建一个新的镜像
docker config   #管理Docker配置
    docker config create    #创建配置文件
    docker config inspect   #查看配置文件信息
    docker config ls        #显示docker里已经保存得配置文件
    docker config rm        #删除配置文件
docker container    #管理容器
    docker container prune  #删除所有已停止的容器
docker context  #管理contexts
    docker context create   #创建一个上下文
    docker context export   #将上下文导出到tar或kubecconfig文件中
    docker context import   #从tar或zip文件导入上下文
    docker context inspect  #在一个或多个上下文上显示详细信息
    docker context ls       #列出上下文
    docker context rm       #删除一个或多个上下文
    docker context update   #更新
    docker context use      #设置当前docker的上下文
docker cp       #用于容器与主机之间的数据拷贝
docker create   #创建一个新的容器但不启动它
docker diff     #检查容器里文件结构的更改
docker events   #从服务器获取实时事件
docker exec     #在运行的容器中执行命令
docker export   #将文件系统作为一个tar归档文件导出到STDOUT
docker history  #查看指定镜像的创建历史
docker image    #管理镜像
    docker image inspect    #显示一个或多个镜像的元数据
    docker image ls         #列出本地镜像
    docker image prune      #删除没有使用的镜像
    docker image rm         #删除一个或多个镜像
docker images   #列出本地镜像
docker import   #从归档文件中创建镜像
docker info     #显示 Docker 系统信息，包括镜像和容器数
docker inspect  #获取容器/镜像的元数据
docker kill     #杀掉一个运行中的容器
docker load     #导入使用 docker save 命令导出的镜像
docker login    #登陆到一个Docker镜像仓库，如果未指定镜像仓库地址，默认为官方仓库 Docker Hub
docker logout   #登出一个Docker镜像仓库，如果未指定镜像仓库地址，默认为官方仓库 Docker Hub
docker logs     #获取容器的日志
docker manifest #管理manifest(实验，不应用于生产环境)
    docker manifest annotate    #向本地镜像清单添加附加信息
    docker manifest create      #创建用于注释和推入注册表的本地清单列表
    docker manifest inspect     #显示镜像清单或清单列表
    docker manifest push        #将清单列表推入仓库
    docker manifest rm          #从本地存储中删除一个或多个清单列表
docker network  #管理网络
    docker network connect      #将容器连接到网络
    docker network create       #创建一个网络
    docker network disconnect   #断开容器的网络
    docker network inspect      #显示一个或多个网络的元数据
    docker network ls           #列出网络
    docker network prune        #删除所有没有使用的网络
    docker network rm           #删除一个或多个网络
docker node     #管理集群(swarm)节点
    docker node demote          #从群集(swarm)管理器中降级一个或多个节点
    docker node inspect         #显示一个或多个节点的元数据
    docker node ls              #列出群集(swarm)中的节点
    docker node promote         #将一个或多个节点推入到群集管理器中
    docker node ps              #列出在一个或多个节点上运行的任务，默认为当前节点
    docker node rm              #从群集(swarm)删除一个或多个节点
    docker node update          #更新一个节点
docker pause    #暂停容器中所有的进程
docker plugin   #管理插件
    docker plugin create        #从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。
    docker plugin disable       #禁用插件
    docker plugin enable        #启用插件
    docker plugin inspect       #显示一个或多个插件的元数据
    docker plugin install       #安装一个插件
    docker plugin ls            #列出所有插件
    docker plugin push          #将插件推送到注册表
    docker plugin rm            #删除一个或多个插件
    docker plugin set           #更改插件的设置
    docker plugin upgrade       #升级现有插件
docker port     #列出指定的容器的端口映射，或者查找将PRIVATE_PORT NAT到面向公众的端口
docker ps       #列出容器
docker pull     #从镜像仓库中拉取或者更新指定镜像
docker push     #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker rename   #重命名容器
docker restart  #重启容器
docker rm       #删除一个或多个容器
docker rmi      #删除一个或多个镜像
docker run      #创建一个新的容器并运行一个命令
docker save     #将指定镜像保存成 tar 归档文件
docker search   #从Docker Hub查找镜像
docker secret   #管理Docker secrets
    docker secret create    #从文件或STDIN创建一个秘密作为内容
    docker secret inspect   #显示有关一个或多个秘密的详细信息
    docker secret ls        #列出秘密
    docker secret rm        #删除一个或多个秘密
docker service  #管理服务
    docker service create   #创建一个服务
    docker service inspect  #查看服务的元数据
    docker service logs     #获取服务的日志
    docker service ls       #列出服务
    docker service ps       #列出一个或多个服务的任务
    docker service rm       #删除一个或多个服务
    docker service rollback #将更改恢复到服务的配置
    docker service scale    #缩放一个或多个复制服务
    docker service update   #更新服务
docker stack    #管理堆栈
    docker stack deploy     #部署新的堆栈或更新现有堆栈
    docker stack ls         #列出现有堆栈
    docker stack ps         #列出堆栈中的任务
    docker stack rm         #删除堆栈   
    docker stack services   #列出堆栈中的服务
docker start    #启动一个或多个已经被停止的容器
docker stats    #显示容器的实时流资源使用统计信息
docker stop     #停止一个运行中的容器
docker swarm    #管理集群(Swarm)
    docker swarm ca         #查看或旋转当前群集CA证书。此命令必须针对管理器节点
    docker swarm init       #初始化一个群集(Swarm)
    docker swarm join       #加入群集作为节点和/或管理器
    docker swarm join-token #管理加入令牌
    docker swarm leave      #离开群集(Swarm)
    docker swarm unlock     #解锁群集(Swarm)
    docker swarm unlock-key #管理解锁钥匙
    docker swarm update     #更新群集(Swarm)
docker system   #管理Docker
    docker system df        #显示docker磁盘使用情况
    docker system events    #从服务器获取实时事件
    docker system info      #显示系统范围的信息
    docker system prune     #删除未使用的数据
docker tag      #标记本地镜像，将其归入某一仓库
docker top      #查看容器中运行的进程信息，支持 ps 命令参数
docker trust    #管理Docker镜像的信任
    docker trust inspect    #返回有关key和签名的低级信息
    docker trust key        #管理登入Docker镜像的keys
        docker trust key generate   #生成并加载签名密钥对
        docker trust key load       #加载私钥文件以进行签名
    docker trust revoke     #删除对镜像的认证
    docker trust sign       #镜像签名
    docker trust signer     #管理可以登录Docker镜像的实体
        docker trust signer add     #新增一个签名者
        docker trust signer remove  #删除一个签名者
docker unpause  #恢复容器中所有的进程
docker update   #更新一个或多个容器的配置
docker version  #显示 Docker 版本信息
docker volume   #管理volumes
    docker volume create    #创建一个卷
    docker volume inspect   #显示一个或多个卷的元数据
    docker volume ls        #列出卷
    docker volume prune     #删除所有未使用的卷
    docker volume rm        #删除一个或多个卷
docker wait     #阻塞运行直到容器停止，然后打印出它的退出代码
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






</description>
    </item>
  </channel>
</rss>
