Docker啟動(dòng)常用容器命令及配置詳解
Docker 容器相關(guān)命令
容器是基于Docker鏡像被創(chuàng)建的。
docker run [Options] image
運(yùn)行容器
docker run [Options] image #參數(shù)說明 --name="名字" 指定容器名字 -d 后臺(tái)方式運(yùn)行 -it 使用交互方式運(yùn)行,進(jìn)入容器查看內(nèi)容 -p 指定容器的端口 -p ip:主機(jī)端口:容器端口 配置主機(jī)端口映射到容器端口 -p 主機(jī)端口:容器端口(常用) -p 容器端口 -P 隨機(jī)指定端口 -e 環(huán)境設(shè)置 -v 容器數(shù)據(jù)卷掛載
運(yùn)行并進(jìn)入容器centos
[root@localhost ~]# docker run -it centos /bin/bash [root@ce2bbae9f151 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr
進(jìn)入容器,因?yàn)橥ǔN覀兊娜萜鞫际鞘褂煤笈_(tái)方式來運(yùn)行的,有時(shí)需要進(jìn)入容器修改配置
- docker exec -it 容器id /bin/bash
# docker exec 進(jìn)入容器后開啟一個(gè)新的終端,可以在里面操作 docker exec -it 容器id /bin/bash
- docker attach 容器id
# docker attach 進(jìn)入容器正在執(zhí)行的終端 docker attach 容器id
退出容器
exit # 停止容器并退出(后臺(tái)方式運(yùn)行則僅退出) Ctrl+P+Q # 不停止容器退出
docker ps
查看運(yùn)行的容器
# 查看當(dāng)前正在運(yùn)行的容器 docker ps -a # 查看所有容器的運(yùn)行記錄 -n=? # 顯示最近創(chuàng)建的n個(gè)容器 -q # 只顯示容器的id
docker start 容器id
啟動(dòng)容器
docker start 容器id # 啟動(dòng)容器 docker restart 容器id # 重啟容器 docker stop 容器id # 停止當(dāng)前運(yùn)行的容器 docker kill 容器id # 強(qiáng)制停止當(dāng)前容器
docker logs 容器id
查看容器運(yùn)行日志
docker logs -tf 容器id docker logs --tail num 容器id # num為要顯示的日志條數(shù)
docker top 容器id
查看容器中進(jìn)程信息
docker top 容器id
docker inspect 容器id
查看容器的元數(shù)據(jù)
docker inspect 容器id
Docker 啟動(dòng)mysql
# 1.啟動(dòng)mysql 設(shè)置密碼、設(shè)置掛載數(shù)據(jù)卷 docker run -d -p 3306:3306 --name mymysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql # 2.遠(yuǎn)程連接mysql服務(wù),若無權(quán)限,進(jìn)入mysql容器中修改遠(yuǎn)程連接權(quán)限 docker exec -it 36d4806c765a /bin/bash # 登錄mysql mysql -u root -p # 修改root 可以通過任何客戶端連接 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改遠(yuǎn)程連接權(quán)限成功后,可以通過Navicat等mysql客戶端連接數(shù)據(jù)庫。
Docker 啟動(dòng)nginx
啟動(dòng)nginx掛載和其他容器掛載有所區(qū)別,需要進(jìn)行額外操作。
docker掛載是run時(shí)掛載,所以要先copy配置文件,如果不copy直接掛載啟動(dòng)容器時(shí)會(huì)從掛載的目錄找配置文件,找不到會(huì)啟動(dòng)失敗。
1. 運(yùn)行容器
docker run --name nginx -d -p 7777:80 nginx
2. 在宿主機(jī)上創(chuàng)建掛載目錄
mkdir -p /home/docker/volumes/nginx/conf mkdir -p /home/docker/volumes/nginx/log
3. 從容器中復(fù)制配置文件到掛載目錄
docker cp nginx:/etc/nginx/nginx.conf /home/docker/volumes/nginx/conf/nginx.conf #從容器中復(fù)制配置文件 docker cp nginx:/etc/nginx/conf.d /home/docker/volumes/nginx/conf/ #從容器中復(fù)制配置文件夾 docker cp nginx:/usr/share/nginx/html /home/docker/volumes/nginx/ #從容器中復(fù)制html文件 docker cp nginx:/var/log/nginx /home/docker/volumes/nginx/log #從容器中復(fù)制日志文件
4. 刪除nginx容器
docker stop nginx docker rm nginx
5. 使用掛載的方式重新啟動(dòng)nginx
chmod 777 /home/docker/volumes/nginx/conf/nginx.conf docker run -d -p 7777:80 --name nginx \ -v /home/docker/volumes/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/docker/volumes/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /home/docker/volumes/nginx/html:/usr/share/nginx/html \ -v /home/docker/volumes/nginx/log:/var/log/nginx \ -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 \ --privileged=true --restart=always nginx
配置說明:
- -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8是解決nginx中文亂碼
- --privileged=true 給容器內(nèi)root權(quán)限
- --restart=always 隨docker自啟動(dòng)
Docker 啟動(dòng)redis
docker run -p 6379:6379 -d --name myredis \ -v /home/docker_volume/redis/data:/data \ -v /home/docker_volume/redis/conf/redis.conf:/etc/redis/redis.conf \ redis redis-server /etc/redis/redis.conf --appendonly yes
- redis-server /etc/redis/redis.conf 以配置文件啟動(dòng)redis
- appendonly yes 開啟redis 持久化
進(jìn)入redis容器
docker exec -it myredis redis-cli
Docker 啟動(dòng)rabbitmq
docker run -it -d -p 5672:5672 -p15672:15672 --hostname my-rabbit --name my-rabbit \ -v /home/docker_volume/rabbit/:/var/lib/rabbitmq \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management
啟動(dòng)成功后,瀏覽器訪問 http://ip:15672/,進(jìn)入rabbitmq管理界面。
Docker 啟動(dòng)Kafka
Kafka需要依賴于Zookeeper
啟動(dòng)Zookeeper
docker run -it -d --restart=always --name zookeeper -p 2181:2181 wurstmeister/zookeeper
啟動(dòng)Kafka
docker run -d --restart=always --name kafka -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=10.1.7.102:2181/kafka \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.1.7.102:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ -v /etc/localtime:/etc/localtime wurstmeister/kafka
使用Kafka Tool工具連接:
Docker 啟動(dòng)tomcat
docker run -it -d --name mytomcat -p 8090:8080 \ -v /home/docker_volume/tomcat/webapps/:/usr/local/tomcat/webapps tomcat
默認(rèn)鏡像中webapps目錄為空,先將項(xiàng)目放入webapps目錄下,再訪問http://ip:8090/
# 進(jìn)入tomcat容器 docker exec -it mytomcat /bin/bash # 復(fù)制項(xiàng)目到webapps下 cp -rf webapps.dist/* webapps
Docker 啟動(dòng)jar包
jar包想要在docker中運(yùn)行,需要把jar包制作成鏡像文件,docker再運(yùn)行鏡像。
1.將jar包上傳到Linux中,并編寫Dockerfile文件
[root@localhost idea]# ls demo-0.0.1-SNAPSHOT.jar Dockerfile
2.Dockerfile文件內(nèi)容
FROM java:8 # 將demo-0.0.1-SNAPSHOT.jar 復(fù)制 到容器中并重命名為 app.jar COPY demo-0.0.1-SNAPSHOT.jar app.jar CMD ["--server.port=8080"] EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar"]
3.docker build構(gòu)建鏡像
[root@localhost idea]# docker build -t springbootdemo:1.0 . [root@localhost idea]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE springbootdemo 1.0 d9648a49a226 50 seconds ago 661MB
4.運(yùn)行、測試
[root@localhost idea]# docker run -d -p:8888:8080 --name mydemo springbootdemo:1.0 [root@localhost idea]# curl localhost:8888/hello hello buckletime![root@localhost idea]#
Docker 啟動(dòng)PostgreSQL
# 拉取鏡像 docker pull kartoza/postgis:11.0-2.5 # 運(yùn)行容器 docker run -d -t --name postgresql -p 5432:5432 \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASS=postgres \ -e ALLOW_IP_RANGE=0.0.0.0/0 \ -v /home/volumes/postgres/data:/var/lib/postgresql \ -v /home/volumes/postgres/temp:/tmp/tmp \ --restart always kartoza/postgis:11.0-2.5 # 安裝postgis擴(kuò)展 # 注意,擴(kuò)展要加在數(shù)據(jù)庫上,而非模式上 CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder; # 查看擴(kuò)展是否安裝成功 SELECT * FROM pg_extension;
Docker 啟動(dòng)ElasticSearch
# 拉取鏡像文件 docker pull elasticsearch # 創(chuàng)建掛載目錄 mkdir -p /home/volumes/elasticsearch/config mkdir -p /home/volumes/elasticsearch/data mkdir -p /home/volumes/elasticsearch/plugins # 創(chuàng)建并寫入elasticsearch.yml配置,注意:http.host: 0.0.0.0 echo "http.host: 0.0.0.0">>/home/volumes/elasticsearch/config/elasticsearch.yml # 文件夾賦權(quán) chmod -R 777 /home/volumes/elasticsearch/ # docker啟動(dòng)elasticsearch docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/volumes/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/volumes/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/volumes/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch
參數(shù)說明:
- -e "discovery.type=single-node":單例模式
- -e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置內(nèi)存大小
查看elasticsearch是否安裝成功,瀏覽器訪問:http://localhost:9200
到此這篇關(guān)于Docker啟動(dòng)常用容器命令及配置詳解的文章就介紹到這了,更多相關(guān)Docker啟動(dòng)容器命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法
這篇文章主要介紹了Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法,Docker與虛擬機(jī)及搭建過程,介紹的非常詳細(xì),需要的朋友可以參考下2016-10-10docker將鏡像打包為.tar包實(shí)現(xiàn)方法
使用tar包格式進(jìn)行壓縮,方便在不同的docker主機(jī)之間進(jìn)行遷移和備份,下面這篇文章主要給大家介紹了關(guān)于docker將鏡像打包為.tar包的實(shí)現(xiàn)方法,需要的朋友可以參考下2024-07-07Docker內(nèi)網(wǎng)穿透frp部署實(shí)現(xiàn)過程解析
這篇文章主要介紹了Docker內(nèi)網(wǎng)穿透frp部署實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11用Docker swarm快速部署Nebula Graph集群的教程
這篇文章主要介紹了用Docker swarm快速部署Nebula Graph集群的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Docker?制作tomcat鏡像并部署項(xiàng)目的步驟
這篇文章主要介紹了Docker?制作tomcat鏡像并部署項(xiàng)目?,講解如何制作自己的tomcat鏡像,并使用tomcat部署項(xiàng)目,需要的朋友可以參考下2022-10-10Docker格式化輸出命令:"docker?inspect?--format"?學(xué)習(xí)記錄
Docker?--format?參數(shù)提供了基于?Go模板?的日志格式化輸出輔助功能,并提供了一些內(nèi)置的增強(qiáng)函數(shù),這篇文章主要介紹了Docker格式化輸出命令:"docker?inspect?--format"?學(xué)習(xí)筆記,需要的朋友可以參考下2023-01-01