1、安装docker
yum install docker,安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
1)service docker start
2)chkconfig docker on
3)测试docker是否安装成功:docker version
因为国内连接 Docker 的官方仓库很慢,因此我们在日常使用中会使用Docker 中国加速器。通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像。该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker 化应用。
Docker 中国官方镜像加速可通过 registry.docker-cn.com访问。该镜像库只包含流行的公有镜像,私有镜像仍需要从美国镜像库中拉取。
修改系统中docker对应的配置文件即可,如下:
1)vi /etc/docker/daemon.json
2)添加如下
{
"registry-mirrors":["https://registry.docker-cn.com"],
"live-restore":true
}
3)运行下面的命令,将 image 文件从仓库抓取到本地。
docker pull library/hello-world
拉取镜像:docker pull image_name(镜像的名字,如tomcat,java,mysql,nginx等等)
上面代码中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。
抓取成功以后,就可以在本机看到这个 image 文件了。
查看镜像:docker images
删除镜像:docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30
查看所有容器:docker ps -a
4)docker 命令大全
1、run
docker run:创建一个新的容器并运行一个命令
语法:docker run [options] image [command][arg...]
options某些说明:
-d:后台运行容器,并返回容器id;
-i:以交互模型运行容器,通常与-t 同时使用;
-p:端口映射,格式为:主机(宿主)端口:容器端口;
-t:为容器重新分配一个伪输入终端,通常与-i 同时使用;
--name="nginx-lb":为容器指定一个名称;
--dns 8.8.8.8:指定容器使用的dns服务器,默认和宿主机一致;
-h "mars":指定容器的hostname;
-e username="ritchie":设置环境变量;
--env-file=[]:从指定文件读入环境变量;
-m:设置容器使用内存最大值;
--expose=[]:开放一个端口或一组端口;
实例:
a、使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx,如下:
docker run --name mynginx -d nginx:latest
b、使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -p -d nginx:latest
c、绑定容器的8080端口,并将其映射到本机127.0.0.1的80端口
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
2、start/stop/restart
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个运行中的容器
docker restart:重启容器
语法:
docker start [options] container [container...]
docker stop [options] container [container...]
docker restart [options] container [container...]
实例:
docker start myrunoob;
docker stop myrunoob;
docker restart myrunoob;
3、kill
docker kill:杀掉一个运行中的容器。
语法:docker kill [options] container [container...]
options说明:-s 向容器发送一个信号
实例:杀掉运行中的容器mynginx:docker kill -s kill mynginx
4、rm
docker rm:删除一个或多个容器
语法:docker rm [options] container [container...]
options说明:
-f:通过sigkill信号强制删除一个运行中的容器
-l:移除容器见的网络连接,而非容器本身
-v:删除与容器关联的卷
5、pause、unpause
docker pause:暂停容器中所有的进程
docker unpause:回复容器中所有的进程
语法:
docker pause [options] container [container...]
docker unpause [options] container [container...]
6、create
docker create:创建一个新的容器,但不启动它
语法:docker create [options] image [command][arg...]
实例:使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob
docker create --namee myrunoob nginx:latest
7、exec
docker exec:在运行容器中执行命令
语法:
docker exec [options] container command [arg...]
options说明:
-d:分离模式,在后台运行
-i:及时没有附加也保持stdin打开
-t:分配一个伪终端
1、ps
docker ps:列出容器
语法:
docker ps [options]
options说明:
-a:显示所有的容器,包括未运行的
-f:根据条件过滤显示的内容
--format:指定返回的模板文件
-l:显示最近穿件的容器
-n:列出最近创建的n个容器
--no-trunc:不截断输出
-q:静默模式,只显示容器编号
-s:显示文件的大小
2、inspect
docker inspect:获取容器/镜像的元数据
语法:docker inspect [options] name | id [name|id]
options说明:
-f:指定返回值的模板文件
-s:显示总的文件大小
--type:为指定类型返回json
3、top
docker top:查看容器中运行的进程信息,支持ps命令参数
语法:docker top [options] container [ps options]
4、attach
docker attach:连接正在运行中的容器
语法:docker attach [options] container
要attach上去 电容器必须正在运行,可以同时连接上同一个container来共享屏幕。
5、events
docker events:从服务器活肤实时事件
语法:docker events [options]
options说明:
-f:根据条件过滤事件
--sunce:从指定的时间戳后显示所有事件
--until:流水事件显示到指定的时间为止
6、logs
docker logs:获取容器的日志
语法:docker logs [options] container
-f:跟踪日志输出
--since:显示某个开始时间的所有日志
-t:显示时间戳
--tail:仅列出最新N条容器日志
7、export
docker export:将文件系统作为一个tar归档文件导出到stdout
语法:docker export [options] container
-o:将输出内容写到文件
1、commit
docker commit:从容器创建一个新的镜像
语法:docker commit [options] container [repository[:tag]]
-a:提交的镜像作者
-c:使用dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit时,将容器暂停
2、cp
docker cp:用于容器与主机之间的数据拷贝
语法:docker cp [options] container : src_path dest_path|-
docker cp [options] src_path|- container:dest_path
-L:保持原目标中的链接
1、pull
docker pull:从镜像仓库中拉去或者更新指定镜像
语法:docker pull [options] name[:tag|@digest]
-a:拉去所有tagged镜像
--disable-content-trust:忽略镜像的检验,默认开启
实例:从docker hub下载java的所有镜像:docker pull -a java
2、search
docker search:从docker hub 查找镜像
1、images
docker images:列出本地镜像
2、rmi
docker rmi:删除本地一个或多个镜像
docker rmi [options] image [image...]
-f:强制删除
--no-prune:不移除该镜像的过程镜像,默认移除
3、build
docker build:用于使用Dockerfile创建镜像
docker build [options] path | url | -
4、save
docker save:将制定镜像保存成tar归档文件
docker save [options] image [image...]
5、import
docker import:从归档文件中创建镜像
docker import [options] file|url | - [repository[:tag]]
-c:应用docker指令创建镜像
-m:提交时的说明文字
1、docker version:显示docker版本信息
docker version [options]
-f:制定返回值的模板文件
运行mysql容器:
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
--privileged=true:使用该参数,container内的root拥有真正的root权限
https://blog.csdn.net/Hello_World_QWP/article/details/81147307
注意:如果docker启动不了,或者docker启动mysql、Tomcat等镜像报错,那么先将docker删除掉,通过上面链接所示,重新安装docker
1、先安装必要工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker-se:sudo yum -y install docker-ce
4、如果没有 /etc/docker/daemon.json文件,则添加文件,在其中添加如下信息:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
5、启动docker,拉取镜像,运行镜像。
6、以上启动容器之后,如果重启服务器,那么docker需要重新启动,执行chkconfig docker on后台启动docker,方可在服务器重启后自动启动。
1、创建用于挂载的目录
mkdir –p /data/mysql/logs /data/mysql/conf /data/mysql/data
2、启动mysql
docker run --privileged=true -p 3306:3306 --name mysql57-1 -v /data/mysql/data/:/var/lib/mysql -v /data/mysql/conf/:/etc/mysql/conf.d -v /data/mysql/logs/:/logs -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7
这样只要运行一个数据库的容器,挂载到该目录,那么该数据库都能操作这些数据
1、创建需要挂载的目录
/data/centos7
2、启动centos7
docker run -i -t --privileged=true --name centos7-1 -v /data/centos7/:/data/centos7/ 9f38484d220f /bin/bash
说明:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入命令行
-v:表示将本地那个目录挂载在容器中(本地创建的目录中放入jdk和Tomcat然后挂载在容器中的目录(如果这个目录没有创建,则会自动创建),然后在容器的这个目录中,便能获取到jdk和Tomcat了)
--privileged=true:容器家持权
/data/centos7/:挂载目录,可以自定义,确保jdk和Tomcat在目录下,否则容器获取不到
/bin/bash:???
3、安装jdk和Tomcat
1)将jdk和tomcat分别复制到/usr/local/ 目录下的tomcat目录和jdk目录,然后在通过tar zxvf解压
说明:x:从tar中将文件提取出来,z:tar包被gzip压缩过的,所以解压时需要gunzip,v:显示详细信息,f:指定被处理过的文件是xxx.tar.gz
2)配置环境变量,vim /etc/profile,然后在最后面添加如下:
export JAVA_HOME=“jdk的目录”/jdk1.8.0_171
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
jdk的目录:我的是在/usr/local/jdk
3)source /etc/profile:使修改的配置立即生效或运行:. /etc/profile
4)java -version 查看是否配置成功
4、编辑 .bashrc 文件
vi ~/.bashrc #配置.bashrc文件(不知道如何配置,先未配置)
source ~/.bashrc #使.bashrc文件有效
编写运行脚本,当容器启动时,运行脚本,启动tomcat
vi /root/run.sh #创建运行脚本
脚本内容如下:
#!/bin/bash
source /etc/profile #尝试过启动centos,但是java -version却不行,因此此配置是确保配置文件生效
source ~/.bashrc #这句话不知道为什么
sh /usr/local/apache-tomcat-7.0.73/bin/catalina.sh run
添加脚本执行权限:chmod u+x /root/run.sh
退出容器:exit
5、创建javaweb镜像
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”
docker commit 910e269944da zzl/javaweb:0.1
说明:910e269944da,centos容器id,zzl/javaweb镜像名称,0.1:tag版本
docker images查看镜像,能看到镜像说明创建成功
6、启动javaweb容器
docker run -d -p 8080:8080 --name javaweb zzl/javaweb:0.1 /root/run.sh
安装完成,访问 http://192.168.169.130:8080
7、当centos停止后,启动centos容器后,可以通过:docker exec -i -t centos7-1 /bin/bash 命令进入容器命令行
8、经过几次尝试后,可以这样做:
1)安装上面方式pull centos7后其中安装jdk和tomcat后,创建javaweb镜像
2)使用这个javaweb镜像创建容器,命令如下:
docker run -p 8080:8080 --name xiaokedou -v /data/centos7/:/data/centos7/ -d javaweb-xiaokedou:0.2 /root/run.sh
说明:在宿主机上创建一个tomcat的webapps目录,这个目录中必须要有tomcat下webapps里面的基本文件,然后将该文件挂载到javaweb容器中的tomcat里的webapps目录下,这样直接将打包文件部署到宿主机上的webapps目录下即可完成项目部署
3)可以通过:docker exec -it xiaokedou1 /bin/bash,命令进入到容器命令行