初学容器:Docker
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相关推荐
- 外部访问docker容器(docker run -p/-P 指令) docker run -d -p 5000:5000 {hostPort:containerPort(映射所有接口地}
https://www.cnblogs.com/williamjie/p/9915019.html (2)-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器.支持的格式有 ...
- centos7 docker删除端口映射_容器Docker详解
概述 基本概念Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源.Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Li ...
- 大型网站技术学习-3. 容器Docker与kubernetes
大型网站技术基石篇-容器Docker与kubernetes Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/Xen ...
- java部署容器_Linux容器——Docker(二)之 JavaWeb部署
1.拉取镜像 a.拉取Mysql镜像 #拉取Mysql镜像 $ docker pull mysql:8.0.18 b.拉取Tomcat镜像 #拉取Tomcat镜像 $ docker pull tomc ...
- 容器-Docker《三》容器管理
容器-Docker<三>容器管理 下载镜像只是相当于将软件下载下来安装好,但是并不代表把它运行起来,类似于root@ubuntu2204:~# apt install nginx = do ...
- docker 开机自启动容器docker运行自启动
1.docker开机自启动 systemctl enable docker 2.容器docker 运行时自启动 docker 容器启动策略 no 默认策略,在容器退出时不重启容器 on-failure ...
- 删除容器docker rm和强制删除容器docker rm -f
显示所有容器 docker ps -a删除容器,运行中的容器不行 docker rm 容器id强制删除容器,运行中的容器也是可以删除的 docker rm -f 容器id docker rm 删除运行 ...
- 3.docker创建容器 (docker容器命令)
文章目录 1.[nginx 容器拉取](https://blog.csdn.net/weixin_43627706/article/details/121990040) 2.运行创建一个nginx容器 ...
- Docker容器---Docker简介与原理
1. 概述 1.1 容器概念 docker是一个容器,所谓容器,就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,ip地址,主机名等,kvm虚拟机,linux, ...
最新文章
- C# 安装部署,关于自定义操作,不能被执行。
- Linux设备驱动剖析之IIC(四)
- mac如何导入python第三方库_Mac系统中python idle导入第三方模块成功,ecplise导入python第三方模块失败解决方法...
- MyEclipse Tomcat 超链接传参中文乱码
- JavaScript高级day02-PM【原型链的属性问题、探索instanceof、原型面试题】
- android 支付宝沙箱测试环境,Android支付宝沙箱环境使用教程
- 超级棒的170+款web前端开发工具汇总,千万要收藏好!
- 去掉登陆下的“扫一扫,访问微社区
- 手机子王掩码和网关查找_C程序使用位掩码查找奇数或偶数
- Qt实践|HTTP知识点-使用百度AI语音识别服务
- Unity手游之路三 基于Unity+Java的聊天室源码
- php ffmpeg
- 卷积神经网络处理猫和狗图片
- Python全栈学习_day010作业
- 【路径规划】基于matlab GUI EKF算法机器人SLAM演示路径规划【含Matlab源码 509期】
- vb adodc连接mysql_VB之Adodc控件连接数据库
- ASP.NET Core (视频)教程汇总
- 安装python之后电脑变卡_【Python】如何让电脑变卡?
- Java工程师是做什么的 岗位职责都有哪些
- 淘宝滞销宝贝怎么处理?面对滞销宝贝怎么正确处理?