docker系列-docker命令

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