Docker 容器-进阶操作

$ docker inspect mysql

端口映射

file

$ docker run -itd -p 宿主机端口号:容器端口号

# 例子:
$ docker run -itd --name ben-nginx -p 80:80 nginx # 端口映射
$ curl 127.0.0.1:80

文件挂载

$ docker run -itd -v /宿主机/文件目录/文件名:/容器/目录/文件名

# 例子:
$ mkdir /website
$ echo 'hello world !' > /website/index.html
$ docker stop  ben-nginx
$ docker rm ben-nginx
$ docker run -itd --name=ben-nginx -p 80:80 -v /website:/usr/share/nginx/html nginx # 挂载目录
$ curl 127.0.0.1:80
// hello world !
  • 将容器的文件复制到本地:
    • $ docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名
    • $ docker cp ben-nginx:/etc/nginx/conf.d /website/nginx
  • 将本地的文件复制到容器:
    • $ docker cp /宿主机目录/文件名 容器名:/容器目录/文件名
    • $ docker cp /website/nginx ben-nginx:/etc/nginx/conf.d

容器互联

$ docker run -itd --link 要关联的容器名字:容器在被关联的容器中的别名

容器互联 - 例子:

# 以 php 与 mysql 来举例
$ docker pull mysql
$ docker pull php
$ docker images

## -e 参数是传参
$ docker run -itd --name mysql -p 3306:3306 -v /website/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
$ ls /website/mysql/

## Mysql 初始化操作
$ docker exec -it mysql /bin/bash
bash> mysql -uroot -p # 密码 123456
bash - mysql> ALTER  USER  'root'@'%'  IDENTIFIED WITH mysql_native_password  BY '123456'; # 修改 mysql 密码

## mysql创建 ###########################################################
bash - mysql> create database test; #  创建 test 数据库
bash - mysql> use test;
bash - mysql> create table if not exists user( name varchar(100) default '',age int default 0 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
bash - mysql> insert into user (name,age) values ('zhangsan', 20);
bash - mysql> insert into user (name,age) values ('lisi', 18);
bash - mysql> select * from user;
bash - mysql> exit
######################################################################
bash> exit

# 创建 php 脚本
$ vim /website/php/index.php #输入以下内容 ##################################
<?php
try{
        $pdo = new \PDO('mysql:host=mysql;dbname=test','root','123456');
        foreach($pdo->query('select * from user') as $row){
                 print_r($row);
        }
} catch (PDOException $e) {
        die("Eooro !:" . $e->getMessage() . "<br/>");
}
######################################################################

# 创建 php 互联 mysql 容器
$ docker run -itd --name=php --link mysql:mysql -v /website/php/index.php:/index.php php

# 进入 php 容器检查互联结果
$ docker exec -it php /bin/bash
bash> docker-php-ext-install pdo_mysql # 安装 php 扩展
bash> php index.php # 输出查询结果(互联成功)
讨论数量: 0

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!