docker 查看所有容器_docker学习笔记

docker学习笔记

1 docker环境安装

1.1 安装yum-utils

   yum install -y yum-utils device-mapper-persistent-data lvm2

1.2 为yum源添加docker仓库位置

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

1.3 安装docker

yum install docker-ce

1.4 启动docker

 systemctl start docker

2 docker镜像常用命令

2.1 搜索镜像

 docker search mysql

2.2 查找镜像支持的版本

      进入docker hub的官网,地址为:[https://hub.docker.com](https://hub.docker.com/),然后搜索需要的镜像
97c2a2aaa1e38b60a7def15683a5b1ed.png
880a213a2ab96d15c85bb63b30c7f304.png

2.3 下载镜像

docker pull mysql:5.7

2.4 列出镜像

 docker images

2.5 删除镜像

•指定名称删除镜像:

 ```bash   docker rmi mysql:5.7 ```

•指定名称删除镜像(强制):

  docker rmi -f mysql:5.7

•删除所有没有引用的镜像

   docker rmi  $(docker images | grep none | awk '{print $3}')

•强制删除所有的镜像

docker rmi -f $(docker images)

3 Docker容器常用命令

3.1 新建并启动容器

  docker run -p 3306:3306 --name mysql -d mysql:5.7
  • 参数解释

    -p  指定端口映射,格式为:hostPort:containerPort

    --name选项:指定运行后容器的名字为mysql,之后可以通过名字来操作容器

    -d 表示后台运行

3.2 列出运行中的容器

  docker ps

3.3 列出所有的容器

 docker ps -a

3.4 停止容器

 docker stop containerName(containerId)
   例如:docker stop mysql or docker stop b417ac5a44b0

3.5 强制停止所有的容器

  docker kill containerName(containerId) 
      例如:docker kill mysql or docker kill b417ac5a44b0

3.6 启动停止的容器

 docker start containerName(container)
    例如:docker start mysql docker start b417ac5a44b0

3.7 进入容器

•先查询出容器的pid

   docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)

•根据容器的pid进入容器

 nsenter --target 11239  --mount --uts --ipc --net --pid

3.8 删除容器

•删除指定容器

   docker rm $ContainerName(或者$ContainerId)

•按名称删除容器

  docker rm `docker ps -a | grep mysql* | awk '{print $1}'`

•强制删除所有的容器

docker rm -f $(docker ps -a -q)

3.9 查看容器的日志

•查看当前容器日志

  docker logs containerName(containerId)

•动态查看当前容器日志

docker logs containerName(containerId) -f

4.0 查看容器的ip地址

    docker inspect --format '{{ .NetworkSettings.IPAddress }}'  containerName(containerId)

4.1 修改容器的启动方法

docker container update --restart=always $ContainerName

4.2 启动容器时指定时区

  docker run -p 80:80 --name nginx \ -e TZ="Asia/Shanghai" \ -d nginx:1.17.0

4.3 在宿主机查看docker容器 cpu,内存,网络,io使用情况

•查看指定容器情况

    docker stats  containerName(containerId)

614d54706b20ff365224f681033988c2.png

•查看所有容器情况 docker stats -a

•查看docker 磁盘使用情况

docker system df
a01af1e4eaac0596d51edc0700d9312d.png

4.4 进入docker容器内部的bash

  docker exec -it $ContainerName /bin/bash

•使用root账户进入docker容器内部的bash

    docker exec -it --user root $ContainerName /bin/bash

4.5 创建外部网络

 docker network create -d bridge my-bridge-network

4.6 修改docker镜像存放的位置

•查看docker镜像存放的位置

 docker info | grep "Docker Root Dir"

•关闭docker服务

   systemctl stop docker

•移动目录到目标路径

  mv /var/lib/docker /mydata/docker

•建立软链接

   ln -s /mydata/docker /var/lib/docker

4 使用Dockerfile为SpringBoot应用构建Docker镜像

4.1 Dockfile常用指令

ADD: 用于复制文件,格式: ADD <Src> <DEST>
 #将当前目录下的springboot.jar包复制到docker容器的/目录下   ADD  springboot.jar /springboot.jar
ENTRYPOINT :  指定docker容器启动时执行的命令,格式:ENTRYPOINT ["executable", "param1","param2"]          
  #指定docker容器启动时运行jar包     ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"]
ENV: 用于设置环境变量,格式:ENV              
   # mysql运行时设置root密码   ENV MYSQL_ROOT_PASSWORD root
EXPOSE:  声明需要暴露的端口(只声明不会打开端口),格式:EXPOSE ...
  #声明服务运行在8080端口   EXPOSE 8080
FROM: 指定所需依赖的基础镜像,格式:FROM :<tag>
# 该镜像需要依赖的java8的镜像FROM java:8  
MAINTAINER:  指定维护者的名字,格式:MAINTAINER    
MAINTAINER ZHAOZUOWEN
RUN: RUN RUN ["executable", "param1","param2"...]        
#在容器构建过程中需要在/目录下创建一个mall-tiny-docker-file.jar文件RUN bash -c 'touch /mall-tiny-docker-file.jar'

4.2 编写DOCKfile文件

•在springboot项目里新建一个Dockerfile文件

# 该镜像需要依赖的基础镜像FROM java:8# 将当前目录下的jar包复制到docker容器的/目录下ADD douyin-1.0-SNAPSHOT.jar /douyin-1.0-SNAPSHOT.jar# 运行过程中创建一个douyin-1.0-SNAPSHOT.jar文件RUN bash -c 'touch /douyin-1.0-SNAPSHOT.jar'# 声明服务运行在8080端口EXPOSE 8080# 指定docker容器启动时运行jar包ENTRYPOINT ["java", "-jar","/douyin-1.0-SNAPSHOT.jar"]# 指定维护者的名字MAINTAINER zhaozuowen

•使用maven打包应用

d99eabda0cfcd8af76561fab5fe0f3db.png
image-20200810180327343

4.3 将应用jar包及Dockerfile文件上传到linux服务器:

4.4 在linux上构建docker镜像

    # -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的    Dockerfile docker build -t mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT .

4.5 运行应用

  docker run -p 8080:8080 --name douyin \-v /etc/localtime:/etc/localtime \-v /mydata/app/dockfile/logs:/var/logs \-d wenzi/douyin:1.0-SNAPSHOT

5 使用maven插件为springboot应用构建docker镜像

5.1 DOCKER REGISTER构建

DOCKER REGISTER 2.0搭建
           docker run -d -p 5000:5000 --restart=always --name registry2 registry:2  

如果遇到镜像下载不下来的情况,需要修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值,然后重启docker服务:

     {  "registry-mirrors": ["https://registry.docker-cn.com"] }

5.2 DOCKER开启远程api

5.2.1 用vim编辑器修改docker.service文件
    vi /usr/lib/systemd/system/docker.service
                                                   需要修改的部分:         
 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
                       修改后的部分:
  ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
5.2.2 让docker支持http上传镜像
  echo '{ "insecure-registries":["192.168.3.101:5000"] }' > /etc/docker/daemon.json
5.2.3 修改配置后需要使用如下命令使配置生效
  systemctl daemon-reload
5.2.4 重新启动Docker服务
     systemctl stop docker systemctl start docker
5.2.5 开启防火墙的Docker构建端口
     firewall-cmd --zone=public --add-port=2375/tcp --permanent firewall-cmd --reload

5.3 使用maven构建docker镜像

5.3.1 在应用的pom.xml文件中添加docker-maven-plugin的依赖
    com.spotify    docker-maven-plugin    1.1.0                        build-image            package                            build                                    wenzi/${project.artifactId}:${project.version}        http://192.168.0.100:2375        java:8        ["java", "-jar","/${project.build.finalName}.jar"]                                            /                ${project.build.directory}                ${project.build.finalName}.jar                        

相关配置说明:

•executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;•imageName:用于指定镜像名称,wenzi是仓库名称,${project.artifactId}为镜像名称,${project.version}为仓库名称;•dockerHost:打包后上传到的docker服务器地址;•baseImage:该应用所依赖的基础镜像,此处为java;•entryPoint:docker容器启动时执行的命令;•resources.resource.targetPath:将打包后的资源文件复制到该目录;•resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;•resources.resource.include:需要复制的文件,打包好的应用jar包。

5.3.2 修改application.yml,将localhost改为db

可以把docker中的容器看作独立的虚拟机,应用访问localhost自然会访问不到mysql,docker容器之间可以通过指定好的服务名称db进行访问,至于db这个名称可以在运行应用容器的时候指定。

spring:  datasource:    url: jdbc:mysql://db:3306/douyin?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai    username: root    password: root
5.3.3 使用IDEA打包项目并构建镜像

注意:依赖的基础镜像需要先行下载,否则会出现构建镜像超时的情况,比如我本地并没有java8的镜像,就需要先把镜像pull下来,再用maven插件进行构建。

执行maven的package命令:

d99eabda0cfcd8af76561fab5fe0f3db.png

5.4 运行douyin项目

5.4.1 启动mysql服务
使用docker命令启动:
• docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

•进入运行mysql的docker容器:

docker exec -it mysql /bin/bash

•使用mysql命令打开客户端:

mysql -uroot -proot --default-character-set=utf8

•修改root帐号的权限,使得任何ip都能访问:

grant all privileges on *.* to 'root'@'%'

•创建douyin数据库:

create database douyin character set utf8

•将douyin.sql文件拷贝到douyin容器的/目录下:

docker cp /mydata/douyin.sql mysql:/

•将sql文件导入到数据库:

use douyin; source /douyin.sql;
5.4.2 启动应用

•使用docker命令启动(--link表示应用可以用db这个域名访问mysql服务):

 docker run -p 8080:8080 --name douyin \ --link mysql:db \ -v /etc/localtime:/etc/localtime \ -v /mydata/app/docker/logs:/var/logs \ -d wenzi/douyin:1.0.0-SNAPSHOT

•开启8080端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload

6 使用Docker Compose部署SpringBoot应用

Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。

6.1 安装docker compose

6.1.1 下载docker compose
   curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
6.1.2 修改该文件的权限为可执行
   chmod +x /usr/local/bin/docker-compose
6.1.3查看是否已经安装成功
           docker-compose --version
6.1.4 使用Docker Compose的步骤

•使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用;•使用docker-compose.yml定义需要部署的应用程序服务,以便执行脚本一次性部署;•使用docker-compose up命令将所有应用服务一次性部署起来。

6.2 docker-compose.yml常用命令

Image
                      指定运行的镜像名称
          # 运行的是mysql5.7的镜像          image: mysql:5.7
container_name
           配置容器名称
 # 容器名称为mysql   container_name: mysql
Ports
            配置宿主机和容器端口映射
  # 将宿主机的3306端口映射到容器的3306端口        ports:           - 3306:3306
volumes
            将宿主机的文件或目录挂载到容器中(HOST:CONTAINER)
    # 将外部文件挂载到myql容器中     volumes:        - /mydata/mysql/log:/var/log/mysql        - /mydata/mysql/data:/var/lib/mysql        - /mydata/mysql/conf:/etc/mysql
environment
           配置环境变量
 # 设置mysqlroot帐号密码的环境变量  environment:      - MYSQL_ROOT_PASSWORD=root
links
         连接其他容器的服务(SERVICE:ALIAS)
   #可以以database为域名访问服务名称为db的容器    links:       - db:database

6.3 Docker Compose常用命令

6.3.1 构建、创建、启动相关容器
# -d表示在后台运行docker-compose up -d
6.3.2 指定文件启动
docker-compose -f docker-compose.yml up -dCopy to clipboardErrorCopied
6.3.3 停止所有相关容器
docker-compose stopCopy to clipboardErrorCopied
6.3.4 列出所有容器信息
docker-compose ps

6.4 使用Docker Compose 部署应用

6.4.1 编写docker-compose.yml文件

Docker Compose将所管理的容器分为三层,工程、服务及容器。docker-compose.yml中定义所有服务组成了一个工程,services节点下即为服务,服务之下为容器。容器与容器之间可以以服务名称为域名进行访问,比如在mall-tiny-docker-compose服务中可以通过jdbc这个地址来访问db这个mysql服务。

version: '3'services:  # 指定服务名称  db:    # 指定服务使用的镜像    image: mysql:5.7    # 指定容器名称    container_name: mysql    # 指定服务运行的端口    ports:      - 3306:3306    # 指定容器中需要挂载的文件    volumes:      - /mydata/mysql/log:/var/log/mysql      - /mydata/mysql/data:/var/lib/mysql      - /mydata/mysql/conf:/etc/mysql    # 指定容器的环境变量    environment:      - MYSQL_ROOT_PASSWORD=root  # 指定服务名称  douyin-docker-compose:    # 指定服务使用的镜像    image: wenzi/douyin:1.0-SNAPSHOT    # 指定容器名称    container_name: douyin    # 指定服务运行的端口    ports:      - 8080:8080    # 指定容器中需要挂载的文件    volumes:      - /etc/localtime:/etc/localtime      - /mydata/app/docker-compose/logs:/var/logs
6.4.2 使用maven插件构建douyin镜像
         ![image-20200811140237058](docker学习笔记.assets/image-20200811140237058.png)
6.4.3 运行Docker Compose命令启动所有服务
       先将docker-compose.yml上传至Linux服务器,再在当前目录下运行如下命令:
docker-compose up -d
  • 17
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值