在本文中,我将介绍主要的Docker命令和概念。
阅读完毕后。您将能够採用一些Docker功能来加速和简化您的日常工作流程。
能够在Docker社区页面上找到适用于操作系统的安装程序。
在Linux上。Docker通常在分发包管理器中能够找到。
在Fedora[1]中安装Docker:
sudo dnf install docker
sudo systemctl start docker
sudo systemctl enable docker
在其它使用Systemd的Linux发行版中,这些步骤相似。
#sudo is only for Linux
sudo docker run --name hello -it busybox echo "Hello World!" # Hello World!
sudo docker run <options> <image> <command to run inside the container>
Name:我们设置容器的名称,假设你不选择不论什么Docker将随机选择一个。
It:交互式的。它将我们的终端连接到容器虚拟TTY的输出,同意与正在运行的进程交互。
Busybox:这是创建容器的基础映像,能够觉得带有应用程序运行所需的文件和目录组成的zip文件。 Docker Hub中有一个完整的社区基础镜像,使用busybox[2]是由于它非常轻便,压缩后仅仅有715 KB
Echo:正如前所述。echo是运行的命令。包括在busybox镜像中。
sudo docker run -it busybox ls /bin/
sudo docker images
sudo docker run -d --name snooze busybox sleep 15
sudo docker ps
sudo docker stop [name of your container]
#比如
sudo docker stop snooze
假设你想再次反复运行相同的命令。仅仅须要运行:
sudo docker start snooze
#stop & clean
sudo docker stop snooze
sudo docker rm snooze
#re-create
sudo docker run -d --name snooze busybox sleep 10
echo ‘Hello World‘ > hello
#使用容器的VIM打开文件
sudo docker run -it busybox vi hello
#the :z in /app:z -> is for SELinux, non-Linux can ignore this.
sudo docker run -it -v "$(pwd)":/app:z busybox vi app/text
參数v将覆盖容器内的曾经的目录。
假设存在。它将被替换为提供的目录
该命令从字面上是挂载目录,因此容器一旦被杀死。容器对该目录所做的每一个更改都将被保留。假设您希望将数据库数据保存在容器生命周期之外,这是一个好方式
容器将有权訪问您的系统资源(共享目录)。所以要小心。
require(‘http‘)
?.createServer((req, res) => { res.end(‘Hello World!‘) }).listen(8080)
当有人连接它时。它会发送“Hello World!
”
下一步是在容器内运行脚本,能够运行例如以下命令:
sudo docker run -it -v "$(pwd)":/app:z --name myserver mhart/alpine-node node app/index.js
sudo docker exec -it myserver wget -qO- localhost:8080
# Hello World
curl http://localhost:8080
#curl: (7) Failed to connect to localhost port 8080: Connection refused
# stopping our container
sudo docker stop myserver ?
sudo docker rm myserver
sudo docker run -it -v "$(pwd)":/app:z -p 8080:8080 --name myserver \
mhart/alpine-node node app/index.js
function new_mongo {
?docker run -d --name mongodb -p ?27017:27017 mongo
}
# the : here means image tag, usually if the image is done correctly
# like in this case tag version match the Redis version
function new_redis {
?docker run -d ?--name redis ?-p 6379:6379 redis:3.2
}
function stop_mongo {
?docker stop mongodb
?docker rm mongodb
}
function stop_redis {
?docker stop redis
?docker rm redis
}
new_mongo # it will spin up a new mongodb instance.
new_redis # it will spin up a new redis instance.
# to stop this containers
stop_mongo
stop_redis
sudo docker run -it -v "$(pwd)":/app busybox ls app/text
#ls: can‘t open ‘.‘: Permission denied
# "$(pwd)" will get the actual directory, is equivalent to do pwd
docker run -it -v "$(pwd)":/app:z busybox /bin/sh
su -c "setenforce 0"
su -c "setenforce 1"
https://getfedora.org/es/workstation/
https://hub.docker.com/r/library/busybox/tags/
https://en.wikipedia.org/wiki/Security-Enhanced_Linux
Kubernetes零基础进阶培训
原文:https://www.cnblogs.com/ljbguanli/p/9900276.html