docker常用运维指令

docker安装

  1. 卸载旧版本的docker
    yum remove docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-engine
  2. 安装所需的软件包
    yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 指定仓库
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 安装docker-ce
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install -y docker-ce docker-ce-cli containerd.io
    systemctl enable docker
    systemctl start docker
  5. 启动docker
    systemctl start docker
    systemctl stop docker
  6. 查看docker可用的版本号
    yum list docker-ce --showduplicates | sort -r
  7. 运行hello-world示例程序
    sudo docker run hello-world
  8. 开机自启动docker(8,9,10,11适用于使用yum安装的各种服务)
    systemctl enable docker
  9. 关闭自启动
    systemctl disable docker
  10. 查看已经设置开机自启动的服务
    systemctl list-unit-files | grep enable
  11. 查看正在运行的服务
    systemctl list-units --type=service
  12. 已经启动的项目,则使用update更新:
    docker update --restart=always container_id
  13. 查看容器运行状态
    docker inspect --format '{{.State.Running}}'
  14. 查看docker版本
    docker -v
  15. 删除孤立的容器
    docker container prune
  16. 删除孤立的镜像
    docker image prune -a
  17. 直接启动(常用于测试,可以立即看到错误日志信息)
    dockerd
  18. 查看容器目录和版本,很多指令和宿主一样
    cat /proc/version和ls
  19. docker卸载
    yum list installed|grep docker
    yum remove -y containerd.io.x86_64
    yum remove -y docker-ce.x86_64
    yum remove -y docker-ce-cli.x86_64
    rm -rf /var/lib/docker
    rm -rf /var/run/docker
    rm -rf /var/run/docker.sock
  20. 查询指定名称的容器
    docker ps -a| grep
  21. 查看容器的进程
    docker top
  22. 容器的资源监控,限制
    docker stats
  23. 查看资源使用情况
    docker system df
  24. 查看每个容器的资源使用情况
    docker system df -v
  25. 给运行中的docker容器添加新的端口
    docker inspect container_name | grep IPAddress # 获取容器ip
    iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000 # iptable转发端口
  26. docker默认安装位置
    /var/lib/docker,日志文件在/var/lib/docker/containers//-json.log

docker官方镜像

https://dockerhub.azk8s.cn

docker国内镜像

https://docker.mirrors.ustc.edu.cn

切换镜像

vi /etc/docker/daemon.json
在文件中写入:
建议使用阿里的镜像:https://9cpn8tt6.mirror.aliyuncs.com

{
  "registry-mirrors":["https://9cpn8tt6.mirror.aliyuncs.com"]
}

然后重启进程:
systemctl daemon-reload
systemctl restart docker

安装docker-compose

第一种方式:

  1. mkdir /usr/local/aicp/docker-compose_entry
  2. 复制docker-compose-Linux-x86_64二进制到上面新建的目录,然后重命名为docker-compose
  3. 创建软连接:sudo ln -s /usr/local/aicp/docker-compose_entry/docker-compose /usr/bin/docker-compose
  4. 验证是否安装成功:docker-compose --version

快捷方式:

curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

查看日志

docker logs 2b1b7a428627
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某时间段日志:
docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
导出日志:
docker logs --since='2020-04-16' CONTAINER_ID >> fileName.log
docker logs --since 30m CONTAINER_ID >> fileName.log

查询docker下的所有容器

docker ps -a

停止容器

docker stop 9d0fd158d060

启动容器

docker start 9d0fd158d060

重启容器

docker restart bff8097388ac

重新进入容器【运行容器】

docker attach 9d0fd158d060

进入容器【强烈建议使用】

docker exec -it 8b1be6ce3381 /bin/bash

进入容器之后查看当前目录

pwd

导出容器

docker export 9d0fd158d060 > rabbitmq.tar

导入容器快照

cat rabbitmq.tar | docker import - test/rabbitmq:v1

删除容器

docker rm -f 9d0fd158d060

删除指定名称前缀的容器

docker rm -f 1}')

删除所有容器

docker rm -f 1}')

查看容器内进程

docker top 9d0fd158d060

查看容器运行状态

docker inspect 9d0fd158d060

查看docker所有镜像

docker images

删除镜像

docker rmi ff5975823ba2

查找指定名称的镜像

docker images | grep "10.106.11.152:30280/industry.net.cloud/*" | awk '{print $3}'

删除指定前缀的所有镜像

docker rmi 3}')

删除tag为none的镜像

docker rmi 3}')

查看docker网关

docker network ls

创建docker网关

docker network create "name"

删除docker网关

docker network rm "name"

docker部署jar包

1.使用mvn clean package生成jar包,并放到服务器指定目录
2.创建Dockerfile文件,并放到上述同一个目录

FROM openjdk:8
MAINTAINER kaka
ADD access-0.0.1-SNAPSHOT.jar access.jar
EXPOSE 8080
ENTRYPOINT ["java","-Xms800m","-Xmx800m","-XX:MaxNewSize=512m","-jar","-Duser.timezone=GMT+8","access.jar"]

3.执行命令,构建docker镜像【.表示Dockerfile文件在当前目录】
docker build -t access:0619 .
4.启动容器
docker run -d --restart=always --name access -p 8080:8080 access:0615
docker run -d --restart=always --cap-add=SYS_PTRACE -v /etc/hosts:/etc/hosts --name access -p 30010:30010 access:0224

  1. 使用docker安装的java程序,无法使用jstat等jvm工具(提示pid not found)
    直接进入容器内部使用相关工具即可。
  2. 在docker容器内部使用 jmap -heap pid,提示Operation not permitted
    docker run --cap-add=SYS_PTRACE ...

docker compose安装

1.下载安装包
2.chmod +x /usr/local/aicp/docker_compose_entity/docker-compose
3.创建软链接:ln -s /usr/local/aicp/docker_compose_entity/docker-compose /usr/bin/docker-compose
4.测试是否安装成功:docker-compose --version

docker日志默认存储路径

/var/lib/docker/containers/容器ID/local-logs/

docker网络管理

docker network create backend
docker network create frontend

docker run -it --name container1 --net backend busybox
docker run -it --name container2 --net backend busybox
docker run -it --name container3 --net frontend busybox

docker network connect frontend container2

docker desktop

镜像文件存在虚拟硬盘中:C:\Users\程良普\AppData\Local\Docker\wsl

安装Docker后内网ip不通?Docker修改Docker0网桥默认ip的方法

https://cloud.tencent.com/developer/article/1607726
echo {"bip":"172.18.0.1/16"} >> /etc/docker/daemon.json

你可能感兴趣的:(docker常用运维指令)