Docker_06 容器-進階操作

GucciLee發表於2019-10-22

$ docker inspect mysql

埠對映

教程:Docker_05 容器-進階操作

$ 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 # 輸出查詢結果(互聯成功)

老哥以後是要做 CTO 的人,這些技術怎麼能不會呢?

相關文章