Docker

  • Docker
    • 介绍
    • 安装
      • 两种安装方法,这两种方法不兼容。
        • 第一种方法
        • 第二种方法
    • Docker基础使用
      • 对Docker操作
      • 对镜像的基础操作
        • 获取当时所有镜像(docker images)
        • 拉去镜像(docker pull)
        • 删除镜像
          • **Docker rm 命令**
          • **Docker rmi 命令**
          • **Docker prune 命令**
        • 加载镜像(docker run)
      • 使用交互式容器
        • 查看容器(docker ps)
        • 启动和关闭容器
        • 操作后台容器
        • 删除容器(docker rm)
        • 容器制作成镜像
    • Docker Dashboard(Docker 仪表板)
    • pycharm配置docker
      • 在docker desktop中打开tcp连接
      • 在pycharm配置
      • 连接docker
      • 环境搭建
        • 命令行安装工具包

“”"

Author:Natsu

CreatDate:2022.7.13 18:13

Version:0.0.2

“”"

Docker

参考文档:中文文档 、docker、菜鸟教程、中文社区

介绍

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

安装

两种安装方法,这两种方法不兼容。

  • 第一种:安装虚拟机vmware,在虚拟机中使用相关linux环境进行安装。
  • 第二种:针对windows环境下,可以下载docker-desktop。

第一种方法

1.安装方法1文件夹中的Vmware12安装包;

2.安装好之后在文件夹中找到ubuntu的镜像文件,在vmware中创建虚拟环境;

3.在命令行中输入curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun进行安装docker。

第二种方法

1.使用win+q键 搜索windows功能 看下里面有没有hyper-V,没有就进入步骤2,否则进行步骤3.

2.在方法2文件夹中找到hyper-V.cmd脚本文件,右键管理员运行。

3.重启进入bios界面,切到security页,进入Virtualization虚拟化界面,把第一个开启。

4.安装文件夹中的docker desktop。

5.重启之后,安装wsl_update_x64_2文件,然后进入https://hub.docker.com/signup,注册账号。

6.管理员运行命令行 输入docker run -d -p 80:80 docker/getting-starte

7.输入 docker run hello-world 创建hello-world镜像。


Docker基础使用

参考文档:从零开始

对Docker操作

安装完成Docker后,默认每次开机的时候都会自动启动,但我们也可以手动启动,关闭或者重启Docker

# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop

对镜像的基础操作

获取当时所有镜像(docker images)

docker image ls
# 或者
docker images
标签 含义
REPOSITORY 镜像所在的仓库名称
TAG 镜像标签
IMAGEID 镜像ID
CREATED 镜像的创建日期(不是获取该镜像的日期)
SIZE 镜像大小

拉去镜像(docker pull)

# 官方镜像
docker image pull 镜像名称
# 或简写为
docker pull 镜像名称
# 比如
docker pull ubuntu
docker pull ubuntu:16.04# 个人镜像
docker pull 仓库名称/镜像名称
docker pull xunmi/django# 第三方仓库拉去
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/library/mysql:latest
(默认仓库名为library,所有从官方获取镜像相当于`sudo docker image pull library/镜像名称`)

删除镜像

Docker rm 命令
docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -f : 通过SIGKILL信号强制删除一个运行中的容器
  • -l : 移除容器间的网络连接,而非容器本身
  • -v : 删除与容器关联的卷
Docker rmi 命令
docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f: 强制删除
  • –no-prune : 不移除该镜像的过程镜像,默认移除
Docker prune 命令

删除 所有未被 tag 标记和未被容器使用的镜像:

docker image prune

删除 所有未被容器使用的镜像:

docker image prune -a

删除 所有停止运行的容器:

docker container prune

删除 所有未被挂载的卷:

docker volume prune

删除 所有网络:

docker network prune

删除 docker 所有资源:

docker system prune

加载镜像(docker run)

上面我们说过,镜像只是一个只读类型的文件,而我们的环境不可能只是一个这样的文件,所以我们需要把这个镜像加载成我们的环境,也就是让他变成容器。

docker run [可选参数] 镜像名 [向启动容器中传入的命令]
常用可选参数 作用
-i 表示以《交互模式》运行容器。
-d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name 为创建的容器命名。(默认会随机给名字,不支持中文字符!!!)
-v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口
–network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。每个 Docker 容器都有自己的网络连接空间连接到虚拟 LAN。使用此命令则会让容器和主机共享一个网络空间。

可以启动一个系统 docker run -i -d -t --name=kali-test kalilinux/kali-rolling (这里我使用linux的一个发行版kali作为介绍)
或可以简写为 docker run -idt --name=kali-test kalilinux/kali-rolling
PS: 如果加载一个我们没有的镜像,docker会自动从官方仓库中进行拉去。

或者我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started

如果你没有下载docker/getting-started的进行,这里会自动帮你下载
成功启动后,可以在浏览器中输入http://localhost:8080/即可看到如下页面

使用交互式容器

上面我们成功将镜像变成了容器,但上述的命令中我们都加入了-d,让容器在后台运行了。下面我们就来讲如何和正在运行的容器进行交互。

查看容器(docker ps)

查看容器主要会用到ps命令

# 查看当前所有正在运行的容器
docker ps
# 查看当前所有的容器
docker ps -a
# 使用过滤器(除了name外,常用的还可以指定id:id= 、所有停止的容器:status=exited,正在运行的容器:status=running 等)
docker ps -f name=指定的名字
# 显示2个上次创建的容器(2可以改变)
docker ps -n 2
# 显示最新创建的容器(包括所有状态)
docker ps -l
# 仅显示ip
docker ps -q# 显示容器大小
docker ps -s
标签 含义
CONTAINER ID 镜像ID
IMAGE 创建容器的镜像名称
COMMAND 默认启动命令(启动时会自动执行)
CREATED 创建容器的日期
STATUS 当前的状态(启动了多久,多久之前退出等)
PORTS 映射的端口
NAMES 容器的名称
SIZE 容器大小(使用-s命令参数时才能看到)

启动和关闭容器

# 停止容器
docker container stop 容器名或容器id
# 或可简写为
docker stop 容器名或容器id# 强制关闭容器
docker container kill 容器名或容器id
# 或可简写为
docker kill 容器名或容器id# 启动容器
docker container start 容器名或容器id
# 或可简写为
docker start 容器名或容器id
  • 如果我们成功启动或者关闭一个容器的话,会返回容器名或者容器id
  • stop和kill的区别: stop是比较优雅的关掉一个容器,类似我们正常退出一个软件,而kill是当一个进程出现意外无法正常关闭的时候,我们强行进行关闭,有点像我们使用任务管理器进行结束进程操作

操作后台容器

之前我们下过一个kali并且放在了后台运行,如果没有下载可以执行下列命令

docker run -i -d -t --name=kali-test kalilinux/kali-rolling

下面我们就用下面的命令开启kali(如果你下的是其他系统,比如ubuntu也可以举一反三一下)
首先我们确保我们要进入的容器是开启状态的,使用docker ps -a查看其中的STATUS属性是否是Up开头,如果不是先照着上面启动容器的方法开启容器

# 如果我只需要执行简单的一两条命令可以使用docker exec
# 执行单条命令 (-i: 启动并且保留交互式命令行; -t:作用是分配一个虚拟的终端; docker run )
docker exec -it 容器名或容器id 执行的命令
# 比如
docker exec -it kali-test whoami
# 用这种方法,我们还可以启动命令行,根据Linux的特性,系统程序会在/bin中,linux中常用的Shell有多个,其中大部分用的Linux默认的为bash
# 所以我们启动命令可以自行如下命令(除了/bin/bash外,linux一般还会带/bin/sh、/bin/rbash、/bin/dash等,具体区别可以自行百度)
docker exec -it 容器名或容器id /bin/bash
# 比如
docker exec -it kali-test /bin/bash
# 除了exec外还有attach可以使用,但它有个弊端,多终端启动attach后,都会会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
docker attach 容器名或容器id
# 比如
docker attach kali-test
exec可选参数 作用
-d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
-e 设置环境变量
-i 表示以《交互模式》运行容器。
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-u 设置用户名和UID。
-w 设置容器内的工作目录。

删除容器(docker rm)

如我我们需要删除一个容器,首先需要确保这个容器已经停止了,因为正在运行的容器是无法直接删除。
我们可以运行一下docker ps -a,如果发现没有停止,可以使用docker stop停止(STATUS下已Exited开头则是停止的)

# 使用rm删除容器
docker rm 容器名或容器id
# 列如
docker rm docker-test

如果报错Error response from daemon: You cannot remove a running container 容器ID. Stop the container before attempting removal or force remove则代表这个容器已经启动,需要执行 docker stop 容器id,停止此容器

容器制作成镜像

我们为什么要把容器制作成镜像?

  • 镜像可以看作为是一种备份,如果我们后期环境出现了问题,可以还原到早期镜像。
  • 镜像便于传播,可以让自己的其他设备或他人的重复利用变得更加简单容易。
# 将容器制作成镜像
docker commit 容器名 镜像名
# 镜像打包备份(打包备份的文件会自动存放在当前命令行的路径下,如果想让保存的文件可以打开,可以加.tar后缀)
docker save -o 保存的文件名 镜像名
# 镜像解压
docker load -i 文件路径/备份文件

我们将打包备份的镜像可以通过网络发送到其他设备上,使用docker镜像解压即可直接使用你的环境。

Docker Dashboard(Docker 仪表板)

Docker 仪表板的主要作用为:快速访问容器日志,启动容器的 shell,并轻松管理容器生命周期(停止、删除等)。

pycharm配置docker

在docker desktop中打开tcp连接

在pycharm配置

路径:file->settings->build,execution,deployment->docker

选择TCP连接,并把第一步上面显示的地址填进去。

连接docker

连接后就可以对容器和镜像进行管理

环境搭建

1、需要在命令行中安装python,docker pull python:版本号

新创建项目时候 就使用docker环境,或者在项目完成后修改project interpreter.

  • Image name 填写 python,也可以去docker桌面版看下是什么名字,一般下载完名字都是python
  • Python interpreter path 不用改,先直接写python。

  • 通过TCP连接的话,是无法在pycharm中直接安装工具包的,需要在命令行中进行操作。

命令行安装工具包

  • 用创建好的python镜像,创建一个仓库docker run -it --name [要创建的仓库名字] [镜像NAME]

  • 创建完成后使用下面命令进行第三方工具包的安装

    docker exec -it <countainerName/countainerID> bash > pip install package> whitch python  #查看下Python路径
    # hit ctrl+D
    docker commit <countainerName/countainerID> <imageName:tag>
    docker-compose up
    

Docker和Pycharm相关推荐

  1. docker 服务器engin开放2376端口给pycharm连接

    2019独角兽企业重金招聘Python工程师标准>>> 编辑/etc/docker/daemon.json {"insecure-registries":[&qu ...

  2. 【PyCharm配置Docker】

    PyCharm配置Docker 在pycharm中直接:File–>settting,然后新建一个docker, 里面的 什么配置都不用变,它自动会找到你的所有容器 然后在左下角直接run起来 ...

  3. 简记docker用法

    <简记docker用法>   2019年,第一次使用 docker 做算法的服务端部署工作,整体感觉很流畅,很方便,可以很快的进行多节点部署,不用担心环境问题.时间真快,转眼2021年了. ...

  4. 基于Docker的Python开发

    作者|GUEST 编译|VK 来源|Analytics Vidhya 在PyCharm和Visual Studio代码上支持CUDA 介绍 如果你没有经验,建立一个开发环境是不容易的,特别是如果你想学 ...

  5. 黑苹果16g内存够用吗_现阶段最便宜的完美黑苹果配置是什么?

    我是黑苹果的忠实爱好者,目前我两台主力机都是安装的黑苹果,家里一台主力机(i7 8700k + 32G内存 + 512G SSD + RX580显卡),公司一台开发机(华擎DeskMini H310 ...

  6. 数据科学实践 -- 考研帮爬虫 京东爬虫 电影推荐系统 等

    资源下载 MovieRecommenderSystem.zip 京东爬虫 – docker mongodb redis scrapy 考研帮Python爬虫 – appium + mitmdump实现 ...

  7. pycharm配置远程调试docker

    20210923 pycharm 运行远程解释器 20210915 远程调试确认配置 第一步如果事先没有配置ssh,可以选下面新建ssh 还有另一种调试方法:使用pycharm-debug包调试 详情 ...

  8. TensorFlow + Docker + PyCharm

     我的深度学习开发环境详解:TensorFlow + Docker + PyCharm等,你的呢 By 机器之心2017年6月19日 14:09 在这篇文章中,研究员 Killian 介绍了自己的 ...

  9. ubuntu安装python3.5+pycharm+anaconda+opencv+docker+nvidia-docker+tensorflow+pytorch+Cmake3.8

    一,切换python版本为3.5 装好ubuntu,python版本是2.7的 我自己安装并更改打开为python3.5 sudo apt-get install python3.5 设置优先级和默认 ...

  10. pycharm远程连接服务器(docker)调试+ssh连接多次报错

    一,登入服务器建docker nvidia-docker run -it -v ~/workspace/:/workspace -w /workspace/  --name=fzh_tf  --shm ...

最新文章

  1. HDFS配置Kerberos认证
  2. java使用原始套接字技术进行数据包截获_Linux零拷贝技术,看完这篇文章就懂了...
  3. 中国高中生近视率高达81%,眼科专家:源头在小学阶段
  4. python列表常用方法_python之 列表常用方法
  5. 模板类的全特化、偏特化
  6. 支付宝支付-当面付之扫码支付「扫码支付」
  7. 给出一个数:(1)求解有几位数,(2)分别输出每一位数字(3)按逆序输出各位数字
  8. ubuntu16.04安装微信
  9. 如何用一段代码证明JVM加载类是懒加载模式?分享PDF高清版
  10. mysql插入记录到有约束的表_MySQL学习笔记-约束以及修改数据表
  11. 解决办法:java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J
  12. Linux服务简单优化
  13. Python查找中国城市、省份
  14. 开源人脸识别库,face_recognition
  15. 透析BAT人工智能生态图谱:AI大战一触即发
  16. python 爬取腾讯漫画
  17. aleo测试网部署教程
  18. java如何创建枚举类型_Java如何创建枚举类型?
  19. 解决SQL_Server2000“以前的某个程序安装已在安装计算机上创建挂起的文件操作。安装程序前必须重新启动计算机”
  20. project 2003

热门文章

  1. python lisp_随笔:code.org与python,FoxDot,Lisp
  2. 某宝双十一自动养猫,解放你的双手得喵币
  3. 计时器、倒计时、打点计时器
  4. NR小区搜索(一)SSB
  5. Google SketchUp Cookbook: (Chapter 5) Roofs: Constraints and Inferences
  6. 【合成图片】——Graphics2D
  7. vue使用echarts图表渲染异常本地正常,线上时有时无的渲染
  8. 如何释放计算机内存吗,教您如何有效释放计算机内存空间!
  9. 关于RabbitMQ启动慢问题的解决方法
  10. 为什么大多数人永远不会真正成功?