docker images
-
docker hub
在这里搜索docker镜像。
-
Install Docker for Mac
-
pm2-docker
-
mssql-server-linux
https://hub.docker.com/r/microsoft/mssql-server-linux/
拉取镜像:
docker pull microsoft/mssql-server-linux:2017-latest
运行mssql服务端:
docker run --name mssql -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_COLLATION=Chinese_PRC_CS_AI_WS' -p 30005:1433 -v /home/dockerdata/mssql:/var/opt/mssql -d microsoft/mssql-server-linux:2017-latest
添加MSSQL_COLLATION参数,改变服务器的Collation,所有参数参考:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables?view=sql-server-2017
运行另一个客户端去连服务端:
docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P yourStrong(!)Password
在sqlcmd里执行sql的时候,总是以
GO
触发执行操作。备份和恢复
备份:
sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q "BACKUP DATABASE [dbname] TO DISK = N'/var/opt/mssql/data/dbname.bak' WITH NOFORMAT, NOINIT, NAME = 'dbname-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
恢复:
sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q "RESTORE DATABASE [dbname] FROM DISK = N'/var/opt/mssql/data/dbname.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"
恢复时使用
NORECOVERY
导致出现Database 'dbname' cannot be opened. It is in the middle of a restore.
,后来改用RECOVERY
就没有问题了。 -
postgres
官网postgres镜像:
https://hub.docker.com/_/postgres/
有debian版和alpine版。
下载Dcokerfile和docker-entrypoint.sh,然后进行构建:
docker build -t="postgres:9.6" .
,需要注意是设置sh文件执行权限:chmod +x docker-entrypoint.sh
。不然在运行容器的时候可能会报以下错误:
exec: "/docker-entrypoint.sh": permission denied docker: Error response from daemon: Container command could not be invoked..
启动一个实例:
# 暴露5432端口 # 将数据放在数据卷中:/opt/dockervolume/postgres/data # 设置数据库超级用户名和密码 sudo docker run --name my-postgres -p 5432:5432 -v /opt/dockervolume/postgres/data:/var/lib/postgresql/data -e POSTGRES_USER=[superuser] -e POSTGRES_PASSWORD=[password] -d postgres:9.6
启动另外一个容器作为客户端使用psql去连上一个容器:
sudo docker run -it --rm --link my-postgres:postgres postgres:9.6 psql -h postgres -U [superuser]
备份和还原
备份:
# -n 指定schema sudo docker run -i --rm --link my-postgres:postgres postgres:9.6.3-alpine pg_dump -h postgres -U [user] -d [database] -n [schema] > dump.sql # 输入密码那一步是明文的。
还原:
cat dump.sql | sudo docker exec -i my-postgres psql -U [user]
参考:https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
-
pgweb
基于go实现的PostgresQL web工具。
官网:https://github.com/sosedoff/pgweb
Docker运行方式:
# 拉取镜像 sudo docker pull sosedoff/pgweb # 运行 sudo docker run -p 8081:8081 -e DATABASE_URL=postgres://user:password@host:port/database sosedoff/pgweb
-
tomcat
官网tomcat镜像:
https://hub.docker.com/_/tomcat/
通过dockerfile构建tomcat8.0.39镜像:
docker build -t="tomcat-jre8-alpine:8.0.39" .
运行tomcat镜像:
docker run -it --rm --name bstest -p 7777:8080 -v /opt/tomcatwebapps:/usr/local/tomcat/webapps tomcat-jre8-alpine:8.0.39
-
Python docker image
https://hub.docker.com/_/python/
运行:
sudo docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:2.7.13 python test.py
-
redis
运行redis服务端:
启动的时候设置密码:
docker run –name redis -p 6379:6379 -d redis –restart=always redis-server –appendonly yes –requirepass “your pass” “`
参考:https://blog.csdn.net/cookily_liangzai/article/details/80726163
运行另一个客户端去连服务端:
docker run -it --link my-redis:redis --rm redis:3.2.8-alpine redis-cli -h redis -p 6379
-
MySQL
官方镜像:https://hub.docker.com/_/mysql/
拉取5.6版本镜像:
sudo docker pull mysql:5.6
运行MySQL服务器:
sudo docker run --name some-mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6
如果要把数据库文件放在宿主机器上的
/opt/dockervolume/mysql/data
目录,运行:sudo docker run --name some-mysql -p 3306:3306 -v /opt/dockervolume/mysql/data:/var/lib/mysql -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6
。运行另外一个客户端去连服务端:
sudo docker run -it --rm --link some-mysql:mysql mysql:5.6 mysql -h mysql -uroot -p
输入密码,就可以进入MySQL命令行了。
备份MySQL:
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
或
sudo docker run -i --rm --network=nm --link mysql:mysqlhost mysql:5.7.37 mysqldump -h mysqlhost -uroot -p --routines --databases trace_back > 1.sql
!!不过备份的汉字注释乱码!! 通过以下第2个方法,重新编译镜像完成。
第二种方法:在启动容器时添加
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
编码参数。参考:
https://blog.csdn.net/nihaoma71121/article/details/77894437
https://www.cnblogs.com/z-belief/p/6148463.html
恢复MySQL:
cat 1.sql | sudo docker exec -i some-mysql mysql -uroot -pmy-secret-pw trace_back
-
Git Server
镜像:https://hub.docker.com/r/jkarlos/git-server-docker/
拉取镜像:
docker pull jkarlos/git-server-docker
运行Git Serve服务:
docker run -d -p 2222:22 -v /home/dockerdata/git-server/keys:/git-server/keys -v /home/dockerdata/git-server/repos:/git-server/repos jkarlos/git-server-docker
初始化qn-admin.git
mkdir qn-admin cd qn-admin git init --shared=true git add . git commit -m "init" cd .. git clone --bare qn-admin qn-admin.git
通过scp上传git仓库到服务器:
scp -r qn-admin.git root@121.199.166.48:~/git-server/repos
上传用户SSH key到服务器: scp ~/.ssh/id_rsa.pub root@121.199.166.48:~/git-server/keys
!!更新SSH key之后,需要重启docker容器。
客户端克隆项目: git clone ssh://git@121.199.166.48:2222/git-server/repos/qn-admin.git