目录

docker笔记

目录

打开docker服务

systemctl start docker

docker一直在后台运行

`docker run -dit judge:0.2 /bin/bash`

复制

`docker cp 容器id:容器内路径 目的主机路径` `docker cp /root/testPython/test01/ $(docker ps -q):/usr/src/app` `docker cp /root/testPython/judge_file_o.py $(docker ps -q):/usr/src/app/test01/judge`

容器外执行命令

`docker exec -it $(docker ps -q) /bin/bash -c "python /usr/src/app/test01/judge/judge_file_o.py"`

进入正在运行的容器

`docker exec -it $(docker ps -q) /bin/bash` `docker attach 容器id`

显示容器编号

`$(docker ps -q)`

将文件拷贝出来

`docker cp $(docker ps -q):/usr/src/app/test01/user/tmp.txt /root/testPython/`

强制删除容器

`docker rm -f $(docker ps -q)`

停止容器

docker stop 容器ID或容器名

优雅的停止容器

删除镜像

docker rmi -f 镜像id
docker rmi -f $(docker images -aq)

MySql同步数据

拉取

docker search mysql
docker pull mysql:5.7

运行

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql01 mysql:5.7

-d后台运行

3306是容器外端口

-v数据挂载;本地:容器

要配密码,怎么配?在dockerhub上帮助文档

容器名

所选镜像

python操作数据库

`pip install mysqlclient`

使用mysqlclient,要自己写sql语句

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )

数据库权限

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
 mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息

Dockerfile

FROM # 基础镜像,当前新镜像是基于哪个镜像的 
MAINTAINER # 镜像维护者的姓名混合邮箱地址 
RUN # 容器构建时需要运行的命令 
EXPOSE # 当前容器对外保留出的端口 
WORKDIR # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 
ENV # 用来在构建镜像过程中设置环境变量 
ADD # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 
COPY # 类似ADD,拷贝文件和目录到镜像中! 
VOLUME # 容器数据卷,用于数据保存和持久化工作 
CMD # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最 后一个生效! 
ENTRYPOINT # 指定一个容器启动时要运行的命令!和CMD一样 
ONBUILD # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的 ONBUILD被触发