基本命令
// 查看镜像docker images// 查看容器docker ps [-a]// 文件传输docker cp 容器 ID 或名称: 容器目录 物理机目录docker cp 物理机目录 容器 ID 或名称: 容器目录4d9d4c1bb755:/var/www/html
Tomcat 镜像使用
docker pull tomcat:8// 创建tomcat容器// 创建tomcat容器用于 Web应用,并且进行目录映射docker run -id --name=sun_tomcat -p 8080:8080 -v /usr/local/project:/usr/local/tomcat/webapps --privileged=true --restart=always tomcat:8
- p 表示地址映射, 宿主机端口号:容器运行端口号
- v 表示地址映射, 宿主机目录:容器映射目录
—privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数
// 进入容器
docker exec -it 8dxxx(容器id) /bin/bash
Tomcat 需 在 webapps 下创建 ROOT 目录存放服务代码
MySQL
docker pull mysql:5.7
sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
三、连接mysql#
进入docker本地连接mysql客户端
sudo docker exec -it mysql bash
mysql -uroot -p123456
使用远程连接软件时要注意一个问题
我们在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:
host: 127.0.0.1
port: 3306
user: root
password: 123456
如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:
防火墙阻拦
开放端口:
$ systemctl status firewalld
$ firewall-cmd —zone=public —add-port=3306/tcp -permanent
$ firewall-cmd —reload
关闭防火墙:
$ sudo systemctl stop firewalld
需要进入docker本地客户端设置远程访问账号
$ sudo docker exec -it mysql bash
$ mysql -uroot -p123456
grant all privileges on . to root@’%’ identified by ‘密码’ with grant option;
原理:
mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)
mysql> use mysql;
Database changed
mysql> select host,user,password from user;
+———————+———+—————————————————————-+
| host | user | password |
+———————+———+—————————————————————-+
| localhost | root | A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | A731AEBFB621E354CD41BAF207D884A609E81F5E |
+———————+———+—————————————————————-+
2 rows in set (0.00 sec)
mysql> grant all privileges on . to root@’%’ identified by “password”;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,password from user;
+———————+———+—————————————————————-+
| host | user | password |
+———————+———+—————————————————————-+
| localhost | root | A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+———————+———+—————————————————————-+
3 rows in set (0.00 sec)
Lanproxy
server 端
docker run -d \
--name lanproxy-server \
-p 8090:8090 \
-p 4900:4900 \
-p 4993:4993 \
-p 9000-9100:9000-9100 \
--restart=always \
-e LANPROXY_USERNAME="xxxxxxx" \
-e LANPROXY_PASSWORD="xxxxxxxx" \
-v /home/ubuntu/home/wspace/lanproxy/config:/root/.lanproxy \
franklin5/lanproxy-server
WordPress
docker pull wordpress:latest
配置好MySQL后,运行WordPress:
docker run -d --name OLDwp -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME= -p 1080:80 --link OLDMysql:mysql wordpress
参数说明:
-e WORDPRESS_DB_HOST : 链接的docker的MySQL的IP地址和端口,一般设置成 mysql 表示用默认的设置
-e WORDPRESS_DB_USER : 以什么用户使用MySQL,默认是root
-e WORDPRESS_DB_PASSWORD : 这设置MySQL的登陆用户密码,由于上一项是默认的 root,所以这一项和之前的”MYSQL_ROOT_PASSWORD”要相同。
-e WORDPRESS_DB_NAME: 数据库的表名,如果不写这一个配置,默认为 “wordpress”
注意 —link 链接到MySQL容器的名称
VS Code
-d
docker run -it -u root —name=code_server -p 8090:8080 -v /home/ubuntu/vscode-web/workspace:/home/coder/workspace -h code_server -e PASSWORD=123 codercom/code-server
