前期准备:
docker的功能、作用、优缺点等等自己百度,我就不复制了;
所以要学习docker,肯定是要先准备一个web项目。项目自己准备,有空我可能会上传一个,最近先不做;
以下就是需要准备的内容:
- 可用的war包,自己准备,我准备的是一个CRM.war。
- Linux系统,在接下来的 准备工作 中有提供下载地址。
准备工作
- 虚拟机:准备一个虚拟机软件,我用的是VMwar14,通过电脑管家下载,下载评论里有注册码提供(我最近又看了看,电脑管家的VMware升级到15版了,原注册码也一并失效,所以,VMware就先自己搞吧);
- 虚拟机上安装系统:我用的是CenOS7,附镜像下载地址;虚拟机上如何安装linux自行百度即可;
- linux系统联网:这个是我当时遇到的问题,我的linux安装完毕后不能联网,系统又没装ifconfig命令,这部分的坑后期补上,目前先行百度吧,这个也很容易找到并解决。
安装docker(yum -y install docker)
进入linux系统,执行命令以下进行 docker的网络安装
yum -y install docker
在这里小白认真搜了一下 yum -y install 和 yum install 命令的区别:
- yum install 在找到安装包后会询问用户是否进行安装,即【Is this OK[y/d/N]】,用户需键入y并回车后继续安装操作;
- yum -y install 不询问,找到安装包后直接安装;
检查docker是否安装(docker -v / docker version)
安装完成后可进行检查,命令是 docker -v
,如果出现下面截图的内容,就说明安装OK了
补充一点,用户第二天再玩docker的时候可能会发现,咦,docker不能用了?!有个类似的提示
这应该是电脑关机后docker服务被关闭的原因,启动电脑后server并没有启动导致的。
先说一个治标不治本的方法,依次执行下面的代码,启动server即可(上面截图上也有代码),代码执行没有反馈内容;
systemctl daemon-reload
systemctl restart docker.server
然后下面是一个治本的方法,即docker服务设置开机自启:
systemctl enable docker.service
以上,解决第二次开机后docker无法使用的问题
安装镜像(docker pull tomcat)
安装tomcat是指在docker中下载tomcat镜像,首先,搜索tomcat镜像(这一步可有可无)
docker search tomcat
接下来下载并安装最新tomcat镜像( 自带jdk )
docker pull tomcat
查看本机docker现有镜像(docker images)
删除镜像(docker rmi python)
这里可以注意一点,如下图所示,如果本机docker下载了官方镜像,名字是类似于“docker.io/python”之类的,在删除操作中只要写python这个名字就行了,不用写前面的前缀。如果有多个版本,需要加上冒号版本号,类似这样: docker rmi python:latest
,就本例来说,一个效果
启动镜像变成容器(docker run)
启动镜像(run),命名容器(–name)并设置映射端口(-p 8080:8080),效果在下面的图中
docker run -d -p 8080:8080 --name tomcat tomcat:latest
注意!如果你启动的是mysql之类的容器,很有可能会启动失败,如下图
通过日志可以看到,mysql容器的启动,除了基本的命令外,还要加上密码的初始化配置:-e MYSQL_ROOT_PASSWORD=123456
,此时才能启动成功。本文只交流基本命令,不会列出所有“特殊情况”,如果您的容器启动失败,可以先查日志,看看为什么启动失败,如果需要有其他命令,阁下可通过百度自行查询,查询到结果后希望能进行回复,我也好在本文进行后续补充。
查看容器日志(docker logs)
docker logs --since 30m 7a5377d776a0
查看容器7a5377d776a0最近30分钟的日志
查看当前启动容器和未启动容器(docker ps -a)
docker ps
docker ps -a
docker ps --all
上面的命令是查看当前启动的容器,加上 -a 即查看所有容器(all),所有容器意味着不论启动的还是未启动的容器,都将展示出来
此图就是启动容器和查看当前运行容器两条命令
注意:
- run就是启动命令;
- -d是后台启动,如果不加-d即为前台启动,我们会看到实时日志,但同时将不能进行操作了,因为ctrl+c之后容器会被终止;
- -p就是映射端口;
- –name是命名该容器,看上面截图最后一列的“NAMES”就是我们自己命名的tomcat;
- 最后的tomcat:latest只告诉docker我们启动哪个容器&哪个版本;
删除容器(docker rm 8876762efa67)
删除容器前应该先关闭容器,下面截图就是没关闭容器删除时报的错,删除命令是stop,截图中有使用方法;
以下内容尚未整理,有些杂乱,后续我会整理完毕,如有不明之处,可扣扣沟通
进入容器中
docker exec -it 96f7f14e99ab /bin/bash
将war包放到tomcat内
这是copy命令,所以注意war包路径是不是当前文件夹
docker cp CRM.war 96f7f14e99ab:/usr/local/tomcat/webapps
war包放到webapps下自动解压,此时用ifconfig
查看虚拟机IP,然后本机通过IP地址就可以访问到war包的平台了。
此时,平台可以正常演示,第一阶段告一段落,然后进行第一阶段的收尾,即将带有crm.war的容器重新打包成一个镜像,这个时候我们只要换台电脑,上传镜像,启动即可生成新平台。
打包镜像
执行命令
docker export crm_tomcat > crm_container.tar.gz
没有返回信息,然后ls可以看到打好的压缩包;
生成(导入)镜像
打包好镜像后,将压缩包移至其他主机,执行
cat crm_container.tar.gz | docker import - crm_tomcat:v2.0.3
重新导入镜像,然后启动镜像即可访问
docker命令合集
其实我感觉doc而命令并不多,查看“帮助文档” docker help
[root@localhost MMMMJchen]# docker help
Usage: docker COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
--help Print usage
-H, --host list Daemon socket(s) to connect to (default [])
-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
volume Manage volumes
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
–以下内容未完善–
创建镜像
docker build -t crm:v2.0.1 .
启动镜像
docker run my/python:v1 cal
##my/python:v1为镜像名和标签
导入导出镜像
docker save > nginx.tar nginx:latest
重启容器
docker restart xxxx