Docker及容器常用操作
输入 docker 可以查看Docker的命令用法,输入 docker COMMAND --help 查看指定命令详细用法
查找镜像:
docker search 关键词
#搜索docker hub网站镜像的详细信息
下载镜像:
docker pull 镜像名:TAG
# Tag表示版本,有些镜像的版本显示latest,为最新版本
查看镜像:
docker images
# 查看本地所有镜像
删除镜像: docker rmi -f 镜像ID或者镜像名:TAG # 删除指定本地镜像 # -f 表示强制删除
删除所有镜像
docker rmi $(docker images -q)
获取元信息:
docker inspect 镜像ID或者镜像名:TAG
# 获取镜像的元信息,详细信息
容器常用操作
对tomcat进行挂载
docker cp tom:/usr/local/tomcat/webapps/ROOT/index.jsp /home/tomcat/index.jsp
docker run --rm -it custom 启动命令
docker run --name tomcat -p 8080:8080 -v /home/tomcat/index.jsp:/usr/local/tomcat/webapps/ROOT/index.jsp --restart=always -d tomcat
创建本地路径并挂载Docker内数据 mkdir -p /home/data/mysql/conf && mkdir -p /home/data/mysql/data # 将容器的配置复制到服务器 docker cp mysql:/etc/mysql/my.cnf /home/data/mysql/conf/my.cnf # 修改字符集 vim /home/data/mysql/conf/my.cnf character-set-server=utf8 重新创建容器 docker run --name mysql -p 3306:3306 -v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/data/mysql/data:/var/lib/mysql -v /home/data/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=123456 --restart=always -d mysql:8.0.17 查看已挂载的卷就是指定的目录了

运行: docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG # --name 指定容器名,可自定义,不指定自动命名 # -i 以交互模式运行容器 # -t 分配一个伪终端,即命令行,通常-it组合来使用 # -p 指定映射端口,讲主机端口映射到容器内的端口 # -d 后台运行容器 # -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
# 挂载
# docker run --name nginx81 -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx
容器列表: docker ps -a -q # docker ps查看正在运行的容器 # -a 查看所有容器(运行中、未运行) # -q 只查看容器的ID
启动容器:
docker start 容器ID或容器名
停止容器:
docker stop 容器ID或容器名
可使用 docker kill命令发送 SIGKILL信号来强制停止容器
docker kill f0b1c8ab3633
删除容器: docker rm -f 容器ID或容器名 # -f 表示强制删除
查看日志:
docker logs 容器ID或容器名
进入正在运行容器: docker exec -it 容器ID或者容器名 /bin/bash # 进入正在运行的容器并且开启交互模式终端 # /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动 bash。 # 也可以用docker exec在运行中的容器执行命令
拷贝文件:
docker cp 主机文件路径 容器ID或容器名:容器路径 #主机中文件拷贝到容器中
docker cp 容器ID或容器名:容器路径 主机文件路径 #容器中文件拷贝到主机中
获取容器元信息:
docker inspect 容器ID或容器名
查看容器日志
docker container logs f0b1c8ab3633
查看容器里的进程
docker top f0b1c8ab3633
容器内安装vim、ping、ifconfig等指令 apt-get update apt-get install vim #安装vim apt-get install iputils-ping #安装ping apt-get install net-tools #安装ifconfig
容器与宿主机相互复制文件 从容器里面拷文件到宿主机:
docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径 如:docker cp 7aa5dc458f9d:/etc/nginx/nginx.conf /mydata/nginx 从宿主机拷文件到容器里面:
docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径
最后附一个查看容器资源使用情况的指令:
docker stats # 返回容器资源的实时使用情况,1秒刷新一次
docker stats --no-stream # 返回容器当时的资源使用情况

默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容: [CONTAINER]:以短格式显示容器的 ID。 [CPU %]:CPU 的使用情况。 [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。 [MEM %]:以百分比的形式显示内存使用情况。 [NET I/O]:网络 I/O 数据。 [BLOCK I/O]:磁盘 I/O 数据。 [PIDS]:PID 号。 注意:容器的内存使用最大限制默认可以接近宿主机的物理内存,可以通过"-m"参数限制容器可以使用的最大内存: docker run -m 500M redis #限制容器的最大使用内存为500M
实例:mysql
docker pull mysql:5.7 #创建三个要挂载的目录 mkdir -p /my/mysql/conf mkdir -p /my/mysql/data mkdir -p /my/mysql/logs #复制文件 并修改字符 docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /my/mysql/conf/ vi /my/mysql/conf/mysqld.conf character-set-server=utf8 #最终启动命令 docker run \ --name mysql \ -p 3306:3306 \ -v /my/mysql/conf:/etc/mysql/mysql.conf.d/ \ -v /my/mysql/data:/var/lib/mysql \ -v /my/mysql/logs:/logs \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7

浙公网安备 33010602011771号