首页 技术 正文
技术 2022年11月16日
0 收藏 603 点赞 4,656 浏览 5421 个字

一、Docker介绍

       Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。 
  Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。

二、Docker是什么?

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

三、Docker 的用途

1、提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
2、提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
3、组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

四、Docker改变了什么?

面向产品:产品交付
面向开发:简化环境配置
面向测试:多版本测试
面向运维:环境一致
面向架构:自动化扩容(微服务)

五、Docker安装

1、环境

[root@docker01 ~]# cat /etc/redhat-release
CentOS Linux release 7.2. (Core)
[root@docker01 ~]# uname -r
3.10.-.el7.x86_64
[root@docker01 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
[root@docker01 ~]# getenforce
Disabled

2、添加yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo

3、安装docker

Docker官网:http://www.docker.com/    
yum install docker-ce -y

4、启动docker并设置成开机启动 

systemctl start docker.service
systemctl enable docker.service
#查看docker进程是否正常#
[root@docker01 ~]# ps -ef|grep docker
root : ? :: /usr/bin/dockerd
root : ? :: docker-containerd --config /var/run/docker/containerd/containerd.toml
root : pts/ :: grep --color=auto docker

5、查看docker版本

[root@docker01 ~]# docker version
Client:
Version: 18.03.-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr ::
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarmServer:
Engine:
Version: 18.03.-ce #docker1.8版本只能安装在CentOS7
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr ::
OS/Arch: linux/amd64
Experimental: false

如果做监控的话,可以使用 docker info

 六、Docker基础命令

1、拉取镜像

docker pull centos
docker pull docker
docker pull tomcat
docker pull java

2、查看当前镜像

[root@docker01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker latest 40c6c282d58f hours ago 133MB
tomcat latest df50c9d355cf days ago 463MB
centos latest 49f7960eb7e4 weeks ago 200MB
java latest d23bdf5b1b1b months ago 643MB

①导出镜像

docker save -o [镜像名称] [镜像][root@docker01 ~]# docker save -o centos.tar centos
[root@docker01 ~]# ls
anaconda-ks.cfg centos.tar
需要将docker导出为tar,后面为镜像名称

②导入镜像

[root@docker01 ~]#docker load --input centos.tar
#使用input导入
[root@docker01 ~]# docker load < nginx.tar #使用重定向导入

③删除镜像

docker镜像删除可以使用docker rmi 后面加上docker的ID 

3、搜索镜像

[root@docker01 ~]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 1909 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 51 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 49 [OK]
davidcaste/alpine-tomcat Apache Tomcat 7/8 using Oracle Java 7/8 with… 26 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 17 [OK]
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 16 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
tutum/tomcat Base docker image to run a Tomcat applicatio… 10
meirwa/spring-boot-tomcat-mysql-app a sample spring-boot app using tomcat and My… 9 [OK]
jeanblanchard/tomcat Minimal Docker image with Apache Tomcat 8
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 7 [OK]
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 3 [OK]
amd64/tomcat Apache Tomcat is an open source implementati… 2
maluuba/tomcat7-java8 Tomcat7 with java8. 2
fabric8/tomcat-8 Fabric8 Tomcat 8 Image 2 [OK]
camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
99taxis/tomcat7 Tomcat7 1 [OK]
primetoninc/tomcat Apache tomcat 8.5, 8.0, 7.0 1 [OK]
swisstopo/service-print-tomcat backend tomcat for service-print "the true, … 0
jelastic/tomcat 0
oobsri/tomcat8 Testing CI Jobs with different names. 0
trollin/tomcat 0
s390x/tomcat Apache Tomcat is an open source implementati… 0
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAGER… 0 [OK]
awscory/tomcat tomcat 0  

参数:

--automated   #只列出automated build类型的镜像
--no-trunc #显示完整的镜像描述
-s #列出收藏数不小于指定值的镜像 

4、启动一个容器并进入到容器查看系统版本

[root@docker01 ~]# docker run -i -t centos /bin/bash
[root@eccc3e4c6f27 /]# cat /etc/redhat-release
CentOS Linux release 7.5. (Core)
[root@docker01 ~]# docker run -it java java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

5、Docker exec

Docker exec 是docker 官方提供的技术
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d 在后台执行命令
-e 设置环境变量
-i 即使没有连接,也要保持STDIN打开
--privileged 给命令赋予扩展权限
-t 分配一个TTY
-u 设置用户名

6、Docker Create

#以前我们docker 都是用run,新的版本可以使用creare。
create #仅仅生成一个容器,但是不启动它
docker create #创建容器
--name #容器名称
-e #代表环境变量,docker的配置文件大部分写在环境变量中
-p #端口映射,映射容器中的3307到物理机的3307端口
docker start Name #启动容器
docker stop Name #停止容器

7、Docker ps

[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
511474a7d51c centos "/bin/bash" seconds ago Up seconds suspicious_vaughan

8、Docker rm

删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f [--force] #强制删除正在运行的容器
-l [--link] #删除指定的连接
-v [--volumes] #删除与容器关联的卷
例子
取出一个容器
这将删除链接中引用的容器 /redis。
$ docker rm /redis
/redis
删除--link在默认网桥上指定的链接
这将删除 默认网桥网络/webapp与/redis容器之间的基础链接,从而移除两个容器之间的所有网络通信。这--link与用户指定的网络一起使用时不适用。
$ docker rm --link /webapp/redis
/webapp/redis
强制删除正在运行的容器
该命令将强制删除正在运行的容器。
$ docker rm --force redis
redis
链接下引用的容器内的主进程redis将收到 SIGKILL,然后该容器将被删除。
删除所有停止的容器
$ docker rm $(docker ps -a -q)
该命令将删除所有停止的容器。该命令 docker ps -a -q将返回所有现有的容器ID并将它们传递给rm将删除它们的命令。任何正在运行的容器都不会被删除。
取出容器及其容量
$ docker rm -v redis
redis
该命令将删除容器及与其相关的任何卷。请注意,如果卷是使用名称指定的,则不会被删除。
取出容器并选择性地移除卷
$ docker create -v awesome:/foo -v /bar --name hello redis
hello
$ docker rm -v hello
在本例中,音量/foo将保持不变,但音量 /bar将被删除。同样的行为适用于继承的卷 --volumes-from

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918