Docker 基本使用

本贴最后更新于 1954 天前,其中的信息可能已经时移世异

一、Docker 基本命令

# 查看docker的版本信息 docker -v # 查看docker的基本信息,例如多少镜像,多少个容器等 docker info # 查看docker命令 docker help # 查看本地docker镜像 docker images # 启动 systemctl start docker # 守护进程重启 sudo systemctl daemon-reload # 重启docker服务 systemctl restart docker # 重启docker服务 sudo service docker restart # 关闭docker service docker stop # 关闭docker systemctl stop docker # 启动容器 docker run 镜像名:版本号 docker run hello-world:latest # 查看正在运行的容器 docker ps # 列出所有容器ID docker ps -aq # 停止所有容器 docker stop $(docker ps -aq) # 停止单个容器 docker stop 要停止的容器名 docker stop 容器ID 平滑停止 docker kill 容器ID 暴力停止 # 删除单个容器 docker rm 要删除的容器名 docker rm [-f] 容器ID 强制删除,可以删除正在运行的容器 # 删除所有容器 docker rm $(docker ps -aq) # 删除单个镜像 docker rmi 镜像名:版本号 docker rmi mysql:5.7.26 # 删除所有镜像 docker rmi $(docker images -q) # 显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID sudo docker ps -a|grep Exited|awk '{print $1}' # 查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'` # 删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了) sudo docker rm $(sudo docker ps -a -q) # 根据容器的状态,删除Exited状态的容器 sudo docker rm $(sudo docker ps -qf status=exited) # 查看最近运行的两个容器 docker ps -n 2 # 以交互的模式启动容器 docker run -i -t centos # 退出容器 exit 关闭容器并退出 ctrl+p+q 容器不关闭,只是退出 # 后台启动容器 docker run -d centos # 查看容器的日志 -t显示日志的时间,-f监视日志的增长 docker logs -t -f 容器ID # 进入已退出的容器 docker attach 容器ID # 不进入容器,但是执行容器的操作 docker exec 容器ID ls # 数据卷 /localData 宿主机里面的文件夹 /dockerData 容器里面的文件夹 docker run -it -v /localData:/dockerData centos:8.0 # 备份镜像 docker save 8.0:centos -o /home/qiang/docker/centos-8.0.tar.gz # 导入镜像 docker load -i centos-8.0.tar.gz # 修改镜像的仓库名和版本号 docker tag [IMAGE ID] [REPOSITORY名]:[TAG标识] docker tag 0f3e07c0138f docker.io/centos:8.0.1959 # 获取docker容器中的root权限,容器在执行状态 sudo docker exec -it -u root 容器ID bash 前提在run docker容器时候加上参数 --privileged=true # 查看容器的信息 docker inspect 容器ID # 进入容器 docker exec -it 容器ID /bin/bash docker exec -it 容器ID /bin/sh # 拉取镜像 docker pull 镜像名:版本号 docker pull mysql:5.7.26 # 拉取指定位置仓库的镜像 docker pull b3log/solo

二、Dockerfile

# 指定基础镜像 FROM centos:8.0 # 作者的信息 MAINTAINER 875667601@qq.com # 执行什么命令 RUN yum install -y vim # 容器对外暴露的端口 EXPOSE 80 # 进入到容器后进入到哪个目录 WORKDIR /usr/local/ # 配置环境变量 ENV JAVA_HOME=/datas/jdk1.8.0_60 ENV PATH=$JAVA_HOME/bin:$PATH # 将文件拷贝到镜像中并解压 ADD jdk-8u60-linux-x64.tar.gz /datas/ # 将文件拷贝到镜像中 ADD jdk-8u60-linux-x64.tar.gz /datas/ # 配置数据卷 VOLUME ["/containerDataVolumn"] # 容器启动时候执行的命令 CMD /bin/bash # 容器启动时候执行的命令 ENTRYPOINT ["echo", "hello"]
# 构建镜像,注意后面还有个点 docker build -t mycentos:8.0 .

三、修改 Docker 为阿里镜像

xxxxx 具体去阿里云官网看

vim /etc/docker/daemon.json { "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] } #重新加载守护进程 sudo systemctl daemon-reload #重启docker服务 sudo systemctl restart docker

四、启动和进入 MySQL

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26 docker exec -it mysql bash

五、启动参数说明

docker run --detach或-d 后台运行 --rm 容器停止或退出就删除 --network=host 容器的端口都对应主机的端口,不存在映射 --env或-e 设置系统的环境变量 --name 启动容器后的名字 --restart=always docker重启时容器也重启

六、从 Docker 容器复制文件

docker cp solo:/opt/solo/skins/nijigen /localData/solo/skins/nijigen
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 930 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...