1、环境初始化

1.1 安装git vim curl等常用工具


sudo apt update
sudo apt install -y git vim curl jq

1.2 ubuntu是不支持远程连接的,需要安装ssh服务

sudo apt install -y openssh-server

2、安装Docker

2.1 自动化安装docker


sudo apt install -y docker.io #安装Docker Engine

2.2  如果操作系统是最小化安装还需要执行下面两条命令,执行完毕后exit退出一下。


sudo service docker start         #启动docker服务
sudo usermod -aG docker ${USER}   #当前用户加入docker组

2.3 查看Docker版本和信息

docker version  #查看docker版本docker info     #查看docker系统相关信息如cpu、内存、容器数量

3、镜像名称

3.1. 镜像名称由两个部分组成,名字和标签,中间用:连接起来。

名称类似于:apline\ubuntu\nginx\redis    ,名字类似表明身份信息

标签类似于:3.15\jammy\1.21-alpin\alpine   ,标签相当于做额外的标记

标签还有一个特殊标签"last",默认标签,如果只提供名字没有附带标签,那么就会使用这个默认的“latest”标签

             name :tag
docker pull alpine:3.15(版本)
docker pull ubuntu:jammy (项目代号)
docker pull nginx:1.21-alpine(版本号-操作系统)
docker pull nginx:alpine
docker pull redis

4、Docker使用

4.1 查看docker进程

#因为现在没有运行任何容器,所以列表显示为空harbo@harbo-virtual-machine:~$ docker psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

4.2 镜像拉取

docker pull busybox      #拉取busybox镜像harbo@harbo-virtual-machine:~$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
19d511225f94: Pull complete
Digest: sha256:3614ca5eacf0a3a1bcc361c939202a974b4902b9334ff36eb29ffe9011aaad83
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
harbo@harbo-virtual-machine:~$

4.3 查看镜像

docker images #显示当前Docker所存储的所有镜像harbo@harbo-virtual-machine:~$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
busybox      latest    62aedd01bd85   3 weeks ago   1.24MB

4.4 运行容器,并让它输出hello word

harbo@harbo-virtual-machine:~$ docker  run busybox echo hello wordhello word

4.5 查看docker 运行的容器 ,docker ps  -a

harbo@harbo-virtual-machine:~$ docker ps -aCONTAINER ID   IMAGE     COMMAND             CREATED          STATUS                      PORTS     NAMES
b94ade823470   busybox   "echo hello word"   18 seconds ago   Exited (0) 17 seconds ago             clever_black

5、认识一下Dock 命令

5.1 使用docke pull 拉取一个新的镜像

docker pull alpineharbo@harbo-virtual-machine:~$ docker  pull alpine
Using default tag: latest
latest: Pulling from library/alpine
Digest: sha256:686d8c9dfa6f3ccfc8230bc3178d23f84eeaf7e457f36f271ab1acc53015037c
Status: Image is up to date for alpine:latest
docker.io/library/alpine:latest

5.2  使用docker run 运行它的shell程序,并且在容器内部执行cat /etc/os-release 和 ps -ef

docker run -it alpine shharbo@harbo-virtual-machine:~$ docker run -it alpine sh
/ # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.16.0
PRETTY_NAME="Alpine Linux v3.16"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sh8 root      0:00 ps -ef

5.3  再使用docker pull 拉取ubuntu:18.04的镜像,进入到容器内部,执行apt、update、apt、install等命令;

docker pull ubuntu:18.04
docker run -it ubuntu:18.04 sh# 下面的命令都是在容器内执行
cat /etc/os-release
apt update
apt install -y wget redis
redis-server &

5.4 docker rmi  删除不在使用的镜像,rmi(remove image);

harbo@harbo-virtual-machine:~$ docker rmi redis
Untagged: redis:latest
Untagged: redis@sha256:d581aded52343c461f32e4a48125879ed2596291f4ea4baa7e3af0ad1e56feed
Deleted: sha256:2e50d70ba706ed644d475612b998641687dfb2415016b803ca3eb811c7096714
Deleted: sha256:bf318baa6aa554c3aea31b9c91c986cf7b33be4afd5ac5562fc94e88fceb9ac8
Deleted: sha256:e585188120ef8e14abfd097ebceba61cecdf56a85296a67e632fe17f9eed41d1
Deleted: sha256:51d7aab829870a1ea24dfc3cce7bec89d35d9a43c225370e5401d662837b9c80
Deleted: sha256:92fd29f93c5ed2985ef47d721abfd85917369726779e7fe91cd3e24d07ca1021
Deleted: sha256:1cc9e0fe288a20fc9a4c0972353bc4323714b98cb280c7f30a88330fd2e0c1af
Deleted: sha256:08249ce7456a1c0613eafe868aed936a284ed9f1d6144f7d2d08c514974a2af9

6、常用的操作命令

6.1  Docker run  -h  参数说明


docker run -h srv alpine #docker 运行,-h 设置主机名  镜像名称 -h  Container host name ,

6.2 Docker  run -it 参数说明

docker run -it --name ubuntu 2e6 sh   # 使用IMAGE ID,登录Ubuntu18.04-i, --interactive(交互式)     Keep STDIN open even if not attached (即使未连接,也保持标准DIN打开)docker run -d nginx:alpine            # 后台运行Nginx-d, --detach(分离)         Run container in background and print container ID(在后台运行容器并打印容器ID)docker run -d --name red_srv redis    # 后台运行Redis

6.3 对正在运行的容器执行指定的程序

docker exec -it red_srv shexec        Run a command in a running container在正在运行的容器中运行命令

6.4 通过container id对正在运行的容器执行停止命令


docker stop ed4 d60 45c

6.5 移除容器,docker rm (container),注意与rmi区分,rmi删除镜像。

docker  rm  166rm          Remove one or more containers移除一个或多个容器

6.6 当容器停止,自动删除容器

docker run -d --rm nginx:alpine
docker run -d --rm redis
docker run -it --rm 2e6 sh 

7、Docker-file文件的创建

7.0 注意事项:

docker file 不要创建在root下,否则会将root下面所有的文件全面打包到守护进程,
#号,只有在开头位置才起到注释作用,其他位置都认为是参数。
注释不支持连续字符
一行就是一个指令
指令和参数 不匹配无法解析就认为是注释
支持空格,但是不支持空格换行

7.1 所以有的 RUN 指令会在每行的末尾使用续行符 \,命令之间也会用 && 来连接,这样保证在逻辑上是一行,就像下面这样:

由于报错难查找,而其dockfile也不认,所以尽可能一行行写
RUN apt-get update \&& apt-get install -y \build-essential \curl \make \unzip \&& cd /tmp \&& curl -fSL xxx.tar.gz -o xxx.tar.gz\&& tar xzf xxx.tar.gz \&& cd xxx \&& ./config \&& make&& make clean

7.2 如果某些文件不需要打包到镜像,可以在docker file 目录下 创建一个 .dockerignore文件,忽视掉

# comment
*/temp*
*/*/temp*
temp?

7.3 通过指定docker file 文件名 和 路径来构建镜像

 docker build -f /path/to/a/Dockerfile .-f Name of the Dockerfile (Default is 'PATH/Dockerfile')文件名+默认路径
-

7.4 镜像构建成功,你可以为这个镜像打上一个新的标签,并指定存储位置

docker build -t shykes/myapp .-t, --tag list   Name and optionally a tag in the 'name:tag' format直译就是,名称:标签,名称可以根据这个镜像属性命名标签可以用生命周期进行命名

7.5 新保存的镜像,需要给他打上多个标签

 docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .

7.6 dockerfile 格式

7.6.1 默认指令是大写,参数是小写

# Comment
INSTRUCTION arguments

7.6.2 Docker file 第一条指令必须是FROM,所以基础镜像的选择非常关键。如果关注的是镜像的安全和大小,那么一般会选择 Alpine;如果关注的是应用的运行稳定性,那么可能会选择 Ubuntu、Debian、CentOS。dockerfile 可以包含一个或者多个ARG.

FROM busybox(镜像)
USER ${user:-some_user}
ARG user
USER $user
# ...
它们区别在于 ARG 创建的变量只在镜像构建过程中可见,
容器运行时不可见,
而 ENV 创建的变量不仅能够在构建镜像的过程中使用,
在容器运行时也能够以环境变量的形式被应用程序使用。

7.6.3 用户通过调用以下命令来构建此文件:

FROM busybox
USER ${user:-some_user}
ARG user
USER $user
# ...

初学容器:Docker相关推荐

  1. 外部访问docker容器(docker run -p/-P 指令) docker run -d -p 5000:5000 {hostPort:containerPort(映射所有接口地}

    https://www.cnblogs.com/williamjie/p/9915019.html (2)-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器.支持的格式有 ...

  2. centos7 docker删除端口映射_容器Docker详解

    概述 基本概念Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源.Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Li ...

  3. 大型网站技术学习-3. 容器Docker与kubernetes

    大型网站技术基石篇-容器Docker与kubernetes Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/Xen ...

  4. java部署容器_Linux容器——Docker(二)之 JavaWeb部署

    1.拉取镜像 a.拉取Mysql镜像 #拉取Mysql镜像 $ docker pull mysql:8.0.18 b.拉取Tomcat镜像 #拉取Tomcat镜像 $ docker pull tomc ...

  5. 容器-Docker《三》容器管理

    容器-Docker<三>容器管理 下载镜像只是相当于将软件下载下来安装好,但是并不代表把它运行起来,类似于root@ubuntu2204:~# apt install nginx = do ...

  6. docker 开机自启动容器docker运行自启动

    1.docker开机自启动 systemctl enable docker 2.容器docker 运行时自启动 docker 容器启动策略 no 默认策略,在容器退出时不重启容器 on-failure ...

  7. 删除容器docker rm和强制删除容器docker rm -f

    显示所有容器 docker ps -a删除容器,运行中的容器不行 docker rm 容器id强制删除容器,运行中的容器也是可以删除的 docker rm -f 容器id docker rm 删除运行 ...

  8. 3.docker创建容器 (docker容器命令)

    文章目录 1.[nginx 容器拉取](https://blog.csdn.net/weixin_43627706/article/details/121990040) 2.运行创建一个nginx容器 ...

  9. Docker容器---Docker简介与原理

    1. 概述 1.1 容器概念 docker是一个容器,所谓容器,就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,ip地址,主机名等,kvm虚拟机,linux, ...

最新文章

  1. C# 安装部署,关于自定义操作,不能被执行。
  2. Linux设备驱动剖析之IIC(四)
  3. mac如何导入python第三方库_Mac系统中python idle导入第三方模块成功,ecplise导入python第三方模块失败解决方法...
  4. MyEclipse Tomcat 超链接传参中文乱码
  5. JavaScript高级day02-PM【原型链的属性问题、探索instanceof、原型面试题】
  6. android 支付宝沙箱测试环境,Android支付宝沙箱环境使用教程
  7. 超级棒的170+款web前端开发工具汇总,千万要收藏好!
  8. 去掉登陆下的“扫一扫,访问微社区
  9. 手机子王掩码和网关查找_C程序使用位掩码查找奇数或偶数
  10. Qt实践|HTTP知识点-使用百度AI语音识别服务
  11. Unity手游之路三 基于Unity+Java的聊天室源码
  12. php ffmpeg
  13. 卷积神经网络处理猫和狗图片
  14. Python全栈学习_day010作业
  15. 【路径规划】基于matlab GUI EKF算法机器人SLAM演示路径规划【含Matlab源码 509期】
  16. vb adodc连接mysql_VB之Adodc控件连接数据库
  17. ASP.NET Core (视频)教程汇总
  18. 安装python之后电脑变卡_【Python】如何让电脑变卡?
  19. Java工程师是做什么的 岗位职责都有哪些
  20. 淘宝滞销宝贝怎么处理?面对滞销宝贝怎么正确处理?

热门文章

  1. R 数字 字符 向量
  2. 解决HbuildX无法格式化TS文件的问题
  3. 2008春天在玉渊潭看到传说中的榆钱树
  4. 基于视觉的车道线识别技术在智能车导航中的应用研究
  5. terminal的常用快捷键
  6. 给大家讲一个关于map和bean的故事(在SpringJdbc玩map被玩死)
  7. 阿里云https证书申请与部署
  8. unity 加载关卡_Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库
  9. JS对象的两种 in 操作符
  10. 你可能不了解的《唐诗三百首》