docker学习最全最易理解,看完上手

随着公司项目的增多,有java,nodejs,pathon等项目的部署与开发,不可能在服务器上装有各自的环境去适应千奇百怪的开发语言开发的项目,故采用docker来管理这些项目,下面是我学习docker以来自己总结的一些实用的docker命令和干货

docker好处:

1.一次打包,到处运行,

2.环境隔离,对环境变量没有要求,全都在docker内,应用相互之间没有影响

3.启动速度快


docker安装成功后会多一个docker专用ip

yum install net-tools


docker默认仓库是dockerhub

docker常用命令:
sudo gpasswd -a 用户名 docker 将用户加入docker组

sudo groupadd docker   添加docker组

镜像:

扫描二维码关注公众号,回复: 4639621 查看本文章

docker tag 镜像id 新镜像名:标签    给镜像id对应镜像打名字与标签

docker run -it -d -p 80(映射):8080(项目) 镜像名:版本号   (容器启动生成id)

docker run -it -p 8080:8080 -v `pwd`/jdbc.properties:/usr/local/tomcat/classpath/jdbc.properties -d 192.168.9.69:5000/doctor:v1.0.3 (挂载本地文件到容器里面运行)

docker search 镜像名   在dockerhub上搜索镜像

docker ps -a  查看容器

docker push 镜像名   需登录dockerhub  docker login

docker rmi 镜像名  

docker pull 镜像名

docker run 镜像名

docker images

docker inspect 镜像id     查看镜像详情

容器:

docker create --name 容器名  已有镜像名      创建容器

docker logs -f 容器id    查看日志

docker export 容器id>test.tar(导出文件名)     导出容器

cat test.tar(文件名) | docker import - 镜像名:标签  导入容器成为镜像

docker stop 容器id

docker start 容器id

docker rm 容器id

docker exec -it 容器id bash 来到容器内部 exit退出

仓库(私有仓库是仓库,上传上来的镜像是存在仓库里,只有pull下来以后才能通过docker images看见该镜像):

docker pull registry  拉取registry镜像

docker run -e SEARCH_BACKEND=sqlalchemy -e SQLALCHEMY_INDEX_DATABASE=sqlite:////tmp/docker_registry.db -d --name registry -p 5000:5000 registry   构建docker私有仓库命令

设置成功后上传的镜像或下载的镜像必须带有域名,例如docker push host_ip:5000/镜像名  ,如果上传不成功, 通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。(find / -name docker)

但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

解决方法:

在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

{ "insecure-registries":["192.168.1.100:5000"] }

保存退出后,重启docker。systemctl restart docker 然后启动相应容器,问题解决


docker run -d --name registry_ui -p 8080:8080 -e REG1=http://<registry_ip>:5000/v1/ atcol/docker-registry-ui  本地仓库在页面展示,访问地址:http://host_ip:8080,<registry_ip>是镜像运行ip,可以

通过 docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID(容器id)获得,docker logs -f 容器id/镜像id  查看启动情况

创建镜像的方法有三种:

1.基于已有镜像的容器创建  docker commit -a "作者" -m  "提交信息" 容器id  新镜像名

2.基于本地模板的导入   docker save -o test.tar(文件名) 镜像id    镜像迁出命令(压缩镜像)        docker load  --input test.tar(文件名)  镜像载入命令(解压镜像)

3.基于dockerfile创建    docker build -t="镜像名" dockerfile文件路径(.代表当前路径)


本机和容器之间的文件传输(本机传到容器) :

docker cp 本地文件路径 容器ID全称:容器路径   比如用于往tomcat容器中加入项目

本机和容器之间的文件传输(容器传到本机) :

docker cp 容器ID全称:容器文件路径 本地路径

docker开端口使得能够通过http访问api(远程调用api,需停掉docker)

# 查看配置文件位于哪里
systemctl show --property=FragmentPath docker

#编辑配置文件内容,接收所有ip请求
sudo gedit /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376

#重新加载配置文件,重启docker daemon
sudo systemctl daemon-reload
sudo systemctl restart docker

docker官方文档上有相关说明(Configure and run Docker on various distributions),ubuntu上是可行的
sudo vi /etc/default/docker
DOCKER_OPTS="-H tcp://0.0.0.0:2375"

也可以不通过配置,直接用这种方式启动,这种方式不是以守护式的方式启动服务的,但是可以通过nohup命令挂起, 该命令的一般形式为:nohup command &
docker daemon -H=0.0.0.0:2375     dockerd -D -H 0.0.0.0:2376(会列出所有api的访问路径)
docker daemon=dockerd
Dockerfile例子

FROM tomcat:7
MAINTAINER 山姆大叔 "[email protected]"

ENV WORK_PATH /usr/local/tomcat/bin

ENV TOMCAT_CLASSPATH_FILE setclasspath.sh

RUN rm $WORK_PATH/$TOMCAT_CLASSPATH_FILE

COPY  ./$TOMCAT_CLASSPATH_FILE $WORK_PATH/

RUN mkdir -p /usr/local/tomcat/classpath
RUN mkdir -p /usr/local/tomcat/webapps/filetool

ADD ./jdbc.properties /usr/local/tomcat/classpath/
ADD ./filetool /usr/local/tomcat/webapps/filetool/
ADD ./doctor.war /usr/local/tomcat/webapps/
WORKDIR /usr/local/tomcat


EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

附:docker maven tomcat java安装  http://knight-black-bob.iteye.com/blog/2399199
 

猜你喜欢

转载自blog.csdn.net/qq_25600055/article/details/84673254