我正在尝试在我的 Windows 容器上安装 Chrome。我已经使用 dockerfile 创建了我的 docker 映像,并且我想使用此 dockerfile 安装 chrome。我尝试过使用以下命令
RUN apt-get update -qqy \
&& apt-get -qqy install \
xvfb \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*
Run Code Online (Sandbox Code Playgroud)
但我有一个错误(我认为这是因为我在 Windows 容器上,并且此命令仅适用于 unbutu 容器...):
'apt-get' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Windows 容器中安装 chrome?或者任何替换 'apt-get' 的命令?
谢谢。
docker dockerfile docker-image docker-container docker-for-windows
我有 2 个 docker 容器。第一个 docker-container 内部是我的 lamp 应用程序,其中包含 php-7.3.4、apache2 ;第二个里面是mysql数据库。
我尝试连接第一个容器内的 LDAP 服务器。我继续进入“test-project”文件夹并配置 custom_config.inc.php
$tlCfg->authentication['method'] = 'LDAP';
$tlCfg->authentication['ldap_server'] = 'ldap.xyz.com';
$tlCfg->authentication['ldap_port'] = '389';
$tlCfg->authentication['ldap_version'] = '3';
$tlCfg->authentication['ldap_root_dn'] = 'dc=xyz,dc=com';
$tlCfg->authentication['ldap_bind_dn'] = 'uid=tl,ou=staff,dc=xyz,dc=com';
$tlCfg->authentication['ldap_bind_passwd'] = 'XYZw';
$tlCfg->authentication['ldap_tls'] = false; // true -> use tls
Run Code Online (Sandbox Code Playgroud)
当我尝试通过 ldap 凭据登录网页并抛出 http 错误 500 后
当我查看日志时,我得到:
错误: https: //i.stack.imgur.com/hST65.jpg
PHP Fatal error: Uncaught Error: Call to undefined function
ldap_connect() in
var/www/html/testlink/lib/functions/ldap_api.php:42\nStack trace :\n#0
/var/www/html/testlink/functions/ldap_api.php(165):
ldap_connect_bind(Array)\n#1
var/www/html/testlink/lib/functions/doAuthorize.php(200):
ldap_authenticate('test_user', 'test')\n#2
var/www/html/testlink/lib/functions/doAuthorize.php(90):
auth_does_password_match(Object(tlUser), 'test')\n#3
var/www/html/testlink/login.php(45): doAuthorize(Object(database),
'test_user', …Run Code Online (Sandbox Code Playgroud) 根据本教程https://www.youtube.com/watch?v=XrFeRwJjWHI,我尝试在 Docker 中运行 Redis。
文件docker-compose.yml
version: "3.8"
services:
redis:
image: redis
volumes:
- ./data:/data
ports:
- 6379:6379
Run Code Online (Sandbox Code Playgroud)
docker pull redis
docker-compose up
docker-compose up -d
docker container ls
telnet localhost 6379
Run Code Online (Sandbox Code Playgroud)
Telnet,键入PING然后按 Enter 键(您不会看到文本),然后查看结果:PONG。键入quit退出。
Microsoft Windows [Version 10.0.19041.508]
(c) 2020 Microsoft Corporation. All rights reserved.
D:\docker>docker-compose stop redis
Stopping docker_redis_1 ... done
D:\docker>
Run Code Online (Sandbox Code Playgroud)
查看正在运行的内容
docker container ls
Run Code Online (Sandbox Code Playgroud)
你会看到,docker redis 被停止了。
docker image prune -a
docker-compose up
Run Code Online (Sandbox Code Playgroud)
Docker Redis洞察
docker run -v …Run Code Online (Sandbox Code Playgroud) 假设我有一个名为 Whale 的 docker swarm 服务,其副本数为 10
当容器启动时
运行时程序如何确定它是哪个副本编号?
IE:“我是鲸鱼复制品 10 中的 3”
我有一个使用分离模式 (-d) 标志运行的 docker 容器。该容器运行的应用程序正在更新终端中的一些输出/日志。
我想在终端中实时查看容器的输出。
有没有什么方法可以在应用程序中实时更新终端中的 docker 日志?
谢谢。
我创建了两个docker网络
中国网络
docker network create --subnet=172.19.0.0/16 chnetwork
Run Code Online (Sandbox Code Playgroud)内部网络
docker network create --internal --subnet 10.1.1.0/24 internal-network
Run Code Online (Sandbox Code Playgroud)在创建 docker 容器时我使用chnetwork,
docker run -it -d --name containerone -h www.cone.net -v /var/www/html -p 3006:80 --net chnetwork --ip 172.19.0.40 --privileged magento
Run Code Online (Sandbox Code Playgroud)
后来我更改为内部网络并断开容器与chnetwork的连接
docker network connect internal-network containerone
docker network disconnect chnetwork containerone
Run Code Online (Sandbox Code Playgroud)
现在的问题是docker ps命令不显示该容器的端口,我的意思是端口在内部网络中无法访问。
当我将网络更改为chnetwork时,只有docker ps显示端口。我需要做什么才能在所有 Docker 网络中访问端口?
我想从我的docker容器内部与一个在主机中使用隧道的postgres数据库连接.在主机中,我有一个指向数据库主机的隧道:
host$ sudo netstat -tulpen | grep 555
tcp 0 0 127.0.0.1:5555 0.0.0.0:* LISTEN 1000 535901 18361/ssh
tcp6 0 0 ::1:5555 :::* LISTEN 1000 535900 18361/ssh
Run Code Online (Sandbox Code Playgroud)
隧道设置为:
host$ ps -aux | grep 18361
ubuntu 9619 0.0 0.0 10432 628 pts/0 S+ 10:11 0:00 grep --color=auto 18361
ubuntu 18361 0.0 0.0 46652 1420 ? Ss Nov16 0:00 ssh -i /home/ubuntu/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -f -N -L 5555:localhost:5432 user@remotehost
Run Code Online (Sandbox Code Playgroud)
从主机我可以启动psql命令:
host$ psql -h localhost -p 5555 --username user db_name
psql (9.3.15, …Run Code Online (Sandbox Code Playgroud) 我有一个正在运行的Docker容器
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5a24953e383 gradle "bash" 22minutesagoUp 22 minutes naughty_torvalds
Run Code Online (Sandbox Code Playgroud)
我可以复制并运行该容器吗?它的命令是什么?
我在我的系统中安装了一个带有大约 1 GB 操作系统的 docker 映像,然后我更新并安装了其他软件,将大小推到了近 2 GB。我使用这个容器创建了一个新的子图像docker commit <cont-id> <child-name>。现在我有两个 docker 镜像,父镜像和子镜像总大小为 3 GB。由于我有一个多余的 1 GB 父映像,因此我想将其删除。
Parent image 1 GB
Child image 2 GB
Run Code Online (Sandbox Code Playgroud)
我试图保留子图像并尝试删除父图像,docker rmi -f <image-id>但它给出了这个错误
来自守护进程的错误响应:冲突:无法删除 5dvd3054h756(不能强制)-图像具有依赖的子图像
然后尝试了这个解决方案,我尝试过sudo docker images --filter "dangling=true" -q --no-trunc但什么也没返回,也尝试过docker system prune显示 0 GB。
我还计划将其他程序安装到 docker 内的操作系统中,因此希望从现有的子映像中生成新的子映像。我到处搜索,没有很好的解决方案来删除 docker 中的父图像,以及我阅读的原因是因为子图像使用了一些父层。生成新的子映像后,是否无法删除 docker 中的父映像?
我创建了一个包含 mariadb 实例的 docker 容器,但我无法从我的物理机访问数据库:
我有来自 docker inspect 的 ip 地址和来自 docker ps 的端口,但 Sequel Pro 给了我连接失败的消息(与 Visual Studio Code 相同)。显然,从 docker 容器内部,我可以将自己连接到数据库引擎。
我哪里错了?非常感谢大家!:)
[编辑]感谢所有评论...
docker ×10
docker-container ×10
docker-image ×2
docker-swarm ×1
dockerfile ×1
ldap ×1
mariadb ×1
mysql ×1
php ×1
redis ×1
ssh-tunnel ×1
swarm ×1
terminal ×1