docker常使用的命令


docker 镜像和容器命令

docker images                           # 查看镜像
docker search                           # 搜索镜像
docker pull                             # 下载镜像
docker rmi                              # 删除镜像

docker ps -a                            # 查看容器
docker start 容器ID                     # 启动容器
docker restart 容器ID                   # 重启容器
docker stop 容器ID                      # 停止容器
docker kill 容器ID                      # 强制停止当前容器
docker rm 容器ID                        # 删除容器
docker stats 容器ID                     # 查看容器所占的CPU、内存

docker logs -tf --tail 10 容器ID        # 查看10条容器运行日志
docker top 容器ID                       # 查看容器中的进程信息
docker inspect 容器ID                   # 查看镜像的元数据
docker exec -it 容器ID /bin/bash        # 进入容器内部,可以进行操作
docker attach 容器ID                    # 进入正在运行的容器内部

exit                                    # 进入容器后直接腿粗
ctrl +P +Q                              # 进入容器后不停止退出 

docker cp 容器ID:/usr/local/test.png /opt/  # 将容器内部的文件拷贝到主机上

docker 部署Nginx

docker search nginx
# 安装Nginx
docker pull nginx
# 运行Nginx容器 -d以后台方式运行 --name别名 -p映射的端口号 8888本机的端口号 80容器内部的端口号 --restart=always开机自启动
docker run -d --name nginx -p 8888:80 --restart=always nginx

docker 部署tomcat

# 安装tomcat
docker pull tomcat:9.0
# 运行tomcat容器
docker run -d --name tomcat9 -p 8080:8080 tomcat:9.0

Portainer可视界面图形面板安装

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

commit镜像

# docker commit 提交容器成为一个新的副本
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]

# 1、启动一个默认的tomcat
docker run -d -p 8080:8080 tomcat
# 2、发现这个默认的tomcat 是没有webapps应用,官方的镜像默认webapps下面是没有文件的!
docker exec -it 容器id
# 3、拷贝文件进去
# 4、将操作过的容器通过commit调教为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像。
docker commit -a="kuangshen" -m="add webapps app" 容器id tomcat02:1.0

容器数据卷

原先的数据都在容器中,如果我们删除容器的话我们的数据都会丢失。

容器数据卷就是目录的挂载,将我们容器内的目录,挂载到Linux上面

总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!

# 直接使用命令来挂载 -v /home/ceshi主机上的地址 /opt docker容器内的地址,内容相互映射(双向绑定)
docker run -it -v /home/ceshi:/opt centos /bin/bash
# 查看Mounts中是否挂载成功
docker inspect 容器ID

docker stop 停止容器失败 停止docker容器进程_tomcat


具名和匿名挂载

# 匿名挂载 -v 只有容器内路径 就是匿名挂载!
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 具名挂载 -v 卷名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
# 所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data
下
docker volume inspect juming-nginx
# 三种挂载: 匿名挂载、具名挂载、指定路径挂载
-v 容器内路径                  #匿名挂载
-v 卷名:容器内路径             #具名挂载
-v /宿主机路径:容器内路径      #指定路径挂载 docker volume ls 是查看不到的

数据卷容器

容器之间的配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!

# --volumes-from相当于java中的extends 可以实现多个容器数据共享
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v
/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01
mysql:5.7
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name
mysql02 --volumes-from mysql01 mysql:5.7

DockerFile

dockerdFile是用来构建docker镜像的文件

构建步骤:

1.编写一个dockerfile的文件

2.docker build构建为一个镜像

3.docker run运行镜像

4.docker push发布镜像(DockerHub、阿里云仓库)

基础知识

docker stop 停止容器失败 停止docker容器进程_nginx_02


注意点

1.上图每个保留关键字都是大写字母

2.执行从上到下按照顺序执行

3.#表示注释

4.每一个指令都会创建提交一个新的镜像层,并提交

docker stop 停止容器失败 停止docker容器进程_docker_03


DockerFile是面向开发的,发布项目、做镜像,都需要编写dockerFile文件。

Docker进行逐渐成为企业交付的标准

步骤:
1.开发:DockerFile:构建文件,定义了一切的步骤,源代码
2.部署:DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
3.运维:Docker容器:容器就是镜像运行起来提供服务器

DockerFile指令

FROM           # 基础镜像,一切从这里开始构建
MAINTAINER     # 镜像是谁写的,姓名+邮箱
RUN            # 镜像构建时需要运行的命令
ADD            # 镜像中添加内容 比如CentOs镜像添加JDK、tomcat
WORKDIR        # 镜像的工作目录
VOLUME         # 挂载的目录
EXPOSE         # 暴露的端口配置
CMD            # 指定这个容器启动时需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT     # 指定这个容器启动时需要运行的命令,可以追加命令
ONBUILD        # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
COPY           # 类似ADD,将文件拷贝到镜像中
ENV            # 构建的时候设置环境变量

docker stop 停止容器失败 停止docker容器进程_docker stop 停止容器失败_04


创建一个自己的CentOs

# 1.编写Dockerfile文件,创建文件mydockerfile-centos
vim mydockerfile-centos
FROM centos
MAINTAINER cheng<1204598429@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end----"
CMD /bin/bash

# 2、通过这个文件构建镜像
# 命令 docker build -f 文件路径 -t 镜像名:[tag] .
docker build -f mydockerfile-centos -t mycentos:0.1 .