基本命令

  1. // 查看镜像
  2. docker images
  3. // 查看容器
  4. docker ps [-a]
  5. // 文件传输
  6. docker cp 容器 ID 或名称: 容器目录 物理机目录
  7. docker cp 物理机目录 容器 ID 或名称: 容器目录
  8. 4d9d4c1bb755:/var/www/html

Tomcat 镜像使用

  1. docker pull tomcat:8
  2. // 创建tomcat容器
  3. // 创建tomcat容器用于 Web应用,并且进行目录映射
  4. 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

4900 客户端连接端口
4993 客户端SSL连接端口

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

PHP