network使用

创建网桥

  1. docker network create -d bridge mybridge

显示有所网桥

  1. docker network ls

创建容器并且加到指定网桥

  1. docker run --name mysql --network mybridge -p 3306:3306 -d mysql:5.7

查看网桥中包含的容器

  1. docker inspect mybridge

手动将容器加入到网桥

  1. # docker network connect 网桥名称 容器名称
  2. docker network connect mybridage mysql

Docker 安装

Docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上。使用Docker可以更方便低打包、测试以及部署应用程序。

Docker 环境安装

  • 删除旧版本Docker
  1. yum remove docker docker-common docker-selinux dockesr-engine -y
  • 升级系统软件
  1. yum upgrade -y
  • 安装yum-units
  1. yum install -y yum-utils device-mapper-persistent-data lvm2
  • 为yum源添加docker仓库位置
  1. #阿里云仓库
  2. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. #官方仓库
  4. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装并更新Docker
  1. # 更新
  2. yum makecache fast
  3. # 安装
  4. yum install docker-ce
  • 启动Docker
  1. systemctl start docker
  • 查看Docker状态
  1. systemctl statuc docker
  • 停止Docker
  1. systemctl stop docker
  • 重启Docker
  1. systemctl restart docker
  • Docker 容器目录
  1. /var/lib/docker/containers
  • 开启启动Docker

方式一

  1. systemctl enable docker

方式二:将docker.service服务移动到系统服务中

  1. cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
  2. systemctl daemon-reload
  3. systemctl restart docker

镜像操作

搜索镜像

  1. docker search java

下载镜像

  1. # docker pull 镜像名字:tag
  2. docker pull java:8

镜像列表(已经下载到本地的镜像列表)

  1. docker images

删除指定镜像

docker镜像可以根据镜像ID、镜像名字:tag 删除

  1. #docker rmi 镜像ID、镜像名字
  2. docker rmi java:8

强制删除镜像

  1. # docker rmi -f 镜像ID、镜像名字
  2. docker rmi -f java:8

删除所有没有被容器引用的镜像

  1. docker rmi `docker images | grep none | awk '{print $3}'`

强制删除所有镜像

  1. docker rmi -f $(docker images)

打包镜像

  1. # -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile文件
  2. docker build -t tngd/tngd-admin:1.0-SNAPSHOT .

推送镜像

  1. # 登录Docker Hub
  2. docker login
  3. # 给本地镜像打标签为远程仓库名称
  4. docker tag spring/myspring-admin:1.0-SNAPSHOT springdocker/myspring-admin:1.0-SNAPSHOT
  5. # 推送到远程仓库
  6. docker push spring/myspring-admin:1.0-SNAPSHOT

容器操作

新建并启动容器

-d 表示后台运行

—name 容器名字

—privileged 设置权限

-v 挂载宿主机和容器目录(”:”前为宿主机目录,后为容器目录)

-e设置容器参数

  1. docker run -p 3306:3306 --name mysql \
  2. --privileged=true \
  3. --network host \
  4. -v /usr/local/mysql/log:/var/log/mysql \
  5. -v /usr/local/mysql/data:/var/lib/mysql \
  6. -v /usr/local/mysql/conf:/etc/mysql \
  7. -e MYSQL_ROOT_PASSWORD=root \
  8. -d docker.io/mysql:5.7

容器和宿主机文件拷贝

将容器中的文件拷贝到宿主机

docker cp [容器名字]:[容器中文件路径] [宿主机路径]

  1. docker cp redis:/etc/redis/redis.conf /etc/redis/

宿主机文件拷贝到容器

docker cp [宿主机文件路径] [容器名字]:[容器路径]

  1. docker cp /etc/redis/redis.conf redis:/etc/redis/

进入容器

  1. 查询出容器的 pid
  1. docker inspect --format "{{.State.Pid}}" $ContainerName
  1. 根据容器的pid进入容器
  1. nsenter --target "$Pid" --mount --uts --ipc --net --pid

删除容器

  1. 删除指定容器
  1. docker rm $ContainerName
  1. 按通配符删除容器,比如删除以my-开头的容器
  1. docker rm 'docker ps -a | grep my-* | awk '${print $1}''
  1. 强制删除所有容器
  1. docker rm -f $(docker ps -a -q)

修改容器启动方式

restart 参数有none、always

  1. docker container update --restart=always

辅助功能

调整容器位置

  1. 查看Docker镜像存放位置
  1. docker info | grep 'Docker Root Dir'
  1. 关闭Docker服务
  1. systemctl stop docker
  1. 将原镜像目录移动到目标目录
  1. mv [原目录] [目标目录]
  2. mv /var/lib/docker /docker/data
  1. 建立软连接
  1. ln -s [目标目录] [原目录]
  2. ln -s /docker/data /var/lib/docker

Docker 容器清理

  1. 查看Docker占用磁盘空间情况
  1. docker system df
  1. 删除所有关闭的容器
  1. docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
  1. 删除所有没有Tag的镜像
  1. docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
  1. 删除所有数据卷(即无用的 volume):
  1. docker volume rm $(docker volume ls -qf dangling=true)