目录

docker系列-docker命令

bookandmusic
bookandmusic 2022年04月17日  ·  阅读 13

容器

生命周期

创建并启动容器

  • 基于mysql 5.7版本的镜像
  • --name: 指定容器名字为mysql3307
  • -p: 端口映射,将容器内的3306的端口号与本地主机的3307进行映射
  • -v: 路径映射,将容器内的/var/lib/mysql/与本地主机的~/mysql/进行映射
  • -d: 代表后台运行容器,返回容器ID
  • -i: 代表需要进行容器内,进入交互模式
  • -t: 指定进入模式时,所使用的终端工具,一般it是绑定使用

容器的名字和ID都是唯一的,对容器进行操作时,通过容器名或ID都可以找到唯一的容器

docker run -itd --name="mysql3307" -p 3307:3306 -v ~/mysql3307/conf/:/etc/mysql/ -v ~/mysql3307/data:/var/lib/mysql -v ~/mysql3307/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD="mysql"  mysql:5.7  /bin/bash

创建容器

docker create --name="mysql3308" -p 3308:3306 -v ~/mysql3308/conf/:/etc/mysql/ -v ~/mysql3308/data:/var/lib/mysql -v ~/mysql3307/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD="mysql"  mysql:5.7

启动容器

docker start mysql3308
# docker start 0bf12834fcf2e55

停止容器

docker stop mysql3308

重启容器

一般是修改容器内的配置文件时,需要重启容器

docker restart mysql3308

杀掉一个正在运行的容器

docker kill -s KILL mysql3308

删除容器

  • 可以跟多个容器ID实现批量删除
  • -f: 强制删除,即使容器正在运行。默认只能删除停止的容器
docker rm -f mysql3307 mysql3308

进入正在运行的容器

  • 跟进入容器内使用的终端
  • 还可以跟容器内的命令执行
docker exec -it mysql3306 /bin/bash
docker exec -it mysql3306 mysql -uroot -p

连接容器内的数据库,还可以通过网络连接

mysql -u root -h 127.0.0.1 -P 3306 -p
# 注意:此时的地址不能写localhost

容器操作

查看容器

  • 查看当前主机的容器列表
  • -a: 查看所有容器,包括已经停止的容器。默认只能查看正在运行的容器
    -q: 静默查看容器列表,即只查看容器ID
docker ps -qa

查看容器中运行的进程信息

docker top mysql3306

查看容器日志

  • --since: 指定日志的开始时间
  • --tail: 指定最新的n条日志
  • -f: 指定跟踪日志输出
docker logs --since="2022-04-12" --tail=10 -f mysql3306

查看容器的端口映射情况

docker port mysql3306

文件系统

将本地文件拷贝到容器内

docker cp ~/blog myblog:/var/www/blog

将容器内的文件拷贝到本地

docker cp myblog:/var/www/blog ~/blog

根据容器创建新的镜像

  • 根据容器名mysql3306,生成的镜像名为mysql3306,标签为5.7
  • -a: 指定镜像的作者
  • -m:生成镜像的说明信息
docker commit -a "liusf" -m "mysql3306" mysql3306 mysql3306:5.7

镜像

镜像仓库

登录镜像仓库

  • 不指定仓库地址,即默认为docker hub的地址
docker login -u username -p password
# docker login -u username -p password http://other_docker_hub.com

退出镜像仓库

docker logout
# docker logout http://other_docker_hub.com

搜索镜像

  • 指定搜索的关键字
  • -f--filter: 指定过滤条件, is-official(官方标记,是否为官方出品)、is-automated(自动构建标记,是否为自动构建)、stars(点赞数, 至少多少个点赞)
  • --format: 指定输出方式, .Name(镜像名)、.Description(描述)、.StarCount(点赞数)、.IsOfficial(官方标记)、.ISAutomated(自动构建标记)
docker search --filter is-official=true --filter stars=3 --format "table {{.Name}}\t{{.IsAutomated}}\t{{.IsOfficial}}" mysql

automated: 自动化构建, 就是使用Docer Hub连接一个包含Dockfile文件的Github仓库或者BitBucket仓库,Docker Hub则会自动构建镜像,通过这种方式构建的镜像则会被标记为Automated Build,也称之为受信构建(Trusted Build),这种方式构建的镜像,其他人可以自由查看Dockerfile内容;同时,由于构建过程是自动的,所以可以确保仓库的镜像都是最新的。

下载镜像

  • 不指定仓库地址,即默认为docker hub的地址
  • 不指定镜像标签,即默认为最新标签
  • -a:下载远程仓库所有REPOSITORY符合条件的镜像
docker pull python:3.7
docker pull python
docker pull -a python
# docker pull https://registry_host:5000/path/python:last

上传镜像

  • 不指定仓库地址,即默认为docker hub的地址
docker push python:v1
# docker push https://registry_host:5000/path/python:last
分类: Linux
标签: docker