Docker QuickStart
来自Jack's Lab
(版本间的差异)
(→Install) |
(→Quick Start) |
||
第19行: | 第19行: | ||
在 https://cloud.docker.com 免费注册一个 Docker 账号 | 在 https://cloud.docker.com 免费注册一个 Docker 账号 | ||
+ | |||
+ | |||
+ | 登录 docker hub: | ||
<source lang=bash> | <source lang=bash> | ||
第26行: | 第29行: | ||
Password: | Password: | ||
Login Succeeded | Login Succeeded | ||
+ | </source> | ||
− | comcat@icamgo:~$ docker search | + | |
+ | 搜索镜像 docker search | ||
+ | |||
+ | <source lang=bash> | ||
+ | comcat@icamgo:~$ docker search mysql | ||
NAME DESCRIPTION STARS OFFICIAL AUTOMATED | NAME DESCRIPTION STARS OFFICIAL AUTOMATED | ||
− | + | mysql MySQL is a widely used, open-source relati... 8741 [OK] | |
− | + | mariadb MariaDB is a community-developed fork of M... 3063 [OK] | |
− | + | mysql/mysql-server Optimized MySQL Server Docker images. Crea... 647 [OK] | |
− | + | centos/mysql-57-centos7 MySQL 5.7 SQL database server 63 | |
− | + | centurylink/mysql Image containing mysql. Optimized to be li... 61 [OK] | |
− | + | mysql/mysql-cluster Experimental MySQL Cluster Docker images. ... 54 | |
− | + | deitch/mysql-backup REPLACED! Please use http://hub.docker.com... 41 [OK] | |
− | + | bitnami/mysql Bitnami MySQL Docker Image 35 [OK] | |
− | + | tutum/mysql Base docker image to run a MySQL database ... 34 | |
− | + | schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic back... 28 [OK] | |
− | + | prom/mysqld-exporter 23 [OK] | |
− | + | linuxserver/mysql A Mysql container, brought to you by Linux... 22 | |
− | centos/ | + | centos/mysql-56-centos7 MySQL 5.6 SQL database server 16 |
− | + | circleci/mysql MySQL is a widely used, open-source relati... 15 | |
− | + | mysql/mysql-router MySQL Router provides transparent routing ... 13 | |
− | + | arey/mysql-client Run a MySQL client from a docker container 12 [OK] | |
− | + | imega/mysql-client Size: 36 MB, alpine:3.5, Mysql client: 10.... 8 [OK] | |
− | + | openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 ima... 6 | |
− | + | yloeffler/mysql-backup This image runs mysqldump to backup data u... 6 [OK] | |
− | + | fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron t... 4 [OK] | |
− | + | genschsa/mysql-employees MySQL Employee Sample Database 2 [OK] | |
− | + | ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK] | |
− | ansibleplaybookbundle/ | + | jelastic/mysql An image of the MySQL database server main... 1 |
− | + | monasca/mysql-init A minimal decoupled init container for mysql 0 | |
− | + | widdpim/mysql-client Dockerized MySQL Client (5.7) including Cu... 0 [OK] | |
</source> | </source> | ||
+ | |||
+ | |||
+ | 拉取官方 mysql docker 镜像: | ||
+ | |||
+ | <source lang=bash> | ||
+ | |||
+ | </source> | ||
+ | |||
+ | |||
+ | |||
<br><br> | <br><br> |
2019年10月31日 (四) 12:52的版本
1 Install
Ubuntu:
$ sudo apt-get install docker.io docker-compose $ sudo usermod -aG docker $USER
Windows:
2 Quick Start
在 https://cloud.docker.com 免费注册一个 Docker 账号
登录 docker hub:
comcat@icamgo:~$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: noduino Password: Login Succeeded
搜索镜像 docker search
comcat@icamgo:~$ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 8741 [OK] mariadb MariaDB is a community-developed fork of M... 3063 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 647 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 63 centurylink/mysql Image containing mysql. Optimized to be li... 61 [OK] mysql/mysql-cluster Experimental MySQL Cluster Docker images. ... 54 deitch/mysql-backup REPLACED! Please use http://hub.docker.com... 41 [OK] bitnami/mysql Bitnami MySQL Docker Image 35 [OK] tutum/mysql Base docker image to run a MySQL database ... 34 schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic back... 28 [OK] prom/mysqld-exporter 23 [OK] linuxserver/mysql A Mysql container, brought to you by Linux... 22 centos/mysql-56-centos7 MySQL 5.6 SQL database server 16 circleci/mysql MySQL is a widely used, open-source relati... 15 mysql/mysql-router MySQL Router provides transparent routing ... 13 arey/mysql-client Run a MySQL client from a docker container 12 [OK] imega/mysql-client Size: 36 MB, alpine:3.5, Mysql client: 10.... 8 [OK] openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 ima... 6 yloeffler/mysql-backup This image runs mysqldump to backup data u... 6 [OK] fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron t... 4 [OK] genschsa/mysql-employees MySQL Employee Sample Database 2 [OK] ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK] jelastic/mysql An image of the MySQL database server main... 1 monasca/mysql-init A minimal decoupled init container for mysql 0 widdpim/mysql-client Dockerized MySQL Client (5.7) including Cu... 0 [OK]
拉取官方 mysql docker 镜像:
3 Pull image from docker hub
comcat@aisrv:/work/api.noduino/database$ docker pull mysql/mysql-server:5.5 5.5: Pulling from mysql/mysql-server 33a3a5e469a8: Pull complete afd5b2a51aab: Pull complete d3fcc85ceffc: Pull complete 9c58bb63c013: Pull complete Digest: sha256:db8aecdf439d2a5dcc509cca80deabb28a8b7370725d0c71f46957d0e257ffd6 Status: Downloaded newer image for mysql/mysql-server:5.5 comcat@aisrv:/work/api.noduino/database$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE emqwebhook 20170505 1a2e9eb03836 44 hours ago 33.65 MB <none> <none> 3fc8aea36f2d 46 hours ago 3.994 MB nginx latest 46102226f2fd 10 days ago 109.4 MB emqttd-docker-v2.1.2 latest a799525a9a73 2 weeks ago 34.3 MB mysql/mysql-server 5.5 89418f92e739 3 weeks ago 168.9 MB alpine 3.5 4a415e366388 9 weeks ago 3.987 MB
4 Run container
comcat@aisrv:/work/api.noduino/database$ docker run --name cos-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server:5.5 beb67efbda72bb356a2630624eff965e89d5477cf7f596176fa45cb036d7db75 comcat@aisrv:/work/api.noduino/database$ docker exec -it cos-mysql mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.55 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> comcat@aisrv:/work/api.noduino/database$ docker exec -it cos-mysql bash
5 RM container
comcat@aisrv:/work/api.noduino/database$ docker ps -a comcat@aisrv:/work/api.noduino/database$ docker rm beb67efbda72 beb67efbda72 comcat@aisrv:/work/api.noduino/database$ docker pull mysql/mysql-server:5.6 comcat@aisrv:/work/api.noduino/database$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 987ab5054b83 mysql/mysql-server:5.6 "/entrypoint.sh mysql" 18 minutes ago Up 18 minutes 3306/tcp mysql 52df2e0d29b2 emqttd-docker-v2.1.2 "/opt/emqttd/start.sh" 10 days ago Exited (137) 45 minutes ago emq20
6 Export port
comcat@aisrv:/work/api.noduino/database$ docker run -tid --name emq20 -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqttd-docker-v2.1.2 docker: Error response from daemon: Conflict. The name "/emq20" is already in use by container 52df2e0d29b28509b2daae48a345cb1a44b2b5ed3ff268507cf223059d9b You have to remove (or rename) that container to be able to reuse that name.. comcat@aisrv:/work/api.noduino/database$ docker start emq20 emq20
7 Passing options to the server
$ docker run --name test -e MYSQL_ROOT_PASSWORD=root -v $(pwd)/cos-db:/var/lib/mysql -d mysql/mysql-server:5.6 --explicit_defaults_for_timestamp=true
8 Mount host dir
- place the dumped data file tempdb-xxx.sql in host dir cos-db/
- not support the sym link
comcat@aisrv:/work/api.noduino/database$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -v $(pwd)/cos-db:/var/lib/mysql -d mysql/mysql-server:5.6 987ab5054b83a14a2249650715353b4b9dddb0e78fcbc514ae37be975ca4c145 comcat@aisrv:/work/api.noduino/database$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 987ab5054b83 mysql/mysql-server:5.6 "/entrypoint.sh mysql" 3 seconds ago Up 2 seconds 3306/tcp mysql comcat@aisrv:/work/api.noduino/database$ ls cos-db auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema tempdb20170407.sql comcat@aisrv:/work/api.noduino/database$ docker exec -it mysql bash bash-4.2# ls /var/lib/mysql/ auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock performance_schema tempdb20170407.sql bash-4.2# head /var/lib/mysql/tempdb20170407.sql head: cannot open '/var/lib/mysql/tempdb20170407.sql' for reading: No such file or directory bash-4.2# exit exit comcat@aisrv:/work/api.noduino/database$ rm cos-db/tempdb20170407.sql comcat@aisrv:/work/api.noduino/database$ cp ../backup/tempdb20170407.sql cos-db/ comcat@aisrv:/work/api.noduino/database$ docker exec -it mysql bash bash-4.2# head /var/lib/mysql/tempdb20170407.sql -- MySQL dump 10.13 Distrib 5.5.49, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: tempdb -- ------------------------------------------------------ -- Server version 5.5.49-0ubuntu0.14.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;
9 dump all databases
$ docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > all.sql
10 dump table column
$ cat cos-db/getdevid.sql select dvid from temp where productid='NNN1234' and uploadtime>'2017-03-01 00:00:00'; $ docker exec mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" tempdb </var/lib/mysql/getdevid.sql > /var/lib/mysql/alldevid'
11 Restore Database
$ cp cos-tempdb-170507.sql test/ $ docker run --name test -e MYSQL_ROOT_PASSWORD=root -v $(pwd)/test:/var/lib/mysql -d mysql/mysql-server:5.6 --explicit_defaults_for_timestamp=true $ docker exec test sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < /var/lib/mysql/cos-tempdb-170507.sql';
12 Custom config file
$ docker exec -it cosdb cat /etc/my.cnf > my.cnf $ docker --name cosdb -e MYSQL_ROOT_PASSWORD=root -v $(pwd)/my.cnf:/etc/my.cnf -v $(pwd)/test:/var/lib/mysql -d mysql/mysql-server:5.6 --explicit_defaults_for_timestamp=true
13 Using the data volume
14 Notes
$ docker run --name mydb -e MYSQL_ROOT_PASSWORD=root -v $(pwd)/mydb:/var/lib/mysql -d mysql/mysql-server:5.6 --explicit_defaults_for_timestamp=true $ docker exec mydb sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < /var/lib/mysql/cos-tempdb-170507.sql'; $ docker run --name nginx-php -v $(pwd)/wxmp:/var/www/html --link mydb:mysql -d richarvey/nginx-php-fpm comcat@aisrv:/work/api.noduino/wxmp$ docker network ls NETWORK ID NAME DRIVER SCOPE 7fcde0337aa1 bridge bridge local 11451da05352 host host local b91f895fe12c none null local comcat@aisrv:/work/api.noduino/wxmp$ docker network inspect --format='{{json .Containers}}' 7fcde0337aa1 | python -m json.tool { "03535b5be172ce05c8ab5b43b8cdd80f9d04e3af8f47ba4911ea8fdc0161b87a": { "EndpointID": "d78fce5086d81cc0f9835018a50309a36b179bffb1a65848e2f2d74f5dc4e049", "IPv4Address": "172.17.0.2/16", "IPv6Address": "", "MacAddress": "02:42:ac:11:00:02", "Name": "mydb" }, "2d7d38840458c6666980453c16c3798cdab4655e97b470b1f145494705de344a": { "EndpointID": "de8090170c4e6a73c401a8175375cc595a7c50a9afcbb50b04e11cdf1c0af239", "IPv4Address": "172.17.0.3/16", "IPv6Address": "", "MacAddress": "02:42:ac:11:00:03", "Name": "nginx-php" } } # export port comcat@aisrv:/work/api.noduino/wxmp$ docker run -p 80:80 --name nginx-php -v $(pwd)/wxmp:/var/www/html --link mydb:mysql -d richarvey/nginx-php-fpm 054878b224c2ec32b67d80bbba50d605566bf1b6f19a9921c898dbd73d504647
15 nignx-php
Install PHP Modules
To install and configure extra PHP modules in this image, first of all drop into the container:
docker exec -t -i nginx /bin/bash
Then configure and install your module:
/usr/local/bin/docker-php-ext-configure sockets /usr/local/bin/docker-php-ext-install sockets
Now restart php-fpm:
supervisorctl restart php-fpm
We may include a env var to do this in the future.
16 Export Container
$ sudo docker export <CONTAINER ID> > /home/export.tar
17 Restore Container
$ cat /home/export.tar | sudo docker import - api-elec:latest
18 Commit
comcat@aisrv:/work/docker$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1bfd19e8626 srv-xda-api:0.9 "docker-php-entrypoin" 7 minutes ago Up 7 minutes 443/tcp, 9000/tcp, 0.0.0.0:8000->80/tcp xda-srv comcat@aisrv:/work/docker$ docker stop e1 e1 comcat@aisrv:/work/docker$ docker commit e1b srv-xda-api:0.9.2 sha256:f39c64c92367be2569d98ce889d4863dbb85f30bc425ecd0fdeea21bb43eb486 comcat@aisrv:/work/docker$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE srv-xda-api 0.9.2 f39c64c92367 5 seconds ago 345.2 MB srv-xda-api 0.9 a160e6e42d1c 9 minutes ago 345.2 MB comcat@aisrv:/work/docker$ docker run -d -e DB_HOST="192.168.1.20" -p 8000:80 srv-xda-api:0.9.2 4e6bfec25da6d33d3b9a3aa03b62f07ce2f8e61528e7292b140da99d80cef767 comcat@aisrv:/work/docker$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4e6bfec25da6 srv-xda-api:0.9.2 "docker-php-entrypoin" 3 seconds ago Up 2 seconds 443/tcp, 9000/tcp, 0.0.0.0:8000->80/tcp fervent_stonebraker
19 Reference
- https://github.com/docker/labs/blob/master/developer-tools/nodejs/porting/4_single_host_networking.md
- https://stackoverflow.com/questions/14779104/how-to-allow-remote-connection-to-mysql