zoukankan      html  css  js  c++  java
  • Docker 容器相关命令

    查看正在运行的容器

    docker ps

    查看所有容器

    docker ps -a

    查看最后一次运行的容器

    docker ps -l

    查看停止的容器

    docker ps -f status=exited

    删除容器(正在运行容器不能删除)

    docker rm 容器名称/NAMES

    交互式容器(创建命令)

    docker run -it --name=容器名称 镜像名称:标签 /bin/bash

    守互式容器(创建命令)

    docker run -di --name=容器名称 镜像名称:标签 /bin/bash

    示例装mysql

     docker run -di --name=mysql5 -p 3307:3306 -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    • –name:容器名,此处命名为mysql
    • -e:配置信息,此处配置mysql的root用户的登陆密码
    • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
    • -d:后台运行容器,保证在退出终端后容器继续运行
    • -v   把mysql的数据在宿主机内显示,做数据备份

     示例装mssql

    docker run -di -v mssql2019:/var/opt/mssql  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=abcABC123" -p 1434:1433 --name=sql2019 -h sql2019 -d mcr.microsoft.com/mssql/server:latest

     

    在 Linux Docker 容器中还原 SQL Server 数据库

    a)注意 sql server 镜像 目前只有2017,2019 所以与本地数据库有些不兼容的。

    b)将备份文件复制到容器中 .bak文件   

    sudo docker exec -it sql1 mkdir /var/opt/mssql/backup

    sudo docker cp wwi.bak sql1:/var/opt/mssql/backup

    c)还原数据库

    连接到sql server

    sudo docker exec -it sql1 "bash"

    在容器内部使用 sqlcmd 进行本地连接。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"

    在容器中运行 sqlcmd,列出备份中的逻辑文件名和路径。 这是通过“RESTORE FILELISTONLY”Transact-SQL 语句实现的。

    RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/wwi.bak"

    调用 RESTORE DATABASE 命令,还原容器中的数据库。 为上一步中的每个文件指定新路径。

    RESTORE DATABASE WideWorldImporters FROM DISK = "/var/opt/mssql/backup/wwi.bak" WITH MOVE "WWI_Primary" TO "/var/opt/mssql/data/WideWorldImporters.mdf", MOVE "WWI_UserData" TO "/var/opt/mssql/data/WideWorldImporters_userdata.ndf", MOVE "WWI_Log" TO "/var/opt/mssql/data/WideWorldImporters.ldf", MOVE "WWI_InMemory_Data_1" TO "/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1"

    d)出现 RESTORE DATABASE successfully processed 58455 pages in 18.069 seconds (25.273 MB/sec).

    说明成功。

    注意 2019数据库 的名称不能有点(.),不然会报语法错误

     https://docs.microsoft.com/zh-cn/sql/linux/tutorial-restore-backup-in-sql-server-container?view=sql-server-ver15

       示例 安装nginx

     docker run -di -p 8016:80 --name=nginx1 -v /opt/nginx/html:/usr/share/nginx/html:rw  -v /opt/nginx/logs:/var/log/nginx --privileged -d nginx:latest

    还要复制配置文件

    登录容器

    docker exec -it 容器名称(或容器ID)  /bin/bash

    退出当前容器(并关闭)

    exit

    启动容器

    docker start 容器名称

    停止容器

    docker stop 容器名称(或容器ID)

    拷贝文件或目录

    拷贝到容器里

    docker cp 需要拷贝的文件或目录 容器名称:容器目录

    也可以将文件从容器内拷贝出来

    docker cp 容器名称:容器目录 需要拷贝的文件或目录

    查看容器IP地址

    docker inspect 容器名称(容器ID)

    也可以直接执行下面命令直接输出IP地址

    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

    宿主机目录与容器目录共享

    创建启动容器时,使用 -v参数设置共享目录

    如何宿主机目录不存在会自动创建,可以挂载多个共享目录  使用多个 -v

    docker run -di --name=容器名称 -v  宿主机绝对目录(/root/host_data):容器内目录(/root/c1_data)  镜像:tag  /bin/bash

    docker Access to the path '/proc/1/map_files' is denied.

    问题原因及解决办法

    原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:

    • 1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:

    docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash

    • 2.临时关闭selinux:

    setenforce 0

    • 3.添加selinux规则,改变要挂载的目录的安全性文本
  • 相关阅读:
    行列式运算法则
    神经元的数学模型
    Neural Network and Artificial Neural Network
    常见的23种设计模式
    Java 基本数据类型 及 == 与 equals 方法的区别
    MySQL经典编程问题
    MyEclipse配置tomcat报错
    MySQL 日期类型函数及使用
    MySQL dump文件导入
    MySQL 的两个特殊属性 unsigned与 zerofill
  • 原文地址:https://www.cnblogs.com/qingjiawen/p/15005742.html
Copyright © 2011-2022 走看看