Is it going on-------------Docker容器的安装以及基本的操作指令
什么是Docker
docker是在linux容器中运行的开源工具,是一种轻量级的虚拟机。docker设计的宗旨是,通过应用组件的封装、发布、部署、运行等生命周期的管理,达到组件级别的“一次封装,到处运行”的目的。这里的组件,可以看成一个完整的操作系统。
docker的应用场景:
解决开发人员和运维人员之间的协作关系,加快应用交付速度
以支持大规模的分布系统的水平扩展,真正给企业开发带来福音## docker的
能实现把需要的服务器从腾讯云迁移到阿里云
优缺点:
特点 | Docker容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
计算能力耗损 | 几乎无 | 耗损50%左右 |
性能 | 接近原生 | 弱于 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
docker的三大核心概念:镜像、容器、仓库。
镜像
Docker是创建容器的基础类似于虚拟机的快照。
容器
容器是从镜像创建的运行实例、可以被启动停止和删除
仓库
Docker是集中存放镜像的地方
实操一
安装docker容器
安装环境:centos 7.4
yum -y install yum-utils device-mapper-persistent-data lvm2
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl start docker.service
systemctl enable docker.service
docker version ##看docker的版本信息下面是安装获取镜像的过程
*************************************镜像加速不需要************
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://7k2y.mirror.aliyuncs.com"]
}
EOF
************************************************************
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 ##优化
sysctl -p
systemctl restart network
systemctl reload docker
systemctl restart docker
docker pull nginx ##获取nginx的镜像
docker search nginx ##查看官网上有哪些nginx的镜像
[root@localhost yum.repos.d]# docker images
名称 便签 镜像id 什么时候创建的 镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 3 days ago 133MBcat /var/lib/docker/image/overlay2/repositories.json
可以查看具体的下载文件信息
知识点:获取镜像信息添加镜像标签
docker inspect c39a868aad02 ##后面跟的是镜像的ID
[root@localhost overlay2]# docker tag nginx:latest nginx:webb ##为nginx添加一个新的标签webb
[root@localhost overlay2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c39a868aad02 3 days ago 133MB
nginx webb c39a868aad02 3 days ago 133MB
[root@localhost overlay2]# docker images |grep nginx
nginx latest c39a868aad02 3 days ago 133MB
nginx webb c39a868aad02 3 days ago 133MB
[root@localhost overlay2]# docker rmi nginx:webb ##删除标签
Untagged: nginx:webb
[root@localhost overlay2]# docker images |grep nginx
nginx latest c39a868aad02 3 days ago 133MB
注意:删除标签仅剩下一个的时候就不要删了,在删的话就会把镜像删除,另外当镜像存在两个标签的时候不能直接通过删id删除镜像。
知识点:镜像的存出和删除和载入
docker save -o /opt/nginx nginx:latest ##存出镜像相当备份一样
docker rmi c39a868aad02 ##删除镜像
docker load < /opt/nginx ##载入镜像相当于恢复
或者用docker --input /opt/nginx 恢复
知识点:创建容器,查看容器
创时:-i指的是标准输入-t是让docker分配一个伪终端
[root@localhost opt]# docker create -it nginx:latest /bin/bash
d22ad9d458af8feec78bf6b847bfb0fc41306c0e7e019b30c9bc33379dce6014
[root@localhost opt]# docker ps -a ##-a列出所有
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d22ad9d458af nginx:latest "/docker-entrypoint.…" 36 seconds ago Created serene_almeida
知识点:开启容器,证明容器无论开不开启都不能直接删除镜像,需先删除容器后才能删除镜像。容器开启时无法删除容器
docker pull centos:7
docker create -it centos:7 /bin/bash
docker start 7e6257c9f8d8 ##开启nginx容器
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77dc8d519ae9 centos:7 "/bin/bash" 4 minutes ago Created beautiful_galois
d22ad9d458af nginx:latest "/docker-entrypoint.…" 10 minutes ago Up(开启) 5 seconds 80/tcp serene_almeida
[root@localhost opt]# docker rmi c39a868aad02
Error response from daemon: conflict: unable to delete c39a868aad02 (cannot be forced) - image is being used by running container d22ad9d458af
[root@localhost opt]# docker rmi 7e6257c9f8d8
Error response from daemon: conflict: unable to delete 7e6257c9f8d8 (must be forced) - image is being used by stopped container 77dc8d519ae9
[root@localhost opt]# docker rm d22ad9d458af #容器开启时没法删容器
Error response from daemon: You cannot remove a running container d22ad9d458af8feec78bf6b847bfb0fc41306c0e7e019b30c9bc33379dce6014. Stop the container before attempting removal or force remove
[root@localhost opt]# docker stop d22ad9d458af
d22ad9d458af
[root@localhost opt]# docker rm d22ad9d458af
d22ad9d458af
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77dc8d519ae9 centos:7 "/bin/bash" 11 minutes ago Created beautiful_galois
[root@localhost opt]# docker rmi c39a868aad02
Untagged: nginx:latest
Deleted: sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1
Deleted: sha256:1af47386c12cb24b362bd785e71058ab675fbdcbda8e7a7ba0dd10c3cff75a2a
Deleted: sha256:25ee02f9e42f8cdca7ca8bc522cb69ac4a86a55401818a13c7a01e52a81894fe
Deleted: sha256:b1d2bc3292aa3d64794f99d2885d35b454993b4af24ad350a969d27925db7ebb
Deleted: sha256:4216e20d59f9fc90bccdd14493452532806d4803a25514366de2a9c5560624d0
Deleted: sha256:d0fe97fa8b8cefdffcef1d62b65aba51a6c87b6679628a2b50fc6a7a579f764c
知识点:可以直接用一条命令创建镜像,创建容器,并运行容器,但是运行后直接关闭容器 器状态是Exited
[root@localhost opt]# docker run nginx /usr/bin/bash -c ls /
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bb79b6b2107f: Pull complete
5a9f1c0027a7: Pull complete
b5c20b2b484f: Pull complete
166a2418f7e8: Pull complete
1966ea362d23: Pull complete
Digest: sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Status: Downloaded newer image for nginx:latest
/docker-entrypoint.sh: 38: exec: /usr/bin/bash: not found
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3451e8cbe989 nginx "/docker-entrypoint.…" 7 seconds ago Exited (127) 6 seconds ago jolly_shtern
上一个操作是有错误的,因为nginx不需要用/usr/bin/bash解决办法如下
正常的结束结果应该是Exited(0)
[root@localhost opt]# docker run nginx /bin/bash -c ls /
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9c6651b7506 nginx "/docker-entrypoint.…" 22 seconds ago Exited (0) 21 seconds ago
知识点:测试当用run创建镜像并进入死循环状态时,其会一直出现hello,只有在开一个终端把容器关闭才能停止,且这时候的停止不是为正常状态的停止
[root@localhost ~]# docker run paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1deec0730a89 paigeeworld/centos7 "/bin/bash -c 'while…" About a minute ago Up About a minute hungry_shockley
d9c6651b7506 nginx "/docker-entrypoint.…" 46 minutes ago Exited (0) 46 minutes ago trusting_bose
[root@localhost ~]# docker stop 1deec0730a89
1deec0730a89
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1deec0730a89 paigeeworld/centos7 "/bin/bash -c 'while…" 2 minutes ago Exited (137) 12 seconds ago
知识点:进入容器,退出容器,容器导出,删除容器,容器导入(注意容器导入时会生成镜像不会创建容器) 批量删除脚本不会删掉正在运行的容器,用这个特性可以筛选出运行的容器,删不用容器
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbc4997954bb nginx:latest "/docker-entrypoint.…" 12 minutes ago Created clever_wing
1deec0730a89 paigeeworld/centos7 "/bin/bash -c 'while…" 28 minutes ago Up 11 minutes hungry_shockley
[root@localhost ~]# docker exec -it 1deec0730a89 /bin/bash
bash-4.2# exit
exit
[root@localhost ~]# docker export 1deec0730a89 > /opt/nginx_c
[root@localhost opt]# docker rm 1deec0730a89 ##删除
1deec0730a89
[root@localhost opt]# mv nginx_c centos7_c ##改名
[root@localhost opt]# cat centos7_c | docker import - paigeeworld/centos7:latest
sha256:ce7bcd00ef6d7dc586183c3e88b123ee16bbe5f0d90ce8ef1d3589699e18eb88
[root@localhost opt]# docker ps -a ##查看一下
[root@localhost opt]# docker images ##查看创建的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
paigeeworld/centos7 latest ce7bcd00ef6d 3 minutes ago 355MB
centos 7 09fd2f9e071b 7 minutes ago 0B
nginx latest c39a868aad02 3 days ago 133MB
paigeeworld/centos7 <none> 4cbe7aa905e7 6 years ago 382MB[root@localhost opt]# docker ps -a |awk '{print "docker rm "$1}' |bash ##批量删除容器脚本
Error: No such container: CONTAINER
d6dbbc749b42
fbc4997954bb
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
实操二:Docker创建镜像
镜像:应用发布的标准格式,支撑一个Docker容器的运行
基于已经有镜像创建
将容器里面运行的程序及运行环境打包生成新的镜像
docker commit [选项] 容器ID/名称 仓库名称:[标签]
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
[root@localhost opt]# docker create -it centos:7 /bin/bash
8d5566c344a54f8c9a452009907c6c9e75b6402e65c551002c53ac34865b458d
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d5566c344a5 centos:7 "/bin/bash" 3 seconds ago Created nice_dubinsky
[root@localhost opt]# docker commit -m "new" -a "daokes" 8d5566c344a5 daokes:test
sha256:53ba842ca996e9cc44c47c82ac3a53c5bc8a39b6ee5951cb7795912e6cd8ca9d
[root@localhost opt]# docker images |grep daokes
daokes test 53ba842ca996 15 seconds ago 203MB
基于本地模块创建
通过导入操作系统模板文件生成新的镜像
使用wget命令导入为本地镜像
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
导入成功后可查看本地镜像信息
docker images |grep new
wget https://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz ##一般先下载好后再传到opt 在运行
[root@localhost opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daokes:new
sha256:ea6866d81fa7c08c1f7d07d1fd35ba484791d1dbd5dce53ade205e5ffa890a20
[root@localhost opt]# docker images|grep daokes
daokes new ea6866d81fa7 2 minutes ago 215MB
基于Dockerfile创建
Dockerfile是由一组指令组成的文件
Dockerfile结构四部分
基于镜像信息
维护者信息
镜像操作指令
容器启动时执行指令
Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释
注意:每创建一个制作镜像的时候中间会生成容器,执行的时候在一步步的删除后 在创建最后生成的才是你需要的 也就是说创建过程中会产生一个临时的容器,创建完后会被remove掉,并且保留你中间出错的指令。
先删除所有的镜像
mkdir apache
cd apache/
vim Dockerfile
FROM centos:7 ##基于的基础镜像
MAINTAINER lai ##维护镜像的用户信息
RUN yum -y update ##静像超作指令安装Apache
RUN yum -y install httpd
EXPOSE 80 ##开80端口
ADD index.html /var/www/html/index.html ##复制网站首页文件
ADD run.sh /run.sh ##将执行脚本复制到镜像中
RUN chmod 755 /run.sh
CMD [ "/run.sh" ] ##启动容器时执行脚本vim index.html
<h1>this is my http</h1>vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUNDdocker build -t httpd:centos .
Successfully built 9c1babec53b9
Successfully tagged httpd:centos
[root@localhost apache]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd centos 9c1babec53b9 13 seconds ago 419MB
centos 7 7e6257c9f8d8 3 months ago 203MB
[root@localhost apache]# docker run -d -p 1216:80 httpd:centos
081c5795f2e75875ed1ebd00f5bb57c82cce6f616e2df102af433e9795ca53fa
开启对外的映射在浏览器上测试
关键字
docker images ---------------------------------------------------------看所有镜像
docker rmi nginx:web-------------------------------------------------删标签
docker save -o /opt/nginx nginx:latest -------------------------- 载出
docker load < /opt/nginx ---------------------------------------------载入
docker create -it nginx:latest /bin/bash ---------------------------创容器
docker ps -a ------------------------------------------------------------看容器
docker run nginx /bin/bash -c ls / ---------------------------------- 一键部署测试
docker exec -it 1deec0730a89 /bin/bash ------------------------入容器
exit
docker export 1deec0730a89 > /opt/nginx_c ------------------容器载出
docker ps -a |awk ‘{print "docker rm "$1}’ -----------------------批量删容器
docker commit -m “new” -a “daokes” -----------------------------基于已有镜像的
cat debian-7.0-x86-minimal.tar.gz | docker import - daokes:new 基于本地模块
Is it going on-------------Docker容器的安装以及基本的操作指令相关推荐
- Docker(三):镜像导入与导出、保存与加载、在Docker容器中安装软件
相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...
- 解决Docker容器内安装chrome浏览器无法启动bug
前言 之前有写过一个基于Ubuntu20.04 的Docker容器的可视化Dockerfile,当时默认火狐浏览器,今天要测试一个项目就run了一个可视化容器,但是我需要用到chrome浏览器,于是乎 ...
- 宝塔面板安装docker 再到docker容器里面安装宝塔
我的服务器宝塔版本是7.9 一.docker安装 点击Docker管理器后面的安装就行 二.创建docker容器 点击设置 获取一个系统镜像 以centos:7 为例 点击获取镜像 可能有点慢 想要快 ...
- docker容器中安装vim
docker容器中安装vim 在使用docker容器时,容器一般没有安装vim,就需要安装vim apt-get install vim命令用于安装vim,但是下载过慢. 第一步 配置国内镜像源 进入 ...
- docker容器中安装vim 、telnet、ifconfig, ping命令
在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时 ...
- 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 在 Docker 容器中编辑文件,报错如下: bash: vim: command not f ...
- 容器安装java_在docker容器中安装Java(从宿主机向docker容器中拷贝文件)
操作系统 [root@Optimus /]# uname -a Linux Optimus 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2 ...
- docker容器内安装ifconfig netstat ping vim 等测试工具的方法
首先,确保docker容器能联网 ① centos使用yum进行安装 ② Ubuntu/debian等使用apt-get进行安装 安装ifconfig.netstat命令 apt-get instal ...
- Ubuntu在docker容器中安装TensorFlow-1.5
本文部分参考https://blog.csdn.net/u013948858/article/details/78429954 注意以下操作在64位Ubuntu16.04或14.04下进行,不支持32 ...
最新文章
- IT男人必学的20大泡妞妙招
- getBoundingClientRect()方法
- 模拟电路技术之基础知识(八)
- 数字原生,创新生长|企业如何打造数字创新的“飞天梦”?
- TRY NOT TO SAY SO MUCH!
- JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性
- 三年级计算机课画曲线,三年级上册信息技术曲线工具教案
- Echart 地图实例
- 《Oracle数据库管理与维护实战》——1.2 Oracle各版本异同
- 帆软查询前后鼠标进入到某个位置隐藏或显示参数面板
- vue+webpack5项目中全局引入scss
- Android仿微信源码下载
- java word文件转图片
- open-drain和push-pull的上拉速度
- 凸优化1——仿射集、凸集、锥
- 完美池宇峰畅谈创业点滴 男怕入错行
- 微信小程序canvas绘制图片真机不显示问题
- PHP如何把三张图片均匀分布,C++ uniform_real_distribution连续均匀分布类模板用法详解...
- np.array数组的切片
- 为用户提供确定性——互联网平台建设